理解setuid()、setgid()和sticky位

本文详细介绍了Linux系统中SUID机制的工作原理,包括进程如何以root权限运行特定命令以访问受限资源,以及如何通过设置SUID位来实现这一功能。此外,还解释了setuid、setgid和sticky位的具体用法,并提供了实际操作的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux SETUID机制 

(1)进程运行时能够访问哪些资源或文件,不取决于进程文件的属主属组,而是取决于运行该命令的用户身份的uid/gid,以该身份获取各种系统资源。

(2)对一个属主为root的可执行文件,如果设置了SUID位,则其他所有普通用户都将可以root身份运行该文件,获取相应的系统资源。

(3)可以简单地理解为让普通用户拥有可以执行“只有root权限才能执行”的特殊权限。

(4)setuid,setuid的作用是让执行该命令的用户以该命令拥有者的权限去执行,比如普通用户执行passwd时会拥有root的权限,这样就可以修 改/etc/passwd这个文件了。它的标志为:s,会出现在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一样的,即让执行文件的用户以该文件 所属组的权限去执行。

(5)/tmp是系统的临时文件目录,所有的用户在该目录下拥有所有的权限,也就是说在该目录下可以任意创建、修改、删除文件,那如果 用户A在该目录下创建了一个文件,用户B将该文件删除了,这种情况我们是不能允许的。为了达到该目的,就出现了stick bit(粘滞位)的概念。 它是针对目录来说的,如果该目录设置了stick bit(粘滞位),则该目录下的文件除了该文件的创建者和root用户可以删除和修改/tmp目录下的 stuff,别的用户均不能动别人的,这就是粘滞位的作用。

Chmod命令中的特殊权限位含义:

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

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

3、S_ISVTX 01000 文件的sticky 位

上面的都是8进制数。

如何设置UID、GID、STICK_BIT:

SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
chmod u+s xxx # 设置setuid权限
chmod 4551 file // 权限: r-sr-x—x

chmod u+s xxx # 设置setuid权限

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

STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t ,否则为T .

chmod o+t xxx # 设置stick bit权限,针对目录

chmod 1551 file // 权限: r-xr-x--t


拓展:
  

1.linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:

ps aux|head -1;

 ps aux|grep -v PID|sort -rn -k +4|head

2.命令组合解析(针对CPU,MEN也同样道理):

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

3.该命令组合实际上是下面两句命令:

ps aux|head -1

ps aux|grep -v PID|sort -rn -k +3|head

4.查看网卡流量

sar -n DEV 2 20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Running Sun丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值