在介绍粘滞位之前,先来介绍一下文件权限和目录权限的区别。
我们知道在linux系统中文件(文件和目录)的权限有三种(r,w,x),而这三种权限对文件和目录的意义有所不同。
权限对文件
1. r (read) :可读取该文件的实际内容;
2. w(write):可以编辑,新增或者修改该文件的内容(但不含删除该文件);3. x(execute):代表该文件可以被系统执行
对于文件的r ,w, x来说,主要针对的“文件的内容”而言,与文件名的存在与否没有关系;
权限对目录
1. r (read):表示具有读取目录结构列表的权限,不如可以用ls查看一下目录有什么
2. w(write):而写的权限对目录来说就显得很强大了,代表具有更改该目录结构列表的权限。
2. w(write):而写的权限对目录来说就显得很强大了,代表具有更改该目录结构列表的权限。
新建文件或目录
删除文件或目录(不论文件的权限是什
么)
对文件或目录重命名
移动文件或目录等
3. x(execute):目录的X权限代表的是用户能否进入该目录称为工作目录。拥有此权限,就可以cd进去,否则,将不能进入目录内部。
有了前面的背景介绍,我们再来看粘滞位的概念和使用:
粘滞位(Stickybit),或粘着位。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。在我们系统中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
一个目录具有粘滞位,则在other的X位会表现为 t,或者T.大小写的区别在于,原来x位上有x权限,有了粘滞位则表现为t.否则,表现为T。
(1)查看/tmp权限可以发现。确实有一个t位出现。
实践是检验真理的唯一标准。
(2)用root身份新建一个目录名为file的目录,并用参数-m 为它指定权限为777(可读,可写,可执行),并且所属者和所属组都是root。接着该目录下新建两个文件,权限为默认。
,因为other对该目录具有w权限,所以可以删除目录内容。
(3)切换到名为god的普通用户,尝试去删除刚刚在root下新建的两个文件test1 和 test2。经过实践,我们发现可以删除。
(4)我们回到root用户下,给刚才新建的目录file,加上粘滞位(命令:chmod o+t .)再次查看目录,发现other的x权限变为t。说明添加粘滞位成功。依旧在该目录下重新新建两个文件 test1 和 test2。
(5)再次尝试删除,刚刚新建的文件test1 和 test2。 结果错误输出为”不允许的操作“。可以证实粘滞位给其它用户带来的安全限制。
为了进一步证实文件所有者和root依旧可以删除。用root对该文件进行删除操作。结果发现,依旧可以正常删除。
总结以上内容:即当一个目录被设置为"粘滞位"(用chmod a+t),则该目录下的文件只能由
一、超级管理员(root)删除或移动
二、该目录或文件的所有者删除 或移动
一、超级管理员(root)删除或移动
二、该目录或文件的所有者删除 或移动
注意:
(1)虽然目录有了粘滞位,other用户不能对该目录的文件进行删除或者移动操作,但是other对该文件由w权限,还是可以进行修改文件内容的。
(2)粘滞位只对目录有效,对文件无效。(由开始介绍的权限对文件和目录的作用可以知道)