【基础知识】Sticky Bit, SUID,SGID

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

1.Sticky Bit

1)作用于文件:曾经被一些老的Unix系统用来将可执行文件在第一次执行后放在swap中提高后续该程序的运行速度,现在已经过时

2)作用于目录:若一个目录的Sticky bit被设置,那么只有这个目录的owner和root用户才能对目录中的文件或子目录进行删除和重命名:

gnuhpc@gnuhpc-desktop:~$ mkdir teststickybit

用ls命令看这个目录现在的权限情况:

drwxr-xr-x  2 gnuhpc gnuhpc     4096 2011-09-10 13:08 teststickybit

我们将其中放入一个文件a.out后目录的情况是:

gnuhpc@gnuhpc-desktop:~/teststickybit$ ls -l
total 8
-rwxrwxrwx 1 gnuhpc gnuhpc 7835 2011-08-23 16:06 a.out

添加sticky bit:

gnuhpc@gnuhpc-desktop:~$ chmod +t teststickybit

现在目录的权限变为:

gnuhpc@gnuhpc-desktop:~$ ls -ld teststickybit
drwxr-xr-t 2 gnuhpc gnuhpc 4096 2011-09-10 13:11 teststickybit

尽管a.out有对所有人的全部权限,但是现在只能又其owner或者root对其进行重命名和删除:

gnuhpc@gnuhpc-desktop:~/teststickybit$ su guest
Password:
guest@gnuhpc-desktop:/home/gnuhpc/teststickybit$ mv a.out b.out
mv: cannot move `a.out’ to `b.out’: Permission denied
guest@gnuhpc-desktop:/home/gnuhpc/teststickybit$ rm a.out
rm: cannot remove `a.out’: Permission denied

它可以保护文件,这也是/tmp有sticky bit的原因了。

2.SUID

全称是Set User ID,顾名思义,如果一个文件的SUID被设置了,那么当运行这个程序时,用户ID就会被“设置”(实际上并没有,只是权限上放开)为这个文件的owner的User ID。举例说明,我有一个文件设置了SUID,它的owner是root,那么我用一个用户,比如gnuhpc,来运行这个程序,这个程序会以root身份的权限来执行。这在你既希望某程序用某一个特定用户(比如root)的权限来做一些事,又不想给使用者都分配该用户权限时使用。希望加减SUID的都通过chmod u+/- s filename即可。

举个例子:

ping可以测试网络是否连接正常,其采用了ICMP协议进行收发报文。但是只有root用户才能建立ICMP报文,如何解决?通过SUID位来解决。看看/bin/ping的属性就知道了(rws中的那个s)。

3.SGID

类似的,某用户运行设置了SGID的文件时,其权限好像是该文件所属组的成员运行该文件一样。希望加减SGID的都通过chmod g+/- s filename即可。

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

你可能感兴趣的:(SGID)