Linux shell: impostare una cartella condivisa dove tutti i file sono modificabili da gruppo

Tags: 

 

Se si vuole avere una cartella condivisa da più utenti, nella quale tutti possono inserire file e vedere/manipolare anche i file degli altri, senza problemi di diritti, la soluzione non è immediata. I diritti di creazione file per un utente loggato e/o le sue impostazioni di gruppo di default (in particolare per l'utente root) possono creare l'inconveniente che alcuni file non sono leggibili da tutti.

Per evitare questo usiamo 2 caratteristiche della gestione permessi di linux: il flag "s" (setUID) e la gestione FACL (file access control list).

  • Il flag setUID, associato alle directory e ai permessi di gruppo, fa si che tutti i file (e le sottodirectory) ereditino lo stesso gruppo del padre, a prescindere dall'utente che li ha creati. Per impostare il flag usiamo il comando:
chmod g+s <dir>

 

  • Le regole FACL associate a una directory permettono di specificare i permessi base impostati per i file e le sottodirectory create, sempre a prescindere dall'utente (in funzione della regola specificata). Per impostarli usiamo il comando:
setfacl -d -m <regola> <dir>

 


Con un esempio facciamo prima. Se vogliamo fare in modo che una cartella "/home/shared" sia condivisa per tutti gli utenti del gruppo "users":

chmod g+s /home/shared
setfacl -d -m g::rwx /home/shared
setfacl -d -m o::rx /home/shared

L'ultima riga serve solo se volete stabilire i diritti degli utenti fuori dal gruppo. Per il resto i comandi si commentano da se: il primo imposta il setUID, il secondo fa si che per qualunque utente che crea il file ("::"), i permessi di gruppo vengono impostati a "rwx" (quindi controllo totale).

2 Comments

Aggiungi un commento