Linux setUid (SUID) 的 使用 及 原理

本文深入解析了Linux系统中普通用户能够更改自己密码的背后原理,通过查看关键文件和命令的权限设置,解释了passwd命令如何在执行时获得root权限,实现了普通用户的密码修改操作。

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

为什么普通用户可以更改自己的密码?

linux更改密码的原理是就是修改存放密码的文件,具体文件看下面,总之普通用户是没有这个权限去修改。

LOOK——
-rw-r--r-- 1 root root 1787 Oct 272009 /etc/passwd
-r-------- 1 root root 1187 Oct 272009 /etc/shadow

关键就在于passwd 这个命令。

-rwsr-xr-x 1 root root 22960 Jul 172006 /usr/bin/passwd

这里有一个s标志位。

setUID的定义:当一个可执行程序具有setUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。

所以,这里普通用户在执行passwd时,其实是在用root的身份执行(所有命令的所有者都是root)。


使用chmod u+s 即可授予s位

setUID=4

或者 chmod 4755


删除s位: chmod u-s

示例:

先把touch命令设置s位。再用普通用户创建文件,看下文件所有者

[gaotong@master bin]$ su root
Password: 
[root@master bin]# chmod u+s /bin/touch 
[root@master bin]# su gaotong
[gaotong@master bin]$ cu ~
bash: cu: command not found
[gaotong@master bin]$ cd ~
[gaotong@master ~]$ touch 1.txt
[gaotong@master ~]$ ls -l 1.txt 
-rw-rw-r-- 1 root gaotong 0 Sep 16 14:55 1.txt
[gaotong@master ~]$ 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值