1.set uid

set uid的功能:

 ①SUID权限只能对二进制程序有效

 ②执行此二进制档案的用户要对此二进制文件拥有执行权限

 ③SUID权限的有效时间是在执行一个二进制文件开始到命令执行结束

 ④二进制程序的执行者在执行时会暂时拥有此程序所有者的权权限

例子:

 在系统中,存在一个文件/etc/shadow,该文件用于保存密码等信息,但是该文件的权限如下:

[root@test_01 ~]# ls -l !$
ls -l /etc/shadow
----------. 1 root root 663 10月 25 19:50 /etc/shadow

 该文件权限为000,意味着只有root用户可以对该文件做修改,但是实际上普通用户也可以使用passwd命令修改密  码。查看ls命令的权限可以发现以下的权限信息:

[root@test_01 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

 可以发现u=rws普通权限中“x”的位置上出现了字母“s”。这是因为passwd这个二进制程序是拥有SUID权限的,同时对于“其他用户”这个文件也具有“x”可执行权限,所以一个普通用户也能使用这个命令。当一个普通用户运行passwd这个命令时,这个修改自身密码的进程会暂时获得passwd这个文件所有者的权限,也就是root的权限。而root的权限是“rwx”,这里的“x”被“s”位占用,但可执行权限依然存在,此时,进行的身份切换到了root,这样当然能对/etc/shadow文件进行更新,这样普通用户也能更改自己的密码。

 值得注意的是,“s”占用了“x”原本的位置,因此当原位具有“x”权限时,显示为“s”,当原位不具有“x”权限时,显示为“S”。例:

[root@test_01 ~]# ls -ld /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[root@test_01 ~]# chmod u+s !$
chmod u+s /usr/bin/ls
[root@test_01 ~]# !ls
ls -ld /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[root@test_01 ~]# chmod u-s /usr/bin/ls
[root@test_01 ~]# !ls
ls -ld /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[root@test_01 ~]# chmod u=rws /usr/bin/ls
[root@test_01 ~]# !ls
ls -ld /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

2.set gid

"s"位出现在属主的“x”位上时那就拥有了setuid的权限,当“s”位出现在属组的“x”位上时,那档案就拥有了setgid的权限。

set gid的功能:

 ①二进制文件和目录都可拥有SGID的权限

 ②程序的执行者对该档案要拥有可执行的权限

 ③在执行此程序时,进程会临时获得此二进制文件所组拥有的权限


当一个目录具有SGID权限时,那此目录具有如下的功能:

 用户对此目录具有rx权限时,用户可进入此目录

 ②用户在此目录上的群组不再是用户的所属的组,群组被切换成了目录的群组

 ③若用户对此目录具有可写入的权限,那用户在此目录下就可以新建档案,新建的文件的属主是用户 本身,但属组就成了目录的所属群组

[root@test_01 ~]# chown :test_group /tmp/test01/
[root@test_01 ~]# ls -ld /tmp/test01
dr-x-----x. 2 root test_group 19 10月 25 00:23 /tmp/test01
[root@test_01 ~]# ls -l !$
ls -l /tmp/test01
总用量 0
-rwxrwxrwx. 1 wennan root 0 10月 25 00:23 1.txt
[root@test_01 ~]# touch  /tmp/test01/test01.txt
[root@test_01 ~]#
[root@test_01 ~]# ls -l /tmp/test01
总用量 0
-rwxrwxrwx. 1 wennan root 0 10月 25 00:23 1.txt
-rw-r--r--. 1 root   root 0 10月 26 22:52 test01.txt
[root@test_01 ~]# chmod g+s /tmp/test01
[root@test_01 ~]# touch  /tmp/test01/test02.txt
[root@test_01 ~]# !ls
ls -l /tmp/test01
总用量 0
-rwxrwxrwx. 1 wennan root       0 10月 25 00:23 1.txt
-rw-r--r--. 1 root   root       0 10月 26 22:52 test01.txt
-rw-r--r--. 1 root   test_group 0 10月 26 22:53 test02.txt

3.stick bit

stick bit的功能:

1、只对目录生效,当用户对此目录有rwx权限,也就是用户对在此目录下可新建,删除,修改档案

2、用户在此目录下创建的档案,只有用户本身与root用户才能对档案进行删除、修改操作。