本帖最后由 wuwenweijuan 于 2015-12-29 11:50 编辑
1、suid权限位的作用是使得任意用户都拥有该二进制文件的所属用户的权限。(suid只能作用于二进制文件)
2、suid的权限位位于x权限位上,如果该文件具有x权限,则显示为s,如果该文件不具备x权限,则显示为S。
例如:
-rwsr-xr-x. 1 root root 34904 10月 15 2014 /bin/su
-rwSr-xr-x. 1 root root 117024 12月 28 18:00 /bin/ls
3、实验验证过程:
首先,将一个二进制命令文件拷贝出来
[root@pifu ~]# cp /bin/ls /test
更改掉文件所属用户及用户组
更改掉文件所属用户及用户组
[root@pifu ~]# chown test01:test01 /test/ls
更改文件权限
[root@pifu ~]# chmod 4700 /test/ls
创建其他普通用户
[root@pifu ~]# useradd test02
登录到其他用户执行该文件
[root@pifu ~]# su - test02
[test02@pifu ~]$ /test/ls -l
[test02@pifu ~]$ /test/ls -l
-bash: /test/ls: 权限不够
之后又回到了root下,发现root可执行该文件,再登录到test01下,发现test01也可以执行该文件,于是怀疑suid是否只可作用于root,而无法作用其他普通用户。但是,后来灵光一闪,察觉到问题所在,是不是/test目录权限问题,于是:
[root@pifu ~]# /test/ls -l /test
dr-xr-xr-x. 2 root root 4096 12月 28 17:33 test
发现确实是有执行权限的,但是test02用户确实不可使用/test/ls,那么是否证明设置了suid,并不代表其他用户就可以使用该二进制文件所属用户的权限。
之后,将/test/ls的o+rx权限后,其他普通用户才可以使用该命令
[root@pifu ~]# chmod o+rx /test/ls
[root@pifu ~]# su - test02
[test02@pifu ~]$ /test/ls -l /home
总用量 8
drwx------. 3 test01 test01 4096 12月 28 19:35 test01
drwx------. 3 test02 test02 4096 12月 28 19:40 test02
最后,将/test/ls的执行权限位取消,则
[root@pifu~]#chmod 4600 /test/ls
[root@pifu ~]# su - test01
[test01@pifu ~]$ /test/ls -l
-bash: /test/ls: 权限不够
[test01@pifu ~]$ logout
[root@pifu ~]# /test/ls -l
-bash: /test/ls: 权限不够
结论:suid权限位的作用是使得所有的用户都具备该文件所属用户的权限,仅作用于当其所属用户为root时,如果该文件的所属用户为普通用户的时候,也唯有root用户才能有效地使用suid权限,其他普通用户无法使用suid权限,如果普通用户需要使用,则需更改文件及其目录的权限,在其他用户权限上设置rx权限。
另外,如果该二进制命令文件所属用户为root时,且suid权限位上有x权限,那么其他用户才可使用,如果
结论:suid权限位的作用是使得所有的用户都具备该文件所属用户的权限,仅作用于当其所属用户为root时,如果该文件的所属用户为普通用户的时候,也唯有root用户才能有效地使用suid权限,其他普通用户无法使用suid权限,如果普通用户需要使用,则需更改文件及其目录的权限,在其他用户权限上设置rx权限。
另外,如果该二进制命令文件所属用户为root时,且suid权限位上有x权限,那么其他用户才可使用,如果
suid权限位上没有x权限,那么root用户可以使用,其他普通用户不可使用;如果该二进制命令文件所属用户为普通用户时,且suid权限位上有x权限,那么唯有root及文件所属用户才可使用,如果suid权限位上没有x权限,那么任何用户都不可使用,包括root用户。
编辑回复