我将如何递归地查找 ACL 与我正在搜索的文件不同的所有文件?例如,我想查找目录中 ACL 与以下示例不同的所有文件:
# owner: bob
# group: bobs-group
user::rwx
user:fred:rwx
group::rw-
mask::rwx
other::r--
使用单独的搜索,我希望能够对目录执行相同的操作,但权限略有不同。
答案1
您可以使用find
和diff
。
- 将所需的参考权限保存在文件中,例如
perref
$cat perref
# owner: bob
# group: bobs-group
user::rwx
user:fred:rwx
group::rw-
mask::rwx
other::r--
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
对目录进行搜索。