"t"在ls命令的输出中代表什么意思?

13

ls 命令报告如下:

# ls -ld /var/lib/puppet/state/
drwxr-xr-t 3 puppet puppet 4096 Jan  8 16:53 /var/lib/puppet/state/

其他用户的“t”是什么意思?哪个工具报告权限的符号名称?ls--numeric-uid-gid选项,但是否还有其他选项用于权限?

2个回答

12

man ls 是你的好帮手:

t 粘滞位被设置 (模式为 1000),并且可搜索或可执行。
(请参见 chmod(1) 或 sticky(8).)

关于粘滞位

当设置后,它会指示操作系统在进程退出后保留程序的文本段在交换空间中。这会通过允许内核将程序从交换空间移动到实际内存中进行单次操作来加速后续的执行。因此,像编辑器这样经常使用的程序将会加载得更快。


2
在Ubuntu 12.04上,man ls没有提到符号名称的含义。谢谢! - François Beausoleil
@FrançoisBeausoleil,我不知道这个;那么,穿山甲真是太丢人了。 - miku
1
对于任何查看此内容的人,这个答案在现代系统上是不正确的。@john-rigler在下面的答案适用于现代系统。粘滞位只适用于旧的Unix系统上的可执行文件,并且从未以这种方式适用于Linux。来源在这里 - MaxML

12
粘着位(sticky bit)现在变得非常令人困惑。它不再像以前那样将文件固定到内存中,因此实际上已经不“黏着”了。有时它被称为“tacky”位,因为它用 't' 或 'T' 表示,但其他人仍然称之为“sticky”位。据我所知,只有在现代的 Linux 和 Unix 中将其应用于目录时才会起作用。如果设置了目录的粘着位,则具有删除文件权限的组中的人仍然无法执行删除操作。但是情况变得更加复杂。它出现在最后一个字段中,即“其他”用户的执行/搜索字段中,但作用于“组”用户(“其他”普通用户永远无法删除文件)。它没有显示在“组”执行字段中的原因是,如果 SETUID 位已设置为组,则该字段会更改为 “s”。至少我是这样认为的。我仍在研究这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接