Che cos’è ACL?
Access control list (ACL) fornisce un meccanismo di permessi aggiuntivo e più flessibile per i file system. È progettato per assistere con i permessi dei file UNIX. ACL ti permette di dare i permessi per qualsiasi utente o gruppo a qualsiasi risorsa del disco.
Uso di ACL :
Pensa a uno scenario in cui un particolare utente non è un membro del gruppo creato da te ma vuoi comunque dare un accesso in lettura o scrittura, come puoi farlo senza rendere l’utente un membro del gruppo, qui entra in scena Access Control Lists, ACL ci aiuta a fare questo trucco.
Fondamentalmente, le ACL sono usate per fare un meccanismo flessibile di permesso in Linux.
Dalle pagine man di Linux, le ACL sono usate per definire diritti di accesso discrezionali più fini per file e directory.
setfacl e getfacl sono usati rispettivamente per impostare ACL e mostrare ACL.
Per esempio :
getfacl test/declarations.h
Output:
# file: test/declarations.h# owner: mandeep# group: mandeepuser::rw-group::rw-other::r--
Lista di comandi per impostare ACL :
1) To add permission for usersetfacl -m "u:user:permissions" /path/to/file2) To add permissions for a groupsetfacl -m "g:group:permissions" /path/to/file 3) To allow all files or directories to inherit ACL entries from the directory it is withinsetfacl -dm "entry" /path/to/dir4) To remove a specific entrysetfacl -x "entry" /path/to/file5) To remove all entriessetfacl -b path/to/file
Per esempio :
setfacl -m u:mandeep:rwx test/declarations.h
Modificare ACL usando setfacl :
Per aggiungere permessi per un utente (utente è il nome utente o ID):
# setfacl -m "u:user:permissions"
Per aggiungere permessi per un gruppo (il gruppo è il nome o l’ID del gruppo):
# setfacl -m "g:group:permissions"
Per permettere a tutti i file o le directory di ereditare le voci ACL dalla directory in cui si trovano:
# setfacl -dm "entry"
Esempio :
setfacl -m u:mandeep:r-x test/declarations.h
Vedi l’immagine sottostante per l’output:
setfacl e getfacl
Vedi ACL :
Per mostrare i permessi :
# getfacl filename
Osserva la differenza tra l’output del comando getfacl prima e dopo aver impostato i permessi ACL usando il comando setfacl.
C’è una linea extra aggiunta per l’utente mandeep che è evidenziata nell’immagine sopra.
Output:
cambia i permessi
Il comando precedente cambia i permessi da rwx a r-x
Rimuovi ACL :
Se vuoi rimuovere i permessi ACL impostati, usa il comando setfacl con l’opzione -b.
Per esempio :
remove set permissions
Se confronti l’output del comando getfacl prima e dopo aver usato il comando setfacl con l’opzione -b, puoi osservare che non c’è nessuna voce particolare per l’utente mandeep nell’output successivo.
Puoi anche controllare se ci sono permessi extra impostati tramite ACL usando il comando ls.
controlla il set di permessi acl con ls
Osserva il primo output del comando nell’immagine, c’è un segno “+” extra dopo i permessi come -rw-rwxr-+, questo indica che ci sono permessi ACL extra impostati che puoi controllare con il comando getfacl.
Usando Default ACL :
L’ACL di default è un tipo specifico di permesso assegnato ad una directory, che non cambia i permessi della directory stessa, ma fa in modo che gli ACL specificati siano impostati di default su tutti i file creati al suo interno. Diamo una dimostrazione: per prima cosa creeremo una directory e le assegneremo un ACL di default usando l’opzione -d:
$ mkdir test && setfacl -d -m u:dummy:rw test