如何知道 Ubuntu 中所有具有 stickybit 的文件?

如何知道 Ubuntu 中所有具有 stickybit 的文件?

我现在了解了粘性位以及为什么我应该根据我的问题使用它们:“ls -ld /tmp”输出中的“t”字母是什么?

现在我有了一个新问题。

我如何列出 Ubuntu Linux 中所有具有粘性位的文件?

答案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 

相关内容