<Precedenti | Contenuti | Succ.>
chmod – Cambia modalità file
Per modificare la modalità (permessi) di un file o di una directory, il chmod viene utilizzato il comando. Tieni presente che solo il proprietario del file o il superutente può modificare la modalità di un file o di una directory. chmod supporta due modi distinti per specificare i cambiamenti di modalità: la rappresentazione del numero ottale o la rappresentazione simbolica. Tratteremo prima la rappresentazione dei numeri ottali.
Che diamine è Octal?
L'ottale (base 8) e il suo cugino esadecimale (base 16) sono sistemi numerici spesso utilizzati per esprimere numeri sui computer. Noi umani, per il fatto che noi (o almeno la maggior parte di noi) siamo nati con dieci dita, contiamo usando un sistema numerico a base 10. I computer, invece, sono nati con un solo dito e quindi fanno tutto il loro conteggio in binario (base 2). Il loro sistema numerico ha solo due numeri, 0 e 1. Quindi in binario, il conteggio si presenta così:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011...
In ottale, il conteggio viene eseguito con i numeri da zero a sette, in questo modo: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21...
Il conteggio esadecimale utilizza i numeri da zero a nove più le lettere da "A" a "F":
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, LA, SI, C, RE, MI, FA, 10, 11, 12, 13...
Mentre possiamo vedere il senso in binario (dal momento che i computer hanno solo un dito), a cosa servono l'ottale e l'esadecimale? La risposta ha a che fare con la comodità umana. Molte volte, piccole porzioni di dati sono rappresentate sui computer come modelli di bit. Prendiamo ad esempio un colore RGB. Sulla maggior parte dei display dei computer, ogni pixel è composto da tre componenti di colore: otto bit di rosso, otto bit di verde e otto bit di blu. Un bel blu medio sarebbe un numero di 24 cifre:
010000110110111111001101
Ti piacerebbe leggere e scrivere questo tipo di numeri tutto il giorno? Non pensavo così. Ecco dove un altro sistema di numerazione aiuterebbe. Ogni cifra in un numero esadecimale rappresenta quattro cifre in binario. In ottale, ogni cifra rappresenta tre cifre binarie. Quindi il nostro blu medio a 24 cifre potrebbe essere condensato in un numero esadecimale di sei cifre:
436FCD
Poiché le cifre del numero esadecimale si "allineano" con i bit del numero binario, possiamo vedere che la componente rossa del nostro colore è 43, quella verde 6F e quella blu CD.
Al giorno d'oggi, la notazione esadecimale (spesso pronunciata come "hex") è più comune di quella ottale, ma come vedremo presto, la capacità dell'ottale di esprimere tre bit di binario sarà molto utile...
Con la notazione ottale usiamo i numeri ottali per impostare lo schema dei permessi desiderati. Poiché ogni cifra in un numero ottale rappresenta tre cifre binarie, questo corrisponde bene al
schema utilizzato per memorizzare la modalità file. Questa tabella mostra cosa intendiamo:
Tabella 9-4: Modalità file in binario e ottale
Octal | Binario | Modalità file |
0 | 000 | --- |
1 | 001 | --X |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | rx |
6 | 110 | rw |
7 | 111 | rwx |
Utilizzando tre cifre ottali, possiamo impostare la modalità file per il proprietario, il proprietario del gruppo e
mondo:
[io@linuxbox~]$ > pippo.txt
[io@linuxbox~]$ ls -l pippo.txt
-rw-rw-r-- 1 me 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt
[io@linuxbox~]$ ls -l pippo.txt
-rw------- 1 io io 0 2016-03-06 14:52 foo.txt
[io@linuxbox~]$ > pippo.txt
[io@linuxbox~]$ ls -l pippo.txt
-rw-rw-r-- 1 me 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt
[io@linuxbox~]$ ls -l pippo.txt
-rw------- 1 io io 0 2016-03-06 14:52 foo.txt
Passando l'argomento "600", siamo stati in grado di impostare i permessi del proprietario per leggere e scrivere rimuovendo tutti i permessi dal proprietario del gruppo e dal mondo. Sebbene ricordare la mappatura da ottale a binario possa sembrare scomodo, di solito dovrai usarne solo alcuni comuni: 7 (rwx), 6 (rw), 5 (rx), 4 (r--) e 0 (---).
chmod supporta anche una notazione simbolica per specificare le modalità dei file. La notazione simbolica è divisa in tre parti: chi influenzerà la modifica, quale operazione verrà eseguita e quale autorizzazione verrà impostata. Per specificare chi è interessato, viene utilizzata una combinazione dei caratteri "u", "g", "o" e "a" come segue:
Tabella 9-5: Notazione simbolica chmod
Simbolo Significato
Simbolo Significato
u Abbreviazione di "utente" ma indica il proprietario del file o della directory.
g Proprietario del gruppo.
o Abbreviazione di "altri", ma significa mondo.
una abbreviazione di "tutti". La combinazione di "u", "g" e "o".
Se non viene specificato alcun carattere, verrà assunto "all". L'operazione può essere un "+" che indica che è necessario aggiungere un'autorizzazione, un "-" che indica che un'autorizzazione deve essere rimossa o un "=" che indica che devono essere applicate solo le autorizzazioni specificate e che tutte le altre sono da rimuovere.
Le autorizzazioni sono specificate con i caratteri "r", "w" e "x". Ecco alcuni esempi di notazione simbolica:
Tabella 9-6: Esempi di notazione simbolica chmod
Significato della notazione
Significato della notazione
u+x Aggiungi il permesso di esecuzione per il proprietario.
ux Rimuovere il permesso di esecuzione dal proprietario.
+x Aggiungi il permesso di esecuzione per il proprietario, il gruppo e il mondo.
Equivalente a a+x.
o-rw Rimuovere l'autorizzazione di lettura e scrittura da chiunque oltre al proprietario e al proprietario del gruppo.
go=rw Imposta il proprietario del gruppo e chiunque oltre al proprietario disponga dei permessi di lettura e scrittura. Se il proprietario del gruppo o il mondo in precedenza avevano i permessi di esecuzione, vengono rimossi.
u+x,go=rx Aggiungi i permessi di esecuzione per il proprietario e imposta i permessi di lettura ed esecuzione per il gruppo e gli altri. Specifiche multiple possono essere separate da virgole.
Alcune persone preferiscono usare la notazione ottale, ad alcune persone piace molto il simbolico. La notazione simbolica offre il vantaggio di consentire di impostare un singolo attributo senza disturbare gli altri.
Date un'occhiata al chmod pagina man per maggiori dettagli e un elenco di opzioni. Una parola di cautela per quanto riguarda l'opzione “--recursive”: agisce sia su file che su directory, quindi non è così utile come si potrebbe sperare poiché, raramente vogliamo che file e directory abbiano gli stessi permessi.