GNU/Linux >> Linux の 問題 >  >> Linux

(ACL を有効にして) ディレクトリに再帰的にアクセス許可を設定するにはどうすればよいですか?

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 setfacl からのものです acl-2.2.52 の場合 Debian に同梱されている)


ウムロイテで述べたように、コマンド setfacl -R 大文字の「X」を使用する方法は次のとおりです。

setfacl -R -m u:colleague:rwX .

ただし、ACL を再帰的に再適用する必要がある場合 (つまり、Windows の「サブディレクトリにパーミッションを再適用する」のようなものです)。

find . -mindepth 1 | xargs -n 50 setfacl -b --set-file=<(getfacl . | sed -e 's/x$/X/')

setfacl: foobar: Only directories can have default ACLs のようなエラーを避けるために、そのコマンドを分割することができます .

find . -mindepth 1 -type d| xargs -n 50 setfacl -b --set-file=<(getfacl . | sed -e 's/x$/X/')
find . -mindepth 1 -type f| xargs -n 50 setfacl -b --set-file=<(getfacl . | grep -v '^default:' | sed -e 's/x$/X/')

構文 <( something ) に注意してください プロセス代替です 、これは bash に固有です。別のシェルを使用する場合は、一時ファイルを作成する必要がある場合があります。


Linux
  1. Ansibleを使用してPrometheusでシステム監視を設定する方法

  2. Monoで*.exeを実行するようにBashを設定する方法は?

  3. エポックフォーマットで日付を設定する方法は?

  1. CentOS8でファイアウォールを使用してファイアウォールを設定する方法

  2. 文字を再帰的にsedに置き換える方法は?

  3. AllowTcpForwarding を no に設定して ssh 転送する方法は?

  1. findコマンドを使用して権限を監査する方法

  2. Setfaclでサポートされていない操作?

  3. rsync (chown chmod) で送信先のアクセス許可を設定するにはどうすればよいですか