Linux特殊权限:SUID、SGID、SBIT

SUID:
 只对二进制程序有效
 执行者对于程序需要有x权限

 在程序运行过程中,执行者拥有程序拥有者的权限

首先查看passwd命令的绝对路径,  查看passwd命令权限:


passwd的拥有者是root,且拥有者权限里面本应是x的那一列显示的是s,这说明这个命令具有SUID权限。
 同时发现普通用户没有w权限,所以按理来说普通用户是不能执行这个命令的,因为这个命令修改了密码肯定是要写文件的。
 进一步分析,实际上passwd这个命令会操作/etc/shadow这个文件,因为密码都是放在这里,查看密码文件权限:


发现权限是000,(注意:root用户对所有文件都是有rw权限的,对所有目录都是有rwx权限的),这意味着普通用户确实不能独读或写这个文件。
 不过因为passwd命令具有SUID权限,所以普通用户执行这个命令时,当系统生成对应的进程后,这个进程就拥有了/usr/bin/passwd文件拥有者root的权限。


查看进程树:


SGID
 对于文件:
  SGID对于二进制程序有用
  程序执行着要有x权限
  执行者在执行过程中会获得改程序用户组的权限(相当于临时加入了程序的用户组)
  例如:
  普通用户使用locate命令。(直接看图)


发现用户组权限中应该出现x的位置显示的s,表示这个命令具有SGID权限。而普通用户只有x权限而没有rw权限。
  locate这个命令,实际上会去访问/var/lib/mlocate/mlocate.db这个文件。


这个文件对于普通用户没有任何权限。所以理论上普通用户执行locate命令是不行的。
 不过因为locate命令有SGID权限,所以运行locate生成进程时,这个进程会得到locate命令的用户组权限,相当于pstar这个用户被临时加入了用户组slocate。
  于是就对mlocate.db这个文件有了r权限,可以访问了!
 对于目录:
  用户对此目录有rx权限可以进入目录
  用户进入此目录后,有效用户组会变成该目录的用户组
  若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同
SBIT
 只针对目录有效
 当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。

设置和查看SUID/SGID/SBIT权限的方法:
 SUID是4   SGID是2  SBIT是1
 chmod 4755 filename
 第一个7代表的就是这三个特殊命令,后面的755是普通权限。上面的命令把filename这个文件加入了SUID权限。
 查看特殊权限的方法就是普通的ls命令:
 SUID会在所属用户权限本应是x的地方显示s
 SGID会在所属用户组权限本应是x的地方显示s
 SBIT在其它用户权限本应是x的地方显示t

如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T),大写S就表示s属性设置无效。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值