0
点赞
收藏
分享

微信扫一扫

Linux文件特殊权限SUID

一、SUID作用

让本没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。

二、SUID示例

为什么普通用户能通过passwd命令修改自己的密码,我们查一下/usr/bin/passwd权限。

[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd

[root@localhost ~]# ll /etc/shadow
----------. 1 root root 585 4月 25 2022 /etc/shadow

我们知道系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限是----------。除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入权限,还能修改密码,就是因为这个SUID功能。

下面就是passwd这个命令的执行过程:

1、因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。

2、而/usr/bin/passwd这个文件的权限是属于root的。

3、当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。

4、于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。

5、最后,把密码修改成功。

三、SUID设置

方法一:符号方式

chmod u+s filename  设置SUID位
chmod u-s filename 去掉SUID位

方法二:数字方式

文件权限用12个二进制位表示,如果该位置上的值为1,表示有相应的权限

11 10 9 8 7 6 5 4 3 2 1 0

S   G  T r  w x r w x r w x

第11位为SUID位,权限对应的数字为4;第10位为SGID位,权限对应的数字为2;第9位为sticky位,权限对应的数字为1。第8-0位对应于上面的三组rwx位,所以也可以这样设置SUID:

chmod 4755 filename 设置SUID位
chmod 755 filename 去掉SUID位

查看结果

-rwsr-xr-x 表示SUID和所有者权限中可执行位被设置,注意是小写的s
-rwSr--r-- 表示SUID被设置,但所有者权限中可执行位没有被设置,注意是大写的S

四、SUID特点

  • 只有可执行文件才能设定 SUID 权限,对目录设定 SUID,是无效的。
  • 用户要对该文件拥有 x(执行)权限。
  • 用户在执行该文件时,会以文件所有者的身份执行。
  • SUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。

五、SUID文件查找

以下命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件。

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

举报

相关推荐

0 条评论