Linux关于SetUID你不得不去了解的秘密

标题Linux关于SetUID你不得不去了解的秘密

普通用户去修改密码的时候,我们会发现有一个很有意思的事情。普通用户能够修改自己的密码,符合逻辑!符合常理!没有任何毛病,问题的关键是,请看下图:
在这里插入图片描述

默认情况下,用来存放用户信息和用户密码的文件都没有可写和可执行的权限,/etc/shadow文件甚至什么权限都没有,那普通用户是如何更改密码并且让密码自动更新到/etc/shadow文件当中去的呢?

用户变更自己的密码所使用的命令是passwd,秘密会不会就在passwd这儿呢?我们来看passwd它的详细信息:
在这里插入图片描述

和普通文件不一样,存放在/usr/bin目录下的passwd文件有一个特殊的权限位s,原本s位是用来安置x权限的,现在却被s给占用了,那么这个s是个什么东西?它究竟有何神力能让没有任何权限的普通用户,轻而易举地就把密码给改了,还把密码信息写入到了所有用户都没有任何权限的/etc/shadow文件中?

s为何物?它就是我们今天要介绍的对象SetUID。要了解什么是SetUID,首先我们得了解一下它的相关定义。

SetUID的定义:当一个可执行程序具有SetUID权限,用户执行这个权限时,将以这个程序所有者的身份执行。我们来认真看一下/usr/bin/passwd这个文件的所有者是谁?是root!!

也就是说其他用户在使用/usr/bin/passwd这个命令时,由于/usr/bin/passwd设置了s位,其他用户瞬间就被root灵魂附体,从此以root用户的身份去执行这个命令,这个s位就是普通用户能更改密码的真正原因。
在这里插入图片描述

既然s位这么厉害,那是不是所有文件只要被设置了s位以后,其他用户在使用时都具备其所有者身份?答案是否定的。如果要给一个文件设置s位,想要其发挥s位的效果,前提是此文件一定是一个可执行文件,也就是它必须具备x的权限(所有者或者所属组)。

这下就比较有意思了!我们可以设想一下,假如我们服务器里面的/bin/vi被人给设置了s位,那会有什么后果?
在这里插入图片描述

通常情况下,普通用户使用/bin/vi命令去查看/etc/passwd,是没有办法对其进行修改保存的。哪怕你使用:wq!去强制保存,也只能得到如下提示:
在这里插入图片描述

那当/bin/vi被赋予了s位之后呢?
在这里插入图片描述

普通用户u1可以轻而易举地让自己成为超级用户(通过/bin/vi命令修改/etc/passwd文件内容,把自己的UID改成0),从此就能为所欲为!!想想头皮就发麻!!!!所以SetUID一定要慎用,而且作为管理员,要知道有哪些执行文件被授予了s位,对于存在风险的,定要删除。

使用find /bin -perm /u=s 就可以轻松查看/bin目录下哪些可执行文件具有s位。
在这里插入图片描述

最后,再分享一个小知识点,就是普通用户使用的vi是一个假名,它真正的路径并不是/bin/vi,而是/usr/bin/vim。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值