文件的粘滞位(sticky)位是作什么用的?
普通文件的sticky位会被linux内核忽略,目录的sticky位表示这个目录里的文件只能被owner和root删除。
粘着位(Sticky bit) 如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现可执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。
但是该目录下的目录不继承该权限,要再设置才可使用。 也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。
实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。 在Linux系统中⽐较典型的例⼦就是“/tmp”、 “/var/tmp”⽬录。这两个⽬录作为Linux系统的临时⽂件夹,权限为“rwxrwxrwx”,即允许任意⽤户、任意程序在该⽬录中进⾏创建、删除、移动⽂件或⼦⽬录等操作。
然⽽试想⼀下,若任意⼀个普通⽤户都能够删除系统服务运⾏中使⽤的临时⽂件,将造成什么结果?粘滞位权限便是针对此种情况设置,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。设置了粘滞位之后,正好可以保持⼀种动态的平衡:允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。设置了粘滞位权限的⽬录,使⽤ls命令查看其属性时,其他⽤户权限处的“x”将变为“t”。例如,查看/tmp、 /var/tmp⽬录本⾝的权限,确认存在“t”标记。
粘滞位权限都是针对其他⽤户( other)设置,使⽤chmod命令设置⽬录权限时, “o+t”、 “o-t”权限模式可分别⽤于添加、移除粘滞位权限。
例如,为/test⽬录设置粘滞位权限。
此时普通⽤户hxy便⽆法删除/root/test/file1⽂件了。
粘滞位权限在⽣产环境中也被⼴泛应⽤,当需要为⽤户提供⼀个开放⽬录⽽又不希望造成管理混乱时,通过
为⽬录设置粘滞位权限便可以解决问题。
即当一个目录被设置为"粘着位"(用chmod a+t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。