I diritti di accesso a file e directory

di Panther e Suppo

I diritti di accesso a file e directory 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.

Per commentare e discutere l'articolo clicca qui

AUTORE DEL TESTO
Panther e Suppo

Pubblicato il: 30/08/2001