![如何知道 Ubuntu 中所有具有 stickybit 的文件?](https://linux22.com/image/1045624/%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%20Ubuntu%20%E4%B8%AD%E6%89%80%E6%9C%89%E5%85%B7%E6%9C%89%20stickybit%20%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
答案1
此命令应该为你服务(-perm
标志曾经是+1000
)
find / -perm /1000
细节:
要以数值/八进制方式添加粘性位,您必须在目录的开头添加“1”。例如:
chmod 1757 ~/Desktop/test
因此要知道要搜索 stickybit,您必须搜索所有具有“this one”的文件,这意味着具有权限 +1000(此处的 1 代表 stickybit,“000”代表初始权限)
因此,该命令将在整个文件系统中搜索每个具有权限“+1000”的文件。
现在,如果您测试了此命令,那么您会发现这里出现了许多错误,导致输出不清楚,而发生这些错误是因为您尝试在某些地方进行搜索但您没有读取权限。
因此,为了消除这些错误,您可以将这些错误重定向到/dev/null
find / -perm +1000 2> /dev/null
此外,您可以将输出重定向到文件“output.txt”,而不是将输出保存在“终端标准输出”中
find / -perm +1000 >output.txt 2>/dev/null
答案2
我只想提出几点,扩展 Hadi 的非常好的答案。首先,粘性位对 Linux 中的文件没有影响。正如man chmod
:
粘性文件
在较旧的 Unix 系统上,粘性位会导致可执行文件被储存在交换空间中。此功能在现代 VM 系统上没有用,并且 Linux 内核忽略文件的粘滞位。其他内核可能会将文件的粘性位用于系统定义的用途。在某些系统上,只有超级用户可以设置文件的粘性位。
因此,寻找文件设置粘性位后,我们也可以限制搜索范围,使其仅局限于目录,这样可以大大加快速度。可以使用以下方法完成此操作find
:
find / -type d -perm /1000 2>/dev/null
另外,请注意,我使用的是语法,-perm /mode
而不是-perm +mode
。这是因为+mode
已弃用,并且可能会返回意外结果。来自man find
:
-perm /mode
Any of the permission bits mode are set for the file.
-perm +mode
Deprecated, old way of searching for files with any of the per‐
mission bits in mode set. You should use -perm /mode instead.
Trying to use the `+' syntax with symbolic modes will yield sur‐
prising results. For example, `+u+x' is a valid symbolic mode
(equivalent to +u,+x, i.e. 0111) and will therefore not be eval‐
uated as -perm +mode but instead as the exact mode specifier
-perm mode and so it matches files with exact permissions 0111
instead of files with any execute bit set. If you found this
paragraph confusing, you're not alone - just use -perm /mode.
This form of the -perm test is deprecated because the POSIX
specification requires the interpretation of a leading `+' as
being part of a symbolic mode, and so we switched to using `/'
instead.
最后,您还可以使用符号模式而不是八进制模式,如果您不习惯的话,这可能更容易阅读:
find / -type d -perm +'+t' 2>/dev/null