Set UID和Set GID对文件有影响(这里的"文件"指的是二进制程序,不包括SHELL脚本);Set GID和Sticky Bit对目录有影响。
SET UID举例:
[oracle@rhce u01]$ ls -l usr/bin/passwd
-rwsr-xr-x. 1 root root 26980 Jan 29 2010 usr/bin/passwd
1)用户对于/usr/bin/passwd程序具有x执行权限,表明oracle能执行passwd;
2)passwd的拥有者是root;
3)oracle执行passwd的过程中,会"暂时"获得root的权限;
4)/etc/shadow就可以被oracle用户所执行的passwd所修改。
SET GID举例:
对二进制程序文件:
[root@rhce mlocate]# ls -l usr/bin/locate var/lib/mlocate/mlocate.db
-rwx--s--x. 1 root slocate 35644 Mar 30 2010 usr/bin/locate
-rw-r-----. 1 root slocate 5020009 Oct 18 18:22 var/lib/mlocate/mlocate.db
1)用户对于/usr/bin/locate程序具有x执行权限,表明oracle能执行locate;
2)locate的组拥有者是slocate;
3)oracle执行locate的过程中,会"暂时"获得slocate组的权限;
4)/var/lib/mlocate/mlocate.db就可以被oracle用户所执行的locate所修改。
对目录:
[root@rhce ]# ls -ld u01
drwxrwxrwx. 2 grid asmoper 4096 Oct 21 18:18 u01
[root@rhce ]# chmod g+s u01
[root@rhce ]# ls -ld u01
drwxrwsrwx. 2 grid asmoper 4096 Oct 21 18:18 u01
[root@rhce ]# su - oracle
[oracle@rhce ~]$ touch u01/test1
[oracle@rhce ~]$ ls -l u01/test1
-rw-r--r--. 1 oracle asmoper 0 Oct 21 18:19 u01/test1
[oracle@rhce ~]$ exit
logout
[root@rhce ]# chmod g-s u01
[root@rhce ]# ls -ld u01
drwxrwxrwx. 2 grid asmoper 4096 Oct 21 18:19 u01
[root@rhce ]# su - oracle
[oracle@rhce ~]$ touch u01/test2
[oracle@rhce ~]$ ls -l u01
total 0
-rw-r--r--. 1 oracle asmoper 0 Oct 21 18:19 test1
-rw-r--r--. 1 oracle oinstall 0 Oct 21 18:19 test2
在目录中最新创建的文件将其组所有者设置为与目录的组所有者一致。
Sticky Bit(SBIT)举例:
当用户A对于目录具有组或其他人的身份,同时拥有该目录w的权限时,如果目录具有SBIT设置,则用户A在该目录下只有删除/更名/移动自己创建的文件或目录,无法对其他用户的文件和目录进行操作。
Sample 1(用户oracle和grid对于u01目录具有其他人的身份,同时拥有该目录w的权限):
[root@rhce u01]# ls -ld
drwxrwxrwt. 2 root root 4096 Oct 21 23:25 .
[root@rhce u01]# touch test1 test2
[root@rhce u01]# chown grid:oinstall test1
[root@rhce u01]# chown oracle:oinstall test2
[root@rhce u01]# ls -l
total 0
-rw-r--r--. 1 grid oinstall 0 Oct 21 23:25 test1
-rw-r--r--. 1 oracle oinstall 0 Oct 21 23:25 test2
[root@rhce u01]# su - oracle
[oracle@rhce ~]$ rm u01/test1
rm: remove write-protected regular empty file `/u01/test1'? y
rm: cannot remove `/u01/test1': Operation not permitted
[oracle@rhce ~]$ exit
logout
[root@rhce u01]# su - grid
[grid@rhce ~]$ rm /u01/test2
rm: remove write-protected regular empty file `/u01/test2'? y
rm: cannot remove `/u01/test2': Operation not permitted
Sample 2(用户oracle对于u01目录具有组的身份,同时拥有该目录w的权限):
[root@rhce /]# ls -ld /u01
dr-xrwxrwt. 2 grid oinstall 4096 Oct 21 23:38 /u01
[root@rhce /]# su - test
[test@rhce ~]$ touch /u01/test1
[test@rhce ~]$ exit
logout
[root@rhce /]# su - oracle
[oracle@rhce ~]$ touch /u01/test2
[oracle@rhce ~]$ ls -l /u01
total 0
-rw-rw-r--. 1 test test 0 Oct 21 23:39 test1
-rw-r--r--. 1 oracle oinstall 0 Oct 21 23:40 test2
[oracle@rhce ~]$ rm /u01/test1
rm: remove write-protected regular empty file `/u01/test1'? y
rm: cannot remove `/u01/test1': Operation not permitted
注:以上两个sample中,如果去除SBIT设置,是可以删除别的用户的文件的!所以SBIT多用于多人协同的工作目录。