文件特殊权限
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
欢迎加入: 高级运维工程师之路 598432640
Liunx学问博大精深,今天我们一起来学习一下比较有意思的三个特殊权限,虽然我们平时不常用,但是我们必须得知道,因为他们的作用在Linux操作系统的管理上起着举足轻重的作用,我们可不能小看他们哟,我们今天的主句就是SUID,SGID,SBIT三个权限的展示。
一.SetUID
1.setUID的功能
a>.只有可以执行的二进制程序才能设定SUID权限;
b>.命令执行者要对该程序拥有x(执行)权限;
c>.命令执行者在执行该程序时获得该程序文件(拥有SUID权限的文件)属主的身份(在执行程序的灵魂附体为文件的属主);
d>.SetUID权限只在改程序执行过程中有效,也就是说身份改变只在程序执行过程中有效;
案例:
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码。cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容:
2.设定SetUID的方法
4代表SUID权限
3.取消SetUID的方法
4.危险的SetUID
a>.关键目录应严格控制写权限。比如“/”,“/usr”等
b>.用户和密码设置要严格遵守密码的三原则;
c>.对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。
温馨提示:
一旦你给一个命令设置了SUID权限,那么任何一个普通用户在运行这个命令编辑文件是,就会立刻获得root权限哟!所以要慎重解决你的操作呢!
二.SetGID
1.SetGID针对文件的作用
a>.只有可执行的二进制才能设置SGID权限;
b>.命令执行者要对改程序拥有x(执行)权限;
c>.命令执行在执行程序的时候,组身份升级为该程序文件的数组;
d>.SetGID权限同样只在改程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效;
从上图我们可以看出:
a>."/usr/bin/locate"是可执行二进制程序,可以赋予SGID;
b>.其他用户对"/usr/bin/locate"命令时,组身份会升级为slocate组,而slocate组对"/var/lib/mlocate/mlocate.db"数据库拥有r权限,所以其他用户可以使用locate命令查询mlocate.db数据库。
c>.命令结束,其他用户的组身份返回为其原来的组身份。
2.SetGID针对目录的作用
a>.普通用户必须对此目录拥有r和x权限,才能进入此目录;
b>.普通用户再次目录中的有效组会变成此目录的数组;
c>.若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的数组;
3.设定SetGID的方法
2代表SGID权限
4.取消SetGID的方法。
三.Skicky BIT +
1.SBIT粘着位作用
a>.粘着位目前只对目录有效;
b>.普通用户对该目录拥有w和x权限,即普通用户可以再次目录拥有写入权限;
c>.如果没有粘着位,因为普通用户又有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件,一旦赋予了黏着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
2.SBIT黏着位的设置与取消
1代表BIT权限。
3.黏着位的应用实战
总结:
SUID:只针对可执行文件(二进制文件),不建议设置且要定时检查系统中被修改的文件;
SGID:既可以针对可执行文件,也可以针对可执行目录;
SBIT:只针对目录生效;一旦给目录设置了该权限,某个用户在这个目录下创建的文件只能尤其自己删除或是root用户删除,其他用户都是没有权限删除的哟。