ACLが有効になっているときにディレクトリに対して再帰的に権限を設定する方法は?

ACLが有効になっているときにディレクトリに対して再帰的に権限を設定する方法は?

たとえば、同僚に特定のディレクトリへの書き込み権限を付与したいとします。サブディレクトリのアクセス権が775、ファイルが664、775ディレクトリにいくつかの実行可能ファイルがあるとします。

今、書き込み権限を追加したいと思います。 chmodを使用すると、次のことを試すことができます。

chmod o+w -R mydir/

しかし、ディレクトリを誰でも書くことができるようにしたくないので、これはうまくいきません。特定のユーザーにアクセス権を付与したいので、ACLを使用したいと思います。しかし、これらの権限を設定する簡単な方法はありますか?私が見るには、少なくとも3つのケース(ディレクトリ、ファイル、実行可能ファイル)を別々に処理する必要があるようです。

find -type d -exec setfacl -m u:colleague:rwx {} \;
find -type f -executable -exec setfacl -m u:colleague:rwx {} \;
find -type f \! -executable -exec setfacl -m u:colleague:rw {} \;

このように簡単な作業を行うには、多くのコード行が必要になるようです。もっと良い方法がありますか?

ベストアンサー1

setfacl一つある再帰的オプション(-R)は次のとおりですchmod

  -R, --recursive
      Apply operations to all files and directories recursively. This
      option cannot be mixed with `--restore'.

また、Capital-x権限を使用できますX。これは次のことを意味します。

  execute only if the file is a directory or already has
  execute permission for some user (X)

したがって、次のように動作します。

setfacl -R -m u:colleague:rwX .

(すべての引用man setfaclacl-2.2.52Debian に付属)

おすすめ記事