linux基础教程之特殊权限SUID、SGID和SBIT
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux基础教程之特殊权限SUID、SGID和SBIT
前⾔
对于linux中⽂件或⽬录的权限,应该都知道普通的rwx权限。
Linux的权限不是很细致,只有RWX三种r(Read,读取):对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览⽬录的权限。
w(Write,写⼊):对⽂件⽽⾔,具有新增,修改,删除⽂件内容的权限;对⽬录来说,具有新建,删除,修改,移动⽬录内⽂件的权限。
x(eXecute,执⾏):对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录了来说该⽤户具有进⼊⽬录的权限。
1、⽬录的只读访问不允许使⽤cd进⼊⽬录,必须要有执⾏的权限才能进⼊。
2、只有执⾏权限只能进⼊⽬录,不能看到⽬录下的内容,要想看到⽬录下的⽂件名和⽬录名,需要可读权限。
3、⼀个⽂件能不能被删除,主要看该⽂件所在的⽬录对⽤户是否具有写权限,如果⽬录对⽤户没有写权限,则该⽬录下的所有⽂件都不能被删除,⽂件所有者除外
4、⽬录的w位不设置,即使你拥有⽬录中某⽂件的w权限也不能写该⽂件
我们先看看下⾯两个的权限是什么
⾮常奇怪,/tmp⽬录和 passwd⽂件的权限怎么怪怪的,怎么有s和t权限呢。
看了下⾯的内容你就明⽩了。
1 SUID
当s出现在⽂件拥有者的x权限上时,如我们上⾯看到的/usr/bin/passwd这个⽂件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.SUID对于⼀个⽂件有什么限制和功能呢?
SUID权限仅对⼆进制可执⾏⽂件有效
执⾏者对于该⽂件具有x的权限
本权限仅在执⾏该⽂件的过程中有效
执⾏者将具有该⽂件拥有者的权限
例如普通⽤户⽤passwd修改⾃⼰的命令,实际上最终更改的是/etc/passwd⽂件. 此⽂件时⽤户管理配置⽂件,只有root权限才能更改。
既然是root⽤户才拥有此权限,为什么我们可以通过passwd命令来修改密码呢,那这就要归功于passwd设置了suid权限位了。
此时普通⽤户通过执⾏passwd命令,临时拥有root权限,间接的修改/etc/passwd,以达到修改⾃⼰密码的权限。
2 SGID
当s出现在⽬录或⽂件所属群的x权限上时,此时就称为SET GID简称SGID,那SGID对⽂件和⽬录分部有哪些功能呢?
2.1 SGID对⽬录
使⽤者若对于此⽬录具有 r 与 x 的权限时,该使⽤者能够进⼊此⽬录
使⽤者在此⽬录下的群组将会变成该⽬录的群组
若使⽤者在此⽬录下具有 w 的权限(可以新建⽂件),则使⽤者所创建的新⽂件,该新⽂件的群组与此⽬录的群组相同
2.2 SGID对⽂件
SGID 对⼆进制可执⾏⽂件有效
程式执⾏者对于该⽂件来说,需具备 x 的权限
执⾏者在执⾏的过程中将会获得该⽂件群组的⽀援(⽤于改⽂件群组的权限)
3 SBIT
当s出现在⽬录其他⽤户的x权限上时,此时就称为Sticky Bit简称SBIT,那SBIT有哪些限制和作⽤呢?
仅对⽬录有效,对⽂件⽆效
当使⽤者在该⽬录下建⽴⽂件或⽬录时(有权限的情况下),仅⾃⼰与 root 才有权⼒删除新建的⽬录或⽂件
我们知道/tmp⽬录是这样的权限。
现在我们来验证下,先⽤root账号在tmp⽂件中创建⼀个⽂件test,然后⽤openstack(其他账号)进⼊该⽬录,删除test⽂件,看看发⽣什么情况
我们看到这样是不能删除⽂件的。
因为/temp⽬录有SBIT权限。
4 怎么操作SUID、SBID、SBIT
操作这些标志与操作⽂件权限的命令是⼀样的, 都是chmod. 有两种⽅法来操作,
(1)符号类型改变权限
chmod u+s testbin-- 为testbin⽂件加上setuid标志.
chmod g+s testdir-- 为testdir⽬录加上setgid标志
chmod o+t testdir-- 为testdir⽬录加上sticky标志
(2) 数字类型改变档案权限
采⽤⼋进制⽅式. 对⼀般⽂件通过三组⼋进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加⼀组⼋进制数字. 如 4666, 2777等. 这⼀组⼋进制数字三位的意义如下,
abc
a - setuid位, 如果该位为1, 则表⽰设置setuid 4---
b - setgid位, 如果该位为1, 则表⽰设置setgid 2---
c - sticky位, 如果该位为1, 则表⽰设置sticky 1---
设置完这些标志后, 可以⽤ ls -l 来查看. 如果有这些标志, 则会在原来的执⾏标志位置上显⽰. 如
rwsrw-r-- 表⽰有setuid标志
rwxrwsrw- 表⽰有setgid标志
rwxrw-rwt 表⽰有sticky标志
那么原来的执⾏标志x到哪⾥去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显⽰为⼩写字母 (s, s, t). 否则,显⽰为⼤写字母 (S, S, T)
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。