Linux权限管理setUID setGID stickyBIT

2,054次阅读
没有评论

共计 1601 个字符,预计需要花费 5 分钟才能阅读完成。

 

Linux 权限管理 setUID setGID stickyBIT

原理

1 setuid

范围:文件或目录

前提:仅限可执行的二进制文件程序才能设定 SUID 权限。

必要:命令执行者要对该程序有执行权限。

晋升:命令执行者再执行该程序时,用户身份晋升为该程序文件的 Owner 用户。

2 setgid

范围:仅适用于文件

前提:仅限可执行的二进制程序才能设定 SGID 权限。

必要:命令执行者要对该程序拥有执行权限。

晋升:命令执行者再执行该程序时,组身份晋升为该程序文件的 Owner 组。

3 stickyBIT

范围:仅适用于目录

必要:普通用户对目录拥有写入和执行权限。

影响:当目录设置为 stickyBIT 后,该目录下的文件只有 Owner 用户才可以删除,其他即使拥有写入权限也无法删除(root 用户除外)

应用

1 setuid setgid 使用场景

场景 1:

普通用户可以以 root 角色运行只有 root 才能执行的程序或命令。比如我们熟知的 passwd 命令,普通用户可以使用该命令修改自己的密码。这是为什么呢?看下 passwd 命令的权限就知道答案了,如下图:

Linux 权限管理 setUID setGID stickyBIT

/usr/bin/passwd文件已经设置 setuid 权限位(-rwsr-xr-x),所以,普通用户临时可以晋升为 root 用户执行该命令来达到修改自己密码的目的。

为了完成 root 才可以执行的命令,我们为普通用户提升权限,一般常用的办法是 su 或 sudo。虽然 setuid 和 setgid 能帮我们提权,但是,这两个命令存在很大的隐患,因此尽可能少用。

场景 2:

我们现在希望在普通用户 dev 提权为 root 删除 Owner 为 root 的 /apple.txt 文件。使用 root 用户创建 /apple.txt 文件,如下图所示:

Linux 权限管理 setUID setGID stickyBIT

然后切换 dev 用户,执行 rm -rf apple.txt 提示权限不足。如下图:

Linux 权限管理 setUID setGID stickyBIT

我们使用 root 用户对 rm 文件 setuid 进行提权,如下图所示:

Linux 权限管理 setUID setGID stickyBIT

然后切换 dev 用户,对 /apple.txt 成功进行了删除。如下图所示:

Linux 权限管理 setUID setGID stickyBIT

通过上面的例子,我们知晓了如何使用 setuid 使得普通用户提权超越用户自身的权限的能力。同理,setgid 使用的方法,在这里不再举例子了。

2 stickyBIT 使用场景

现在有这样一个需求,在 /tmp 目录下任何人都可以修改、创建、删除文件,期望用户 A 创建的文件不希望用户 B 删除,此时,可以对 /tmp 目录设置粘滞位,就可以实现上述功能。如下图所示对 /tmp 目录设置粘滞位:

Linux 权限管理 setUID setGID stickyBIT

然后,使用 dev 用户创建 /tmp/apple 文件夹和 /tmp/apple.txt 文件,使用 bu 用户删除提示被禁止,如下图:

Linux 权限管理 setUID setGID stickyBIT

使用语法

chmod 命令中的特殊权限位含义,下面都是 8 进制数:

S_ISUID 04000 文件的 (set user-id on execution)位

S_ISGID 02000 文件的 (set group-id on execution)位

S_ISVTX 01000 文件的 sticky 位

 

如何设置 UID、GID、STICK_BIT,如下说明:

SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S。chmod u+s  file/dir  #设置 setuid 权限,针对文件或目录
chmod 4551 file/dir #权限:r-sr-x—x

SGID:置于 g 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
chmod g+s  file  #设置 setgid 权限, 针对文件
chmod 2551 file #权限:r-xr-s--x

STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t,否则为 T .
chmod o+t   dir #设置 stick bit 权限,针对目录
chmod 1551 dir #权限:r-xr-x--t

注意:特殊权限只对可执行权限的文件或文件夹有效,没有执行权限的文件或文件夹被设置成特殊限位时没有意义。

没有可执行权限的文件或文件夹被设置成特殊权限位的标志如下:SUID---S(大写)--- 不可用状态
SGID---S(大写)--- 不可用状态
SBIT----T(大写)--- 不可用状态

 

正文完
 0
醉酒的行者
版权声明:本站原创文章,由 醉酒的行者 于2024-08-16发表,共计1601字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)