Linux文件特殊权限(SUID、SGID和SBIT)设置详解
前面已经学习 SUID、SGID、SBIT 特殊权限,以及各自的含义和功能,那么,如何给文件或目录手动设定这些特殊权限呢? 还是要依赖 chmod 命令。我们知道,使用 chmod 命令给文件或目录设定权限,有 2 种方式,分别是使用数字形式和字母形式。例如:
#数字形式 有关 chmod 命令的用法,可以阅读《Linux chmod命令》一节。 我们知道,给 chmod 命令传递 3 个数字,即可实现给文件或目录设定普通权限。比如说,"755" 表示所有者拥有 rwx 权限,所属组拥有 rx 权限,其他人拥有 tx 权限。给文件或目录设定特殊权限,只需在这 3 个数字之前增加一个数字位,用来放置给文件或目录设定的特殊权限,就这么简单。 因此,我们有必要知道 SUID、SGID、SBIT 分别对应的数字,如下所示:
4 --> SUID chmod 4755 文件名 命令,就完成了-rwsr-xr-x 权限的设定。关于 -rwsr-xr-x 的普通权限是 755,你可以这样理解,标记有 s 和 t 的权限位,隐藏有 x 权限,对此,本节后续会给出更详细的解释。 同样的道理,如果某文件拥有 SUID 和 SGID 权限,则只需要给 chmod 命令传递 6---(- 表示数字)即可;如果某目录拥有 SGID 和 SBIT,只需要给 chmod 命令传递 3--- 即可。注意,不同的特殊权限,作用的对象是不同的,SUID 只对可执行文件有效;SGID 对可执行文件和目录都有效;SBIT 只对目录有效。当然,你也可以给文件设置 7---,也就是将 SUID、SGID、SBIT赋予一个文件或目录,例如:
[root@localhost ~]# chmod 7777 ftest 除了赋予 chmod 命令 4 个数字设定特殊权限,还可以使用字母的形式。例如,可以通过 "u+s" 给文件赋予 SUID 权限;通过 "g+s" 给文件或目录赋予 SGID 权限;通过 "o+t" 给目录赋予 SBIT 权限。 举一个例子:
[root@localhost ~]#chmod u+s,g+s,o+t ftest 细心的读者可能发现这样一个问题,使用 chmod 命令给文件或目录赋予特殊权限时,原文件或目录中存在的 x 权限会被替换成 s 或 t,而当我们使用 chmod 命令消除文件或目录的特殊权限时,原本消失的 x 权限又会显现出来。 这是因为,无论是 SUID、SGID 还是 SBIT,它们只针对具有 x 权限的文件或目录有效。没有 x 权限的文件或目录,即便赋予特殊权限,也无法发挥它们的功能,没有任何意义。 例如,我们就是要给不具有 x 权限的文件或目录赋予特殊权限,看看有什么效果:
[root@localhost ~]# chmod 7666 ftest (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |