Perché abbiamo bisogno di ACL?
Ogni file su qualsiasi file system UNIX avrà un proprietario/gruppo e un insieme di autorizzazioni. Immagina un caso in cui più utenti devono accedere allo stesso file e gli utenti provengono da gruppi diversi. Gli elenchi di controllo di accesso ai file (FACL) o semplicemente ACL sono l'elenco di utenti/gruppi aggiuntivi e la loro autorizzazione al file.
Come sapere quando un file ha un ACL allegato
È molto facile sapere quando un file ha un ACL allegato. ls -l comando produrrebbe un output come mostrato di seguito.
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
Nota il + firmare alla fine dei permessi. Ciò conferma che al file è allegato un ACL.
Visualizzazione degli ACL
Per visualizzare i dettagli delle informazioni ACL di un file, utilizza getfacl comando.
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
Nota i 3 diversi utente: linee. La prima riga elenca le autorizzazioni file standard del proprietario del file. Gli altri 2 permessi utente sono i permessi individuali per l'utente john e sam. Il campo della maschera qui si applica solo alle autorizzazioni aggiuntive che abbiamo concesso all'utente e ai gruppi. Se la maschera è impostata su rwx, le autorizzazioni di lettura, scrittura ed esecuzione verranno concesse a utenti/gruppi aggiuntivi. Se la maschera è impostata su r-x, l'autorizzazione di scrittura non sarà concessa a utenti/gruppi aggiuntivi. In generale, NON imposta mask su qualcosa di diverso da rwx. Il valore della maschera non influisce sulle autorizzazioni utente/gruppo/altri UNIX standard.
File senza ACL
Se esegui il comando getfacl su un file senza ACL, le righe aggiuntive "user:" e "mask" non verranno visualizzate e verranno mostrate le autorizzazioni file standard.
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
Creazione e gestione di FACL
Il setfacl il comando viene utilizzato per impostare l'ACL sul file specificato. Per dare un accesso rw all'utente john sul file /tmp/test :
# setfacl -m u:john:rw /tmp/test
L'opzione -m dice a setfacl di modificare gli ACL sui file menzionati nella riga di comando. Invece dell'utente john possiamo avere un gruppo per avere un'autorizzazione specifica sul file :
# setfacl -m g:accounts:rw /tmp/test
È anche possibile impostare FACL per più utenti e gruppi con un singolo comando:
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
FACL predefinite nelle directory
Gli ACL predefiniti vengono creati solo nelle directory. Quando imposti gli ACL predefiniti sulle directory, a tutti i file creati all'interno di quella directory verrà assegnata automaticamente anche quella FACL predefinita.
Per creare una FACL predefinita su una directory:
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
Ora crea un nuovo file nella directory degli account ed elenca la FACL sul file:
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
Rimozione delle FACL
Per rimuovere FACL, usa il comando setfacl con l'opzione -x :
# setfacl -x u:john /tmp/test
Il comando precedente rimuove l'ACL per l'utente john nel file /tmp/test. Gli ACL per altri utenti/gruppi, se presenti, rimangono inalterati.
Per rimuovere tutti gli ACL associati a un file, utilizzare l'opzione -b con setfacl :
# setfacl -b /tmp/test
Backup delle FACL
Molte volte, il software di backup potrebbe non copiare i metadati relativi alla FACL sui file. In tal caso, potresti voler eseguire il backup delle informazioni FACL sui file. Ora, la FACL su tutti i file in una directory (incluse tutte le sottodirectory) può essere copiata in un unico file.
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
Ripristino delle FACL
Quando si ripristinano i file nella directory /accounts, è necessario ripristinare le FACL associate ai file in quella directory. PER farlo usa il file di backup FACL accounts_facl insieme al –ripristino opzione :
# setfacl --restore=accounts_facl