如何在不使用 Google 的情况下从 Linux 内部查找有关“粘性位”的信息?

如何在不使用 Google 的情况下从 Linux 内部查找有关“粘性位”的信息?

当我输入:

$ man -k sticky

我得到:

sticky: nothing appropriate

当然,Linux 操作系统中肯定有一些关于粘性位- 它们是什么,如何在目录中设置它们,等等。

当然,我已经通过谷歌在维基百科和其他地方找到了关于这个主题的相关信息,但我想知道如何在 Linux 内部查找它(我使用的是 CentOS v6.3)。

答案1

尝试:

man 2 chmod

或者,如果你想深入挖掘源代码,

vi /usr/include/sys/stat.h

可能也有帮助(尽管根据 DanielBeck 的评论,CentOS 6 中没有这个功能):

man 8 sticky

答案2

man 1 chmod

http://linux.die.net/man/1/chmod

限制删除标志或粘着位

限制删除标志或粘性位是一个单独的位,其解释取决于文件类型。对于目录,它可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常位于 /tmp 等可全局写入的目录中。对于某些较旧系统上的常规文件,该位将程序的文本图像保存在交换设备上,以便在运行时加载速度更快;这称为粘性位。

希望能帮助到你 !

答案3

如果你有 Emacs(或任何信息浏览器)并且GNU C 库参考手册安装后,你可以执行以下操作:

  1. 启动 Emacs 并按Ctrl- h i(或点击“帮助 > 更多手册 > 所有其他手册(信息)”) 启动其内置的信息阅读器。
  2. m或点击“信息 > 菜单项 > 其他”
  3. 输入libc并按下Enter
  4. 类型i或点击“信息 > 索引 > 查找字符串…”
  5. 输入sticky并按下Enter

您将获得以下文本:

‘S_ISVTX’

这是“粘性”位,通常为 01000。

对于目录,只有当您拥有该文件时,它才授予删除该目录中文件的权限。通常,用户可以删除目录中的所有文件,也可以不删除任何文件(取决于用户是否具有该目录的写权限)。同样的限制也适用——您必须同时具有该目录的写权限和要删除的文件的所有者。唯一的例外是目录的所有者可以删除目录中的任何文件,无论谁拥有它(前提是所有者已授予自己对该目录的写权限)。这通常用于“/tmp”目录,任何人都可以创建文件,但不能删除其他用户创建的文件。

最初,可执行文件上的粘滞位修改了系统的交换策略。通常,当程序终止时,其核心中的页面会立即被释放并重新使用。如果在可执行文件上设置了粘滞位,系统会将页面保留在核心中一段时间​​,就像程序仍在运行一样。这对于可能连续运行多次的程序来说很有利。这种用法在现代系统中已经过时了。当程序终止时,只要系统中没有内存短缺,其页面就会始终保留在核心中。当程序下次运行时,如果自上次运行以来没有出现内存短缺,其页面仍将保留在核心中。

在某些现代系统中,粘性位对于可执行文件没有任何实际意义,您根本无法为非目录设置该位。如果您尝试,'chmod' 会失败并显示 'EFTYPE';请参阅 设置权限

某些系统(特别是 SunOS)对粘性位还有另一种用途。如果在以下文件上设置了粘性位:不是 可执行文件,则意味着相反:根本不缓存此文件的页面。这主要用于 NFS 服务器计算机上的文件,这些文件用作无盘客户机的交换区域。这个想法是文件的页面将缓存在客户机的内存中,因此第二次缓存它们是对服务器内存的浪费。对于这种用法,粘性位还意味着文件系统可能无法可靠地将文件的修改时间记录到磁盘上(这个想法是没有人关心交换文件)。

此位仅在 BSD 系统(以及从其派生的系统)上可用。因此,必须使用 '_BSD_SOURCE 功能选择宏来获取定义(请参阅功能测试宏)。

相关内容