粘性位在文件上有什么作用?(FreeBSD)

时间:2018-07-16 21:18:50

标签: unix permissions freebsd

我知道目录上的粘性位仅允许粘性目录中包含的文件的所有者删除文件。

但是我也可以chmod 1777一个文件,ls -l cmd显示该文件确实设置了粘性位。

1 个答案:

答案 0 :(得分:1)

没事。

从文档中:https://www.freebsd.org/cgi/man.cgi?query=sticky&sektion=7&apropos=0&manpath=FreeBSD+10.3-RELEASE+and+Ports

  

一种特殊的文件模式,称为粘滞位(模式S_ISTXT),用于   指示目录的特殊处理。 常规忽略   文件。有关文件的说明,请参见chmod(2)或文件   模式。

Erik Bennett链接了粘性位的Wikipedia article on the history -其最初目的是向内核提示,试图保持文件热交换以提高性能。不过现代的操作系统已经放弃了此功能。

  

设置后,它指示操作系统在进程退出后将程序的文本段保留在交换空间中。通过允许内核执行将程序从交换位置移至实存储器的单个操作,这可以加快后续执行速度。

     

“粘贴”程序的一个显着问题是替换可执行文件(例如,在修补过程中);为此,需要从可执行文件中删除粘性位,执行程序并退出以刷新缓存,替换二进制可执行文件,然后还原粘性位。

     

当前,此行为仅在HP-UX和UnixWare中有效。 Solaris似乎在2005年放弃了这一点。BSD的4.4-Lite发行版保留了旧的粘性位行为,但是后来从OpenBSD(从3.7版开始)和FreeBSD(从2.2.1发行版)中删除。没有Linux版本支持这种传统行为。