2014年4月1日星期二

Linux_024:设置文件或目录的特殊权限

环境:RHEL 7.1

实际使用中,可能会有如下需求:
(1)某些命令需要以命令的属主或属组来运行该命令,而不是以运行该命令的用户来运行(可能也没权限运行)。
例如:passwd 命令
$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 35504 Jul 16 2010 /usr/bin/passwd
这里的 u+s,表示以文件的属主运行该文件。
(2)在某个目录中,只允许文件的属主删除属主是自身的文件,不能修改或删除属主是别人的文件。
例如:/tmp 目录
$ls -ld /tmp
drwxrwxrwt. 39 root root 4096 Feb 8 20:52 /tmp
这里的 o+t,表示拥有 write 权限的用户,只允许文件的属主删除属主是自身的文件,不能修改或删除属主是别人的文件。

小结:有三种特殊的权限,这三个数字排在原来三位权限数字的最前面
setuid = u+s = 4
setgid = g+s = 2
sticky = o+t = 1

                           对文件的影响                       对目录的影响
u+s (suid)   以文件的属主运行该文件                      没有
g+s (sgid)   以文件的属组运行该文件       在该目录中新创建的文件,将拥有和该目录一样的属组
o+t (sticky)            没有                         用户只能删除属主是自身的文件,不能修改或删除属主是别人的文件  

使用举例:
(1)# chmod g+s directory
(2)# chmod 2770 directory

没有评论: