Linux特殊权限

有三种:SUIDSGIDSticky

SUID :运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。
   当我们希望某个普通用户能够运行管理员能运行的命令时,可以给该命令SUID权限,危险的权限,不要乱给。
给文件SUID权限
[root@localhost ~]# chmod u+s /bin/cat
[root@localhost ~]# chmod u-s /bin/cat
如果文件本身原来就有执行权限,则SUID显示为s(s),否则显示S(S)
    例如:文件权限如下:
[root@localhost ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 48568 Nov 22  2013 /bin/cat
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1532 Nov 18 17:32 /etc/shadow


当某个普通用户执行cat /etc/shadow命令时,结果如下:
[hehe@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied    (没有权限)

[root@localhost ~]# chmod u+s /bin/cat         (cat特殊权限)
[root@localhost ~]# ll /bin/cat       
-rwsr-xr-x. 1 root root 48568 Nov 22  2013 /bin/cat     

[hehe@localhost ~]$ cat /etc/shadow              (可以执行该命令了)
root:$6$ywmofjJsEJYHh7xr$fbqAyFiYzlrEeZpAnH5QXN63zuOPd3NW9ZUDzOwqalm7Mg5Fg0rStYBnoiVbuLmCAnOAYZLEhiMN.kG7IAiJj.:16324:0:99999:7:::
bin:*:15980:0:99999:7:::


由于passwd需要普通用户执行,所以默认具有s权限:
[root@localhost ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd


SGID : 运行某程序时,相应进程的属组是程序文件自身的属主,而不是启动者。
[root@localhost ~]# chmod g+s pjort
[root@localhost ~]# chmod g-s pjort
当我们有个目录,需要让一个组用户在这里随意编写各自创建的文件,给这个目录SGID权限,用户所创建的文件属组会和目录一样:
[root@localhost ~]# grep "it" /etc/group
rtkit:x:497:
it:x:505:zhang2,dwzhang,zhang1       (it组有dwzhangzhang1,zang2)

[root@localhost ~]# chown -R :it pjort/
[root@localhost ~]# ll -d pjort/       
drwxr-xr-x. 2 root it 4096 Nov 20 10:01 pjort/    (文件属组为it)

此时普通用户执行:
[hehe@localhost ~]$ touch a.txt
touch: cannot touch `a.txt': Permission denied    (没有权限)

在这时。如果我们给pjort文件属组w权限:
[root@localhost ~]# chmod g+w pjort/ 
[root@localhost ~]# ll -d pjort/    
drwxrwxr-x. 2 root it 4096 Nov 20 10:01 pjort/     (组给个w权限)

此时普通用户执行:
[hehe@localhost ~]$ cd /tmp/pjort/
[hehe@localhost ~]$ touch dwzhang
[hehe@localhost ~]$ ll
total 0
-rw-rw-r--. 1 dwzhang dwzhang 0 Nov 20 10:08 dwzhang  (此时可以有权限创建)

但是在这里文件属性是自己,别人不能够编辑另一个人创建的文件:
[hehe@localhost ~]$ ll
total 4
-rw-rw-r--. 1 dwzhang dwzhang    0 Nov 20 10:08 dwzhang
drwxrwxr-x. 2 zhang1  zhang1  4096 Nov 20 10:14 erp
-rw-rw-r--. 1 zhang1  zhang1     0 Nov 20 10:10 zhang1
[hehe@localhost ~]$ echo "i am dwzhang" >> zhang1
-bash: zhang1: Permission denied         (没有权限)

在这时,可以给pjort这个目录特殊权限g
[root@localhost ~]# chmod g+s pjort/
[root@localhost ~]# ll -d pjort/    
drwxrwsr-x. 3 root it 4096 Nov 20 10:14 pjort/

在用普通用户试试:   (在新建个文件测试)
[hehe@localhost ~]$ ll
total 0
-rw-rw-r--. 1 dwzhang dwzhang 0 Nov 20 10:08 dwzhang
-rw-rw-r--. 1 zhang1  it      0 Nov 20 10:17 erp (新建的文件属组会是it)   
-rw-rw-r--. 1 zhang1  zhang1  0 Nov 20 10:10 zhang1
[hehe@localhost ~]$ echo "i am dwzhang" >> erp    (有了写权限)
[hehe@localhost ~]$ cat erp 
i am dwzhang

注意:此时用户会具有编辑,查看,删除权限。
如果想这些用户不能够有删除权限就需要Sticky特殊权限了。

Sticky :在一个公共目录,每个用户都可以创建文件,删除自己的文件,但是不能够删除别人的文件。 
[root@localhost ~]# chmod o+t pjort/
[root@localhost ~]# chmod o-t pjort/

接上面,自己可以删除自己的,不能删除别人的:
[root@localhost ~]# chmod o+t pjort/
[root@localhost ~]# ll -d pjort/    
drwxrwsr-t. 2 root it 4096 Nov 20 10:17 pjort/

普通用户执行:
[hehe@localhost ~]$ rm erp
rm: cannot remove `erp': Operation not permitted   (没有权限)


数字表示:
Sticky
chmod 1755 /test
SGID
chmod 3755 /test
SUID
chmod 5755 /test

这就是为什么umask4位了:
[root@localhost ~]# umask 

0022













本文转自信自己belive51CTO博客,原文链接:http://blog.51cto.com/11638205/1911131 ,如需转载请自行联系原作者



上一篇:Net设计模式实例之装饰者模式(Decorator Pattern)(2)


下一篇:Yii框架在Nginx下的rewrite配置(伪静态配置)