Filesystem: i permessi sui files

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Impostare o modificare i permessi su files e directory

Modificare il proprietario o il gruppo di un file

In ambito Unix e Gnu/Linux, quando un file viene creato esso appartiene all'utente che l'ha creato e al gruppo principale cui l'utente appartiene.
Il comando chown (CHange OWNership) permette di modificare sia l'utente sia il gruppo proprietario di un file.
La sua sintassi:

chown [-fhv] [-R [-L | -P]] owner[:group] file ...

I possibili attributi hanno questi significati:

  • -f : Non riporta alcun messaggio d'errore nel caso in cui il comando non abbia successo
  • -h : Se il file è un link simbolico, cambia l'uid e il gid del link
  • -L : Se è specificata l'opzione -R, segue tutti i link simbolici
  • -P : Se è specificata l'opzione -R, nessun link è seguito
  • -R : Cambia uid e gid ricorsivamente in tutti i files e sottocartelle a partire dal file specificato
  • -v : L'opzione verbose serve per avere un output dettagliato sui risultati del comando eseguito

Almeno uno tra il proprietario (owner) e il gruppo (group) va specificato. Se viene specificato il gruppo, questo deve essere preceduto dal segno dei due punti (:). Il proprietario e il gruppo possono essere indicati sia tramite user/group name sia tramite uid e gid.

Esempi

Nel seguente esempio vogliamo di assegnare al file "filetest1" l'utente proprietario "utente1":

# chown utente1 filetest1

Per verificare la modifica apportata utilizziamo il comando seguente:

# ls -lh filetest1

Per modificare l'utente proprietario di una directory e tutti i file contenuti al suo interno possiamo utilizzare l'opzione -R:

# chown utente1 -R directory1

Per modificare utente e gruppo proprietario di un file:

# chown utente1:gruppo1 filetest1

Modificare il gruppo di un file o una directory

Chgrp è un comando, dalla sintassi simile a chown, per cambiare solo il gruppo proprietario di un file:

# chgrp  gruppo1  filetest1

Modificare i permessi sui files

Il comando che permette di gestire i permessi su file e directory è chmod.
Ci sono due modi per impostare i permessi utilizzando il comando chmod, la modalità simbolica e la modalità numerica ottale.

Modalità simbolica di chmod

# chmod u|g|o|a|+rwx  file1/directory1

Significato delle opzioni disponibili del precedente comando:

  • u = user - applica i permessi all'utente proprietario del file,
  • g = group - applica i permessi al gruppo proprietario del file,
  • o = other - applica i permessi ad altri utenti,
  • a = all - applica i permessi a tutti gli utenti,
  • + = questo operatore logico aggiunge i permessi specificati,
  • - = questo operatore logico rimuove i permessi specificati,
  • r = indica il permesso di lettura,
  • w = indica il permesso di scrittura,
  • x = indica il permesso di esecuzione.
  • s = indica l'opzione setuid.
  • t = indica l'opzione sticky.

Esempi

Rimuovere su una directory chiamata "directory1" i permessi di lettura(r), scrittura(w) ed accesso(x) per gli utenti gruppo(g) e altri(o):

$ chmod go-rwx directory1

Aggiungere i permessi di lettura(r) ed esecuzione(x) solo per l'utente proprietario(u), rimuovendo prima eventuali permessi abilitati per tutti gli utenti:

$ chmod a-rwx filetest1
$ chmod u+rx filetest1

Alterare il privilegio di esecuzione di un file:

$ chmod +s filetest1
$ chmod g+s filetest1

Nel primo caso se il file risulta eseguibile per chiunque, allora il file sarà eseguito sempre e comunque come se a lanciarlo fosse sempre il proprietario, a prescindere dall'utente che realmente lo avvia. Il secondo caso è simile al precedente, ma il file verrebbe eseguito sempre come se a lanciarlo fosse un membro del gruppo associato al file. Evidentemente quest'opzione nel primo caso ha senso solo se il file risulta eseguibile oltre che per il proprietario almeno anche dal gruppo associato, mentre nel secondo caso solo se il file risulta eseguibile per tutti. In generale quest'opzione risulta potenzialmente pericolosa proprio per il fatto di permettere l'esecuzione di un file "impersonando" qualcun altro.

Permettere l'eliminazione di file e sottocartelle solo ai proprietari:

$ chmod t directory1

Quest'opzione è utile generalmente quando si ha a che fare con cartelle per le quali tutti hanno il permesso di scrivere (quindi anche cancellare); in tal caso tutti possono scrivere nuovi file e sottocartelle, ma nessuno può cancellare quelli altrui in quanto ciò è consentito solo ai rispettivi proprietari.

Modalità numerica ottale di chmod

Un altro modalità per settare i permessi è la modalità numerica ottale, in cui si specifica un valore numerico composto da quattro cifre, ognuna rappresentata da un valore numerico che va "0" a "7", come per esempio "2741".
Il valore che va da "0" a "7" rappresenta in forma numerica i permessi come di seguito riportato:

 4 è uguale a lettura(r),
 2 è uguale a scrittura(w),
 1 è uguale a esecuzione(x),
 0 rimuove i permessi.

Il valore numerico risultante è pari alla somma di tali valori.
Prendendo come esempio il quartetto "2741", il valore della seconda cifra "7", è uguale a 4(lettura) + 2(scrittura) + 1(esecuzione) = 7.
Vediamo di capire adesso il significato delle quattro cifre, per esempio "2741".
Partendo sempre da sinistra, la prima cifra (2) si riferisce agli attributi dei permessi speciali, che vedremo più avanti.
La seconda cifra (7) si riferisce ai permessi per l'utente proprietario.
La terza cifra (4) fa riferimento ai permessi per il gruppo.
La quarta e ultima cifra (1) si riferisce ai permessi per gli altri utenti non del gruppo.

Esempi

Assegnare i permessi di lettura, scrittura ed esecuzione (4+2+1) soltanto per l'utente proprietario del file denominato "filetest1" e nessun permesso per tutti gli altri utenti:

# chmod 0700 filetest1

o in maniera analoga, dal momento che le cifre omesse partendo da sinistra sono considerate "0":

# chmod 700 filetest1

Impostare i permessi di lettura e scrittura (4+2) per l'utente proprietario, e di sola lettura (4) per tutti gli altri utenti:

# chmod 644 filetest1


Impostazioni predefinite

Lo schema di permessi predefinito per ogni utente è 755, tuttavia tale valore può essere cambiato editando il corrispondente file ~/.profile decommentando la voce predefinita umask 022 ed indicando al posto di 022 il valore desiderato. Ad esempio per ottenere uno schema 775 bisognerebbe specificare umask 002, si tratta cioè si specificare quella maschera che sottratta cifra per cifra al valore 777 resituisce lo schema desiderato. Non a caso 022 è la maschera associata allo schema 755, infatti 7-0=7 e 7-2=5.

È possibile definire la maschera predefinita anche altrove, si veda a tal proposito

man pam_umask 8

.

ACL: Access Control List

È un sistema di gestione dei permessi più fine di quello base descritto sopra, che permette ad esempio di specificare particolari permessi anche per quegli utenti che non possiedono una certa cartella, quando di norma invece è possibile specificarli solo per un gruppo di utenti e non per i singoli.

Ferdybassi