Il primo comando cambierà le autorizzazioni di tutti i file / directory preesistenti. Il -d
secondo comando è fondamentale per impostare le autorizzazioni predefinite in futuro per qualsiasi directory, che a sua volta fornirà un set predefinito di ACL per tutti i file all'interno di queste directory.
NOTA: in entrambi i casi i comandi verranno eseguiti in modo ricorsivo tramite l' -R
interruttore.
Per quanto riguarda l' -d
interruttore, dalla setfacl
pagina man:
-d, --default
All operations apply to the Default ACL. Regular ACL entries in the
input set are promoted to Default ACL entries. Default ACL entries
in the input set are discarded. (A warning is issued if that happens).
Questo estratto lo spiega anche abbastanza bene:
Esistono due tipi di ACL: accesso ACL e ACL predefiniti. Un ACL di accesso è l'elenco di controllo di accesso per un file o una directory specifici. Un ACL predefinito può essere associato solo a una directory; se un file all'interno della directory non ha un ACL di accesso, utilizza le regole dell'ACL predefinito per la directory. Gli ACL predefiniti sono opzionali.
Fonte: 8.2. Impostazione degli ACL di accesso .
Esempio
Di 'che ho questa struttura di directory.
$ tree
.
|-- dir1
| |-- dirA
| | `-- file1
| `-- fileA
`-- file1
2 directories, 3 files
Ora impostiamo le autorizzazioni usando il primo setfacl
comando nella tua domanda:
$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .
Che si traduce in quanto segue:
$ getfacl dir1/ file1
# file: dir1
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--
Senza il -dR
comando eseguito qui, le nuove directory non sarebbero coperte dai tuoi ACL:
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x
Ma se rimuoviamo questa directory ed eseguiamo il setfacl -dR ...
comando e ripetiamo l'operazione sopra:
$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .
Ora le autorizzazioni sembrano abbastanza diverse:
$ getfacl dir1/ file1
# file: dir1/
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--
E ora la nostra directory appena creata prenderà queste autorizzazioni "predefinite":
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
Avere queste autorizzazioni in atto dir2
ora imporrà anche queste autorizzazioni sui file dir2
:
$ touch dir2/fileA
$ getfacl dir2/fileA
# file: dir2/fileA
# owner: saml
# group: saml
user::rw-
user:saml:rwx #effective:rw-
user:samtest:rwx #effective:rw-
group::rwx #effective:rw-
mask::rw-
other::r--
app/cache
che contiene una directory chiamatadev
, il primo comando verrà applicato a quello, ma non il secondo? E se successivamente viene aggiunta un'altra directory (ad es.prod
), Il secondo comando imposterà le autorizzazioni? Se questo non è il caso, dovrei essere in grado di saltare il secondo comando?