Linux 特权 SUID/SGID 的详解

美丽的神话  金牌会员 | 2024-7-2 12:31:59 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 964|帖子 964|积分 2892

导航

0、前言

Linux最优秀的地方之一,就在于他的多人多工环境。而为了让各个使用者具有较保密的档案资料,因此档案的权限管理就变的很重要了。
Linux一般将档案可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限。

故对于"静态"的档案来说,其中的权限属性即确定了“哪些身份的人拥有什么样的权限可以去做什么动作”,如上图所示。
而对于"动态"的历程来说,操作系统又为历程分配了它们的用户身份,即有效用户身份euid、有效群组身份egid、群组身份groups、还有继续uid、继续gid。【注:不管历程是否有SUID/SGID加持,历程都将拥有这5个身份,只不过无差异时 id 命令默认不显示euid/egid而已,默认euid=uid、egid=gid】
注:以下实验中涉及的 id、cat、touch 命令均是通过 cp $(which id) /tmp 从系统命令拷贝而来,通过对 id 命令赋予特权以观察同样被赋予特权的cat、touch 命令在此景象之下历程内部发生的变化,以及实际会产生什么样的效果。
1、权限匹配流程

于是,当一个历程想要操作某个档案文件时,操作系统便会根据历程拥有的身份档案拥有的权限标记去做判断。判断流程如下(示例以读权限 r 举例):

  • 如果历程的 euid 即是档案的 owner-id,则继续开始判断档案拥有者对应的权限位中是否包含 r 权限,若包含则文件被历程顺利读取,若不包含则提示历程无权限,此时不管 r 权限包含与否判断流程都将不再继续;如果历程的 euid 不即是档案的 owner-id,则开始步骤 2 的判断。
  • 如果历程的 groups 包含档案的 group-id,则继续开始判断档案所属群组对应的权限位中是否包含 r 权限,若包含则文件被历程顺利读取,若不包含则提示历程无权限,此时不管 r 权限包含与否判断流程都将不再继续;如果历程的 groups 不包含档案的 group-id,则开始步骤 3 的判断。
  • 此时直接开始判断档案别的人对应的权限位中是否包含 r 权限,若包含则文件被历程顺利读取,若不包含则提示历程无权限。至此,流程不再递归判断,直接结束。



2、五种身份变化

当一个二进制命令被授予 SUID/SGID 特权时,命令历程中 5 种身份的变化。

  • 当无特殊权限时,uid=继续shell的uid,gid=继续shell的gid,euid=uid,egid=gid,groups=uid所加入的群组。
  • 当授予suid特殊权限时,uid=继续shell的uid,gid=继续shell的gid,euid=suid的值,egid=gid,groups=uid所加入的群组。
  • 当授予sgid特殊权限时,uid=继续shell的uid,gid=继续shell的gid,euid=uid,egid=sgid的值,groups=uid所加入的群组+sgid。
  • 当授予suid和sgid特殊权限时,uid=继续shell的uid,gid=继续shell的gid,euid=suid的值,egid=sgid的值,groups=uid所加入的组+sgid。




3、有效用户/组

不管实验2中历程的5种身份如何变化,当历程产生新档案时,档案的拥有者和所属群组都是以euid和egid的值去赋予的。

4、特权对 Shell 脚本无效

特殊权限 SUID/SGID 对于 shell 脚本不起作用,授予和不授予的状态一样。

5、Sudo 与 SUID/SGID 的优先级

当 Sudo 和 SUID/SGID 同时作用二进制命令时,优先以SUID/SGID的权限为主,这其实就相称于在root shell下实行特殊授权的命令一样,命令历程的5种身份依旧按照小节(2)描述的过程一样,root也不例外。

6、SUID、SGID、Sticky 各自的功能。


  • SUID:只作用于二进制文件,当命令被实行时,命令会以命令拥有者的身份走完历程的整个生命周期,而非以当前 shell 的用户身份运行。
  • SGID:当作用于二进制文件时,效果与 SUID 类似,只是在命令历程的整个整个生命周期中又多了一个群组的援助;当作用于目录时,使用者进入此目录下时他的有效群组将会酿成该目录的群组,此时新建的任何文件目录,他们的 群组id 都将和该目录的 群组id 一样。
  • Sticky:只作用于目录,使用者在该目录下新建的任何文件目录,都将只有自己与 root 才有权力删除。如 /tmp 目录。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表