Files

使用不同的 ACL 遞歸查找文件

  • December 15, 2021

我將如何遞歸地查找所有 ACL 與我正在搜尋的文件不同的文件?例如,我想在一個目錄中查找具有與以下範例不同的 ACL 的所有文件:

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

使用單獨的搜尋我希望能夠對目錄執行相同的操作,但權限略有不同。

您可以使用find和一個diff.

  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對目錄進行搜尋。

引用自:https://unix.stackexchange.com/questions/681513