美文网首页每周500字
linux命令行学习(30):特殊权限

linux命令行学习(30):特殊权限

作者: 金石明镜 | 来源:发表于2019-10-30 20:26 被阅读0次

虽然通常看到的八进制权限掩码都是用三位数字表示的,但是,确切地说,从技术层面上来看, 它是用四位数字来表示的。为什么呢?因为,除了读取、写入和执行权限之外,还有三个较少用到的权限设置,它们在第一位表达。在前面掩码表达时,把这一位写成0,如果要设置,就要写成4,2或1。

如果用文字表示它们,就分别是:setuid,setgid,sticky,顺序对应于4,2,1。

一、setuid

当把它应用到一个可执行文件时,有效用户ID将从实际用户ID (实际运行该程序的用户)设置成该程序所有者的ID。

大多数情况下,该权限设置通常应用于一些由超级用户所拥有的程序。当普通用户运行一个具有setuid root(已设置setuid位,由root用户所有)属性的程序时,该程序将以超级用户的权限来执行。这使得该程序可以访问一些普通用户通常禁止访问的文件和目录。很明显,这会带来安全方面的问题,因此允许设置setuid位的程序个数必须控制在绝对小的范围内。

二、setgid

类似于setuid,它会把有效组ID从该用户的实际组ID 更改为该文件所有者的组ID。

如果对一个目录设置setgid位,那么在该目录下新创建的文件将由该目录所在组所有,而不是由文件创建者所在组所有。当一个公共组下的成员需要访问共享目录下的所有文件时,设置setgid位将很有用,并不需要关注文件所有者所在的有效组。

三、sticky

它是从传统UNIX中继承下来的,可以标记一个可执行文件为“不可交换的”。

在Linux中,会忽略文件的sticky位,但是如果对一个目录设置sticky位,那么将能阻止用户删除或者重命名文件,除非用户是这个目录的所有者、文件所有者或者是超级用户。它常用来控制对共享目录的访问,比如/tmp。

四、实例

首先,授予程序setuid权限:

chmod u+s 程序名

(去掉该权限的命令相似,但选项为u-s)

下—步,授予目录setgid权限:

chmod g+s 目录

(去掉该权限的命令相似,但选项为g-s)

最后,授予目录sticky位权限:

chmod +t 目录

(去掉该权限的命令相似,但选项为-t)

使用Is命令可以查看这些特殊权限的设置结果。

首先,设置了 setuid位的程序:

-rwsr-xr-x

具有setgid属性的目录:

drwxrwsr-x

设置了 sticky位的目录:

drwxrwxrwt

相关文章

网友评论

    本文标题:linux命令行学习(30):特殊权限

    本文链接:https://www.haomeiwen.com/subject/rpyavctx.html