Permessi

Da UZ wiki.

Ogni file su un sistema linux ha un particolare utente di riferimento, detto utente proprietario del file. Per cambiare il proprietario di un file bisogna usare il comando chown. Ad esempio

byum@heroin:~$ chown claudio filedivertente.txt

imposta il proprietario di filedivertente.txt all'utente claudio.

ACL di AFS

I file nella propria home e nella nobackup sono gestiti tramite AFS. Di conseguenza i permessi sono gestiti tramite le ACL (Access Control List) di AFS e non tramite i classici permessi UNIX (anche se come vedremo anche loro continuano ad avere un ruolo). Le ACL assegnano a ogni cartella una lista di permessi (che sono ereditati da ogni sottocartella e da ogni file contenuto nella cartella). In particolare non è possibile impostare le ACL per ogni singolo file.

Per vedere le ACL di una cartella si usa il comando fs la (list acl)

byum@heroin:~$ fs la
Access list for /afs/uz.sns.it/user/byum is
Normal rights:
  system:administrators rlidwka
  byum rlidwka

Come si vede a ogni gruppo di utenti è associata una lista di permessi. Questi sono

  • l Il permesso di lookup. Questo è il permesso fondamentale. Essenzialmente autorizza l'utente a porre domande sulla cartella. Ci sono pochissime cose però che si possono fare solo col permesso di lookup. Ad esempio è possibile ottenere la lista dei file all'interno della cartella con il comando ls ma non le loro proprietà con il comando ls -l (che necessita anche del permesso di lettura).
  • i Il permesso di insert. Questo autorizza l'utente a creare nuovi file o sottocartelle nella cartella, sia creandoli ex novo che spostandoli. Non permette però di creare file in una sottocartella se le ACL corrispondenti lo vietano.
  • d Il permesso di delete. Questo autorizza l'utente a eliminare file o sottocartelle sia rimuovendoli dal filesystem (ad esempio tramite il comando rm) sia spostandoli in altre cartelle (però è necessario che l'utente abbia il permesso di insert per la cartella di destinazione).
  • a Il permesso di administer. Questo autorizza l'utente a cambiare le ACL della cartella. Tutti gli utenti del gruppo system:administrator e il proprietario della cartella hanno questo permesso implicitamente (cioè anche se non è presente nelle ACL della cartella).
  • r Il permesso di read. Questo autorizza l'utente a leggere i file presenti nella cartella e a ottenerne le proprietà tramite il comando ls -l.
  • w Il permesso di write. Questo permette di modificare i file nella cartella e di cambiarne i permessi UNIX (ad esempio per renderli eseguibili).
  • k Il permesso di lock. Questo permette all'utente di bloccare un file. Tendenzialmente non vi interesserà a meno che non stiate programmando applicazioni che fanno uso di thread, e in tal caso non avete bisogno di spiegazioni.

Per modificare le ACL si usa il comando fs sa (set acl). La sintassi è la seguente

fs sa -dir CARTELLA -acl LISTAPERMESSI

dove CARTELLA è la cartella di cui volete impostare i permessi e LISTAPERMESSI è una lista della forma NOMEGRUPPO PERMESSI. Ad esempio

byum@heroin:~$ fs sa -dir . -acl classediscienze rl systhem:anyuser none

imposta le ACL della cartella corrente al permesso di lettura e lookup per gli utenti del gruppo classediscienze e nessun permesso agli utenti normali (none è una stringa convenzionale per indicare nessun permesso). Questi permessi vanno ad aggiungersi a quelli già esistenti per la cartella. Se si vuole esplicitamente cancellare tutti i permessi preesistenti bisogna usare l'opzione -clear come nel seguente esempio:

byum@heroin:~$ fs sa -clear -dir . -acl byum rlidwka classediscienze rl user none

Notate come in questo caso l'utente si è premunito a non perdere i propri permessi sulla cartella.

I permessi standard UNIX

Come già detto i permessi standard UNIX hanno un ruolo in subordine rispetto alle ACL. In particolare contano solo i bit relativi al proprietario del file. Quei permessi si applicano a qualunque utente sia stato autorizzato dalle ACL a effettuare la relativa operazione. Ad esempio un utente con ACL lr per la cartella potrà leggere un file solo se il proprietario di quel file possiede il permesso di lettura. Analogamente per i permessi di scrittura e di esecuzione. I permessi possono essere visti tramite il comando ls -l. Per modificare i permessi viene utilizzato il comando chmod. Ad esempio

byum@heroin:~$ chmod votiscritto.txt u=r

Quest'impostazione autorizza tutti gli utenti solo a leggere il file e non a modificarlo o eseguirlo.

INSERIRE SPIEGAZIONE DETTAGLIATA DEI PERMESSI UNIX PER I NON ESPERTI.