Linux-(12)特殊权限


上一篇讲的是Linux基本的权限管理,其中讲到umask有三位数字,但是当我们执行umask命令查看当前用户的umask值时,发现输出的是4位,这多出来的一位就是特殊权限.

特殊权限也分为3种,分别是suid,sgid,sticky.这三种权限的含义分别是:

suid: 以文件的所属用户身份执行文件,而非当前用户,对目录没有影响.这个意思是,有一个可执行文件a,它属于用户甲,并且用户甲对其有x(执行)权限,用户乙属于o(other),这样子的话,用户甲是可以执行a的,而用户乙不能执行a.但是当给文件a赋予suid权限之后,用户乙就可以执行这个文件a了,因为他不是以自己的身份执行的,而是以用户甲的身份执行的.

sgid: 与suid相似,这个是对组而言的.对于文件就是以文件所属组身份运行. 对于目录而言,sgid的含义是在该目录下创建的任意文件的所属组与该目录的所属组相同.

sticky: sticky权限使得对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件.这个也是比较清楚的,即一个共享目录,用户只能删除自己的文件,不能删除别人的文件.

设置特殊权限:

仍然是使用chmod命令

设置suid: chmod u+s file

设置过后文件的权限会发生变化,在设置suid之前文件的权限是这样的:

     -rwxr--r--  1 root root    5  4月 27 16:02 aaa*
在执行chmod u+s aaa之后,文件的权限变成了这样:
     -rwsr--r--  1 root root    5  4月 27 16:02 aaa*
x为变成了s.

 

设置sgid: chmod g+s file

同样设置完后,group的x位变成了s

     -rwsr-Sr--  1 root root    5  4月 27 16:02 aaa*
设置sticky: chmod o+t file
设置完后,最后一位变成t
    drwxr-xr-t  2 root root 4096  4月 27 16:10 bbb/

 

与普通权限一样,特殊权限也可以使用数字方式表示

suid=4 (2的平方)

sgid=2 (2的1次方)

sticky=1 (2的0次方)

例子: chmod 4755 file

相关内容