GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavím oprávnění rekurzivně na adresář (s povoleným ACL)?

setfaclrekurzivní možnost (-R ) stejně jako chmod :

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

umožňuje také použití velkého-x X povolení, což znamená:

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

takže by mělo fungovat následující:

setfacl -R -m u:colleague:rwX .

(všechny citace jsou z man setfacl pro acl-2.2.52 jak je dodáváno s Debianem)


Jak zmínil umläute, příkaz setfacl -R s velkým "X" je způsob, jak jít, například:

setfacl -R -m u:colleague:rwX .

Nicméně pro ty, kteří potřebují znovu použít ACL regresivně (tj. jako "znovu použít oprávnění pro podadresáře" à la Windows).

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

Tento příkaz lze rozdělit, aby se předešlo chybám jako 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/')

Všimněte si, že syntaxe <( something ) je Náhrada procesu , který je specifický pro bash. Pokud používáte jiný shell, možná budete muset vytvořit dočasný soubor.


Linux
  1. Jak používat Ansible k nastavení monitorování systému pomocí Prometheus

  2. Jak auditovat oprávnění pomocí příkazu find

  3. Operace není podporována pomocí Setfacl?

  1. Jak nastavit Bash, aby spouštěl *.exe s Mono?

  2. Jak nastavit Firewall s Firewallem na CentOS 8

  3. Jak nastavím cílová oprávnění pomocí rsync (chown chmod)

  1. Jak nastavit datum pomocí formátu Epoch?

  2. Jak rekurzivně nahradit znaky sed?

  3. Jak přesměrovat ssh s AllowTcpForwarding nastaveným na ne?