使用不同的 ACL 递归查找文件

使用不同的 ACL 递归查找文件

我将如何递归地查找 ACL 与我正在搜索的文件不同的所有文件?例如,我想查找目录中 ACL 与以下示例不同的所有文件:

# owner: bob
# group: bobs-group
user::rwx 
user:fred:rwx
group::rw-
mask::rwx
other::r--

使用单独的搜索,我希望能够对目录执行相同的操作,但权限略有不同。

答案1

您可以使用finddiff

  1. 将所需的参考权限保存在文件中,例如perref

$cat perref
# owner: bob
# group: bobs-group
user::rwx 
user:fred:rwx
group::rw-
mask::rwx
other::r--
  1. find通过简单地将 的输出getfacl与参考值进行比较并否定匹配来执行一些魔术。由于这需要剪切输出的第一行getfacl(即文件名),因此需要在这里进行进程替换,这必须通过 shell 脚本和正确的引用进行。

find -type f \
! -exec bash -c 'diff -q <(getfacl "$1" | sed 1d ) perref >/dev/null' bash '{}' \; \
-print

或者-print0最终,取决于进一步的计划。diff如果文件相同,则退出状态为 0 。

删除!用于查找具有匹配 ACL 的文件。用于-type d对目录进行搜索。

相关内容