私が検索しているファイルとは異なる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
(ファイル名など)を切り捨てる必要があるため、ここではプロセス置換が必要です。これはシェルスクリプトと正しい引用符で行う必要があります。
find -type f \
! -exec bash -c 'diff -q <(getfacl "$1" | sed 1d ) perref >/dev/null' bash '{}' \; \
-print
あるいは、-print0
将来の計画に基づいて決定することもできます。diff
ファイルが同じ場合、終了ステータスは 0 です。
削除は、!
ACL が一致するファイルを検索するために使用されます。ディレクトリを検索するために使用されます-type d
。