web-dev-qa-db-ja.com

既存のアクセス許可を保持しながら、setfaclを使用して書き込みアクセス許可を与える方法は?

ユーザーが持っている可能性のある既存のアクセス許可を失うことなく、ディレクトリ上の特定のユーザーに再帰的に書き込みアクセス許可を付与したいと思います。このようなものを使用して、ユーザーに書き込み権限を与えることができると思います。

setfacl -R -m u:user:w dir/*

ただし、これに関する問題は、ユーザーがすでに持っている可能性のある既存のアクセス許可がすべて削除されることです。たとえば、ユーザーがsetfaclコマンドを実行する前に実行権限を持っていた場合、実行権限は書き込み権限に置き換えられます。

既存のアクセス許可を保持したまま、ユーザーに書き込みアクセス許可を与えるにはどうすればよいですか?

4
comatose

必要なのは「相対アクセス許可」と呼ばれる機能です。これは、基本的にchmodで使用される従来の「+/-」構文を使用して 一部のsetfacl実装が提供する です。

ただし、少なくともRHEL7およびUbuntu 16.04 LTSでは、setfaclはそのような機能を提供しませんnot。たとえば、setfacl -m user:root:+r /root/のようなものは、setfacl: Option -m: Invalid argument near character 11を示すエラーを返します。

setfacl実装にこの機能がない場合は、次の2つの可能性があります。

  • getfaclを使用してallすべてのACLをファイルに出力し、必要なアクセス許可に一致するようにそのようなファイルを編集してから、setfacl --restoreを使用してロード/適用します新しい権限。
  • 各ファイルを反復処理するスクリプトを作成し、現在のACLを読み取り、新しいアクセス許可を書き込みます。
3
shodanshok