I diritti di accesso a file e directory
di Panther e Suppo
Se un file o una directory è di mia proprietà allora posso impostare a mio piacimento i suoi attributi (ossia diritti di accesso). Il comando è chmod (change modes).
La sua sintassi è la seguente:
% chmod chi azione cosa nomefile
dove:
- il parametro 'chi' può essere u (user) g (groups) o (others) a (all indica contemporaneamente i tre tipi di utente.)
- il parametro 'azione' può essere + (aggiungere) - (togliere)
- il parametro cosa può essere r (read) w (write) x (execute)
- il campo 'nomefile' è il file o la directory oggetto del cambiamento.
Vediamo ora degli esempi pratici. Supponiamo di voler aggiungere accesso, lettura e scrittura a tutti nella directory pippo:
drwx------ rossi users 512 pippo
Il modo più semplice è
% chmod a+rwx pippo
ovvero "aggiungi (+) a tutti (a) i diritti di lettura (r), scrittura (w) e accesso (x) al file pippo " (che poi è una directory perché c'é d). Il risultato e':
drwxrwxrwx rossi users 512 pippo
Altro esempio. Supponiamo di voler rendere il file
-r-------- verdi users 4096 paperino
leggibile da tutti e scrivibile solo dal proprietario:
% chmod a+r paperino
% chmod u+w paperino
E il risultato è:
-rw-r--r-- verdi users 4096 paperino
Un metodo più sbrigativo per assegnare gli attributi ad un file si basa sul sistema di numerazione ottale:
supponiamo di attribuire dei valori numerici ai permessi
possibili:
Lettura = 4 (r)
Scrittura = 2 (w)
Esecuzione = 1 (x)
(Ricordatevi che per una directory x significa accesso).
In tale maniera, eseguendo delle semplicissime somme:
0 = Nessun permesso -
1 = Esecuzione x
2 = Scrittura w
3 = Esecuzione + Scrittura wx
4 = Lettura r
5 = Esecuzione + Lettura rx
6 = Scrittura + Lettura rw
7 = Esecuzione + Scrittura + Lettura rwx
Se affianchiamo i tre codici di accesso user/groups/others otteniamo dei numeri di tre cifre, ognuna delle quali indica i permessi di ogni tipo di utente in modo sintetico.
Per esempio:
rwxrwxrwx 777
rw-rw-rw- 666
r--r--r-- 444
rwx------ 700
rw-r--r-- 644
e cosi' via.... Perciò è possibile inglobare in un solo
colpo tutti gli accessi di ogni singolo tipo di utente.
Esiste allora la sintassi alternativa di chmod:
chmod codice nomefile
Esempio. Il secondo esempio sulla prima sintassi di chmod
voleva trasformare
-r-------- verdi users 4096 paperino
nel file:
-rw-r--r-- verdi users 4096 paperino
e necessitava di 2 chmod consecutivi, il primo per assegnare a+r e il secondo per assegnare u+w. Con la sintassi alternativa di chmod è possibile fare il tutto in un solo colpo, usando:
% chmod 644 paperino
Altro esempio. Supponiamo di avere il file
-rw-rw-rw- bianchi superuser 1234 pluto
Se eseguiamo:
% chmod o-rw pluto
oppure
% chmod 660 pluto
invece di ottenere:
-rw-rw---- bianchi superuser 1234 pluto
si ottiene il messaggio:
Permission denied
Questo perchè io (rossi) sto tentando di modificare gli attributi di un file che non mi appartiene (è di bianchi)
Se sono proprietario di un file e volessi "regalarlo" a qualcuno, cioé fare in modo che questo qualcuno ne divenga il nuovo proprietario, esiste il comando chown (change owner).
La sua sintassi è:
chown nuovoproprietario.nuovogruppo file
Vediamo gli esempi. Supponiamo che rossi, dopo aver depositato nella mia directory il file:
-rw-rw-rw- rossi superuser 1234 pluto
voglia fare in modo che esso divenga di mia proprietà.
Dovrà allora eseguire:
% chown verdi.users pluto
Il risultato sarà:
-rw-rw-rw- verdi users 1234 pluto.