admin 管理员组文章数量: 1184232
2024年3月18日发(作者:dubbo连接池)
Linux文件特殊权限 SUID/SGID/Sticky Bit
前面一直提到文件的重要权限,就是rwx这3个读、写、执行的权限。但是,怎么 /tmp
权限有些奇怪?还有, /usr/bin/passwd也有些奇怪,怎么回事呢?
[root@linux ~]# ls -ld /tmp ; ls -l /usr/bin/passwd
drwxrwxrwt 5 root root 4096 Jul 20 10:00 /tmp
-r-s--x--x 1 root root 18840 Mar 7 18:06 /usr/bin/passwd
不是只有rwx吗?为什么还有其他的特殊权限呢?不要担心,我们这里先不谈这两个权限,
只是先介绍一下而已。因为必须要有账号的ID概念,以及程序的进程(process)概念后,才
能够进一步了解这些特殊权限所表示的意义。
Set UID
会创建s与t权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有
者的权限。举例来说,我们知道,账号与密码的存放文件其实是 /etc/passwd与 /etc/shadow。
而 /etc/shadow文件的权限是“-r--------”。它的拥有者是root。在这个权限中,仅有root
可以“强制”存储,其他人是连看都不行的。
但是,偏偏笔者使用dmtsai这个一般身份用户去更新自己的密码时,使用的就是
/usr/bin/passwd程序,却可以更新自己的密码。也就是说,dmtsai这个一般身份用户可以存
取 /etc/shadow密码文件。这怎么可能?明明 /etc/shadow就是没有dmtsai可存取的权限。
这就是因为有s权限的帮助。当s权限在user的x时,也就是类似 -r-s--x--x,称为Set UID,
简称为SUID,这个UID表示User的ID,而User表示这个程序(/usr/bin/passwd)的拥有
者(root)。那么,我们就可以知道,当dmtsai用户执行 /usr/bin/passwd时,它就会“暂
时”得到文件拥有者root的权限。
SUID仅可用在“二进制文件(binary file)”,SUID因为是程序在执行过程中拥有文件
拥有者的权限,因此,它仅可用于二进制文件,不能用在批处理文件(shell脚本)上。这是因
为shell脚本只是将很多二进制执行文件调进来执行而已。所以SUID的权限部分,还是要看
shell脚本调用进来的程序设置,而不是shell脚本本身。当然,SUID对目录是无效的。这点
要特别注意。
Set GID
进一步而言,如果s的权限是在用户组,那么就是Set GID,简称为SGID。SGID可以用
在两个方面。
文件:如果SGID设置在二进制文件上,则不论用户是谁,在执行该程序的时候,它的有
效用户组(effective group)将会变成该程序的用户组所有者(group id)。
目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将
会是此A目录的用户组。
一般来说,SGID多用在特定的多人团队的项目开发上,在系统中用得较少。
Sticky Bit
这个Sticky Bit当前只针对目录有效,对文件没有效果。SBit对目录的作用是:“在具有
版权声明:本文标题:Linux文件特殊权限 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710777294a572615.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论