首页 » 信息技术 »

什么是SetUID权限?

2019年6月25日 / 17次阅读
Linux

一般在Linux系统中,我们看到的权限都是rwx,即读写执行。SetUID权限可能存在与x位置,有特殊含义。

xinlin@ubuntu:/etc$ ll /usr/bin/passwd
-rwsr-xr-x 1 root root 59640 Jan 25 2018 /usr/bin/passwd*

修改密码的程序passwd,在拥有者的x位置,显示的是s,这就是一个SetUID权限,也有人称其为s权限。

当一个具有执行权限的文件设置SetUID权限后,用户执行这个文件时将以文件所有者的身份执行。passwd命令具有SetUID权限,所有者为root(Linux中的命令默认所有者都是root),也就是说当普通用户使用passwd更改自己密码的时候,那一瞬间突然 “灵魂附体” 了,实际在以passwd命令所有者root的身份在执行,root当然可以将密码写入/etc/shadow文件(root是一个bug的存在,在Linux中就没有它不能干的事),命令执行完成后该身份也随之消失。简单理解,就是执行程序的时候,SetUID会临时将程序的拥有者修改为程序的运行者。

比如,我们可以使用passwd修改自己的密码,密码的修改,最后会体现在对/etc/passwd文件的修改,而/etc/passwd文件只有root才有w权限;由于/usr/bin/passwd程序具有SetUID权限,owner是root,因此,普通账户在执行passwd程序的时候,自动拥有了root的权限,然后就可以修改密码了,整个过程不需要使用sudo。

必须具备以下几个条件(前提):

  1. 只有可执行的二进制程序才可以设置SetUID
  2. 所有者必须对欲设置SetUID的文件具备 可执行(x) 权限
  3. 命令执行过程中,其它用户获取所有者的身份(灵魂附体)
  4. SetUID具有时间限制,即完成该程序执行后就消失(不能霸占住不放吧?)

设置SetUID:

$sudo chmod u+s <filename>

取消SetUID:

$sudo chmod u-s <filename>

SetUID权限存在安全隐患,不能随便跟程序增加这个权限。

本文链接:https://www.maixj.net/ict/setuid-21805

相关文章

留言区


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top