Linux文件特殊权限SUID

转载自《鸟哥的Linux私房菜》第七章、Linux 文件与目录管理

当s这个标志出现在文件拥有者的x权限上时,此时就被成为Set UID,简称为SUID的特殊权限。那么SUID的权限对于一个文件的特殊功能是什么呢?基本上SUID由这样的限制与功能:

SUID权限仅对二进位程序(binary program)有效;
尝试运行者对于该程序需要具有x的可运行权限;
运行者将在运行该程序的过程中具有该程序拥有者(owner)的权限
本权限仅在运行该程序的过程中有效(run-time)

 

 

 

 

 

举个例子:

Linux系统中,所有账号的密码都记录在/etc/shadow这个文件里面,centos中这个文件的权限为:

那么这个文件仅有root可读且仅有root可以强制写入而以。既然这个文件仅有root可以修改,那么为什么一般用户(sudo组的用户)确可以使用passwd命令修改自己的密码呢?

冲突在于明明/etc/shadow就不能让一般用户去存取,为什么一般用户还能修改这个文件中的密码呢?这就是SUID的功能了。结合SUID的描述,可以得出以下:

1、一般用户vbird对于/usr/bin/passwd这个程序来说具有x权限,表示vbird能运行passwd;
2、passwd的拥有者是root这个账号;
3、bird运行passwd的过程中,会暂时获得root的权限
4、对一般用户不可写的/etc/shadow就可以被bird所运行的passwd所修改

 

 

 

 

 

 

但如果bird使用cat去读取/etc/shadow时能读取么?因为只有x执行的权限才有SUID的特殊权限(比如/usr/bin/passwd命令),cat可执行文件的权限为:

所以bird运行cat程序时不能获取cat程序的拥有者root的权限,从而cat /etc/shadow时不能以传递的vbird一般用户的权限读取/etc/shadow中的二进制的密码。示意图:

另外,SUID 仅可用在binary program 上, 不能够用在 shell script 上面!这是因为 shell script 只是将很多的 binary 运行档叫进来运行而已!所以 SUID 的权限部分,还是得要看 shell script 呼叫进来的程序的配置, 而不是 shell script 本身。当然,SUID 对於目录也是无效的~这点要特别留意。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值