さまざまなACLを使用して再帰的にファイルを見つける

さまざまなACLを使用して再帰的にファイルを見つける

私が検索しているファイルとは異なるACLを持つすべてのファイルをどのように繰り返し検索できますか?たとえば、次の例とは異なるACLを持つディレクトリ内のすべてのファイルを検索したいとします。

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

別の検索を使用してディレクトリで同じことを実行できますが、権限は若干異なります。

答え1

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(ファイル名など)を切り捨てる必要があるため、ここではプロセス置換が必要です。これはシェルスクリプトと正しい引用符で行う必要があります。

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

あるいは、-print0将来の計画に基づいて決定することもできます。diffファイルが同じ場合、終了ステータスは 0 です。

削除は、!ACL が一致するファイルを検索するために使用されます。ディレクトリを検索するために使用されます-type d

関連情報