linux中除了常见的读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是setuid、setgid和stick bit
i,a
1、setuid、setgid
setuid:让普通用户拥有可以执行“只有root权限才能执行”的特殊权限
setgid:该文件将具有所属组的特权;一般针对目录,当对一个目录设置这个权限后,
所有被复制到这个目录下的文件,其所属组都会被重设为和这个目录一样的权限,除非在
复制时加-p参数(保留文件属性)
需要注意的是:在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限不能正真的生效(ls -l查看时会看到rwS,大写的S说明s属性没有生效)。
2、stick bit(粘贴位)
stick bit (粘贴位):除非目录的属主和root用户有权限删除它,除此之外其它用户
不能删除和修改这个目录。
3、如何设置以上特殊权限
setuid:chmod u+s xxx
setgid: chmod g+s xxx
stick bit : chmod o+t xxx
或者使用八进制方式,在原先的数字前加一个数字,三个权限所代表的进制数与一般权限的方式类似,如下:
suid guid stick bit
1 1 1
所以:suid的二进制串为:100,换算十进制为:4
guid的二进制串为:010,换算:2
stick bit 二进制串:001,换算:1
于是也可以这样设:setuid:chmod 4755 xxx
setgid:chmod 2755 xxx
stick bit:chmod 1755 xxx
最后,在一些文件设置了特殊权限后,字母不是小写的s或者t,而是大写的S和T,那代表此文件的特殊权限没有生效,是因为你尚未给它对应用户的x权限
i:不可修改权限。例如:chattr +i filename,则filename文件就不可以修改也不能被删除,除非超级用户。并且这个属性只有超级用户可以设置。
a:只追加权限,主要针对日志文件系统。这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a filename设置追加权限。
原文地址:http://www.cnblogs.com/huangzhen/archive/2011/08/22/2149300.html