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用户才能对档案进行删除、修改操作。