拥有s权限的命令(文件):为了确保非所有者用户,在使用该命令时,临时拥有所有者"/>

Linux 特殊权限set_uid

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 特殊权限set_uid相关的知识,希望对你有一定的参考价值。

特殊权限set_uid

默认情况下 , 在新安装好的Linux系统下 , 仅有一个命令是拥有set_uid特殊权限的 .

技术分享

拥有s权限的命令(文件) : 为了确保非所有者用户 , 在使用该命令时,临时拥有所有者的身份 ; 给一个文件设置set_uid特殊权限,前提是该文件是一个可执行的二进制文件(一般都是给命令加上这样的特殊权限) , 否则没有任何意义 , 就如给一个文件夹设置一个set_uid权限一样 , 没有任何实际意义 .

1. 给命令加上set_uid特殊权限

格式 chmod u+s 命令的文件路径 chmod u+s /usr/bin/ls chmod u-s /usr/bin/ls

/root/目录的权限 , 是只有root用户和root组下的用户才能访问的 , 其他用户没有任何权限 .
[[email protected] ~]# ls -ld /root/dr-xr-x---. 3 root root 178 6月   8 14:16 /root/
那么如果用一个普通用户去查看/root/目录下的内容时 , 肯定会报权限不足的错误 .
[[email protected] ~]$ ls -l /root/ls: 无法打开目录/root/: 权限不够
给ls命令添加上set_uid特殊命令后 , 验证能否临时加上只有root用户才有的查看/root/目录的权限
[[email protected] ~]# which lsalias ls=‘ls --color=auto‘
	/usr/bin/ls[[email protected] ~]# ls -l /usr/bin/ls-rwxr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls[[email protected] ~]# chmod u+s /usr/bin/ls[[email protected] ~]# !lsls -l /usr/bin/ls-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls[[email protected] ~]#

技术分享

切换到allin1的普通用户 , 再次使用ls命令 , 看看普通用户是否拥有了root用户的权限 , 可以查看/root/目录
[[email protected] ~]# ssh -p 22 [email protected]130Last login: Fri Jun  9 08:54:21 2017 from 192.168.245.132[[email protected] ~]# whoamiroot
[[email protected] ~]# su - allin1上一次登录:五 6月  9 08:54:30 CST 2017pts/3 上
[[email protected] ~]$ whoami
allin1
[[email protected] ~]$ ls -l /root/
总用量 8-rwx--x--x. 1 root root    0 6月   8 14:16 2.txt
-rw-------. 1 root root 7728 6月   6 22:11 anaconda-ks.cfg.1[[email protected] ~]$

技术分享

2. 给命令添加set_uid特殊权限的第二种方式

格式 : chmod u=rws 命令文件路径 chmod u=rws /usr/bin/ls

这样修改后的ls命令的权限 , 和第一种方式修改后的ls命令权限有一些区别 , 但是效果却一样

[[email protected] ~]# chmod u-s /usr/bin/ls[[email protected] ~]# ls -l /usr/bin/ls-rwxr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[[email protected] ~]# chmod u=rws /usr/bin/ls[[email protected] ~]# ls -l /usr/bin/ls-rwSr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[[email protected] ~]#

技术分享

这样添加set_uid的特殊权限后 , ls命令的权限变成rwS , 是一个大写的S , 而第一种方式添加特殊权限后 , ls命令的权限是rws , 是一个小写的s ... 这两者的区别是 , 第二种方式 , 缺少了x权限 , 要想也成为小写的s , 那么也可以额外在添加上x权限 , 不过这个并不影响ls命令临时拥有了root用户权限 .

[[email protected] ~]$ ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[[email protected] ~]$ ls -l /bin/ls
-rwSr-xr-x. 1 root root 117656 11月  6 2016 /bin/ls
[[email protected] ~]$ ls -l /root/
总用量 8-rwx--x--x. 1 root root    0 6月   8 14:16 2.txt
-rw-------. 1 root root 7728 6月   6 22:11 anaconda-ks.cfg.1[[email protected] ~]$

技术分享

加上x权限
[[email protected] ~]# chmod u+x /usr/bin/ls[[email protected] ~]# ls -l /usr/bin/ls-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

技术分享


本文出自 “Linux之路” 博客,请务必保留此出处http://allin28.blog.51cto.com/12931477/1933858

以上是关于Linux 特殊权限set_uid的主要内容,如果未能解决你的问题,请参考以下文章

[CentOS 7系列]特殊权限与链接模式

学习九

2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_b

day09-linux特殊权限及软连接

2018-3-29

特殊权限set_uid /特殊权限set_gid/特殊权限stick_bit/软链接文件/硬连接文件