Unix 粘性位对文件有什么作用?(FreeBSD)

Unix 粘性位对文件有什么作用?(FreeBSD),unix,permissions,freebsd,Unix,Permissions,Freebsd,我知道目录上的粘滞位只允许包含在粘滞目录中的文件的所有者删除文件 但是我也可以chmod1777一个文件,并且ls-lcmd显示该文件确实设置了粘性位。没有 从文档中: 一种特殊的文件模式,称为粘性位(模式S_isText),用于 指示对目录的特殊处理对于常规设置,它被忽略 文件。有关文件的说明,请参阅chmod(2)或文件 模式 Erik Bennett将粘性位的作用联系在一起——它最初的目的是向内核发出一个提示,试图在交换时保持文件的热状态,以提高性能。但是现代OSs已经放弃了这个功能 设置

我知道目录上的粘滞位只允许包含在粘滞目录中的文件的所有者删除文件

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

没有

从文档中:

一种特殊的文件模式,称为粘性位(模式S_isText),用于 指示对目录的特殊处理对于常规设置,它被忽略 文件。有关文件的说明,请参阅chmod(2)或文件 模式

Erik Bennett将粘性位的作用联系在一起——它最初的目的是向内核发出一个提示,试图在交换时保持文件的热状态,以提高性能。但是现代OSs已经放弃了这个功能

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

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

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