1.黏滞位的背景
一般情况下,只要用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。也就是说,只要对一个目录有写访问权,任何人都可以删除该目录中的文件。对于个别用户使用的目录,这种行为是很合理的。
eg:
1>进入超级用户(root)模式,创建一个mytest目录,并设置其权限为777
2>在进入mytest目录下,创建文件test.c
3>退出超级用户模式,转化成普通用户模式,可以将 /mytest/test.c 成功删除
通过以上操作发现,普通用户对文件/mytest/test.c虽然只具备“r--”权限,但因为从/mytest目录获得了“rwx”权限,因而仍然可以将/mytest/test.c删除。
但是,对于很多用户使用的目录来说,尤其是 /tmp 和 /var/tmp这两个⽬录,它们作为Linux系统的临时⽂件夹,权限为“rwxrwxrwx”,即允许任意⽤户、任意程序在该⽬录中进⾏创建、删除、移动⽂件或⼦⽬录等操作。 对于它们来说,这种
行为可能会产生麻烦。因为试想⼀下,若任意⼀个普通⽤户都能够删除系统服务运⾏中使⽤的临时⽂件,将造成什么结果?
因此,我们引入黏滞位。
2.黏滞位所起的作用
粘滞位权限便是针对此种情况设置的,粘着位出现可执行许可的位置上,用t表示,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。
但要注意的是:
① 该目录下的子目录不继承该权限,要再设置才可使用。
②黏滞位只能针对⽬录设置,对于⽂件⽆效。
设置了粘滞位之后,正好可以保持⼀种动态的平衡:
允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。
设置了粘滞位权限的⽬录,使⽤ls命令查看其属性时,其他⽤户权限处的“x”将变为“t”。
eg: 查看/tmp、 /var/tmp⽬录本⾝的权限,确认存在“t”标记
这也让我们知道,粘滞位权限都是针对其他⽤户( other)设置,使⽤chmod命令设置⽬录权限时,
“o+t”、 “o-t”权限模式可分别⽤于添加、移除粘滞位权限。
eg:
1> 为/mytest⽬录设置粘滞位权限(因为mytest的拥有者是超级用户,所以要在超级用户模式下进行设置)
2> 退出超级模式,此时普通用户不能删除 /mytest/test1.c 了
3.黏滞位的应用场景
粘滞位权限在⽣产环境中也被⼴泛应⽤,当需要为⽤户提供⼀个开放⽬录⽽又不希望造成管理混乱时,通过为⽬录设置粘滞位权限便可以解决问题。
4.黏滞位总结
即当一个目录被设置为"粘着位",则该目录下的文件只能由
一、超级管理员(root)删除
二、该目录的所有者删除
三、该文件的所有者删除
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。