3.1.2 Rappresentazione
numerica (ottale)
Ricordando i permessi del file lista_spesa che adesso sono
- $ ls -l
total 4
-rw-rw--- 1 raffaello users 29 Oct 23 13:08 lista_spesa
nella rappresentazione numerica avremo:
Quindi, al permesso in lettura viene assegnato il valore 4,
al permesso in scrittura il valore 2 ed a quello in esecuzione il valore 1 (ottale
perchè viene considerata la numerazione 0-7). Successivamente non si deve
fare altro che sommare, per ogni singola tripletta, i valori dei permessi presenti.
Così per la prima e la seconda tripletta in cui sono presenti i permessi
di lettura e scrittura avremo 4+2=6, mentre per la terza avremo 0, il risultato
finale è che per indicare che il file lista_spesa ha i permessi in lettura
e scrittura per il proprietario ed il gruppo mentre agli altri sono negati tutti
i permessi, basterà dire che il file ha permessi 660, ogni singola cifra
si riferisce alla tripletta ed identifica una particolare combinazione dei tre
permessi (lettura, scrittura ed esecuzione).
Questa nomenclatura è utlizzabile anche con chmod, supponiamo di volere togliere
il permesso di scrittura al gruppo ed all'utente avremo:
- $ chmod 440 lista_spesa
Per fare un ultimo esempio supponiamo di volere dare tutti i permessi
all'utente ed il permesso di esecuzione al gruppo lasciando invariati i permessi
agli altri:
- $ chmod 750 lista_spesa
avremo dando un ls -l
- $ -rwxr-x-- 1 raffaello users lista_spesa
3.1.3
Permessi e directory
Le directory seguono gli stessi principi dei file, una prima differenza è
che all'inizio delle triplette che descrivono i permessi per una directory sarà
presente la lettera d proprio ad indicarci che abbiamo a che fare con una
directory. Inoltre per permesso di esecuzione per una cartella si intende la possibilità
di accedervi, per permesso di lettura la possibilità di visualizzarne i file
e per permesso di scrittura la possibilità di salvarvi e crearvi dei file.
Altra differenza con i file è che nel cambiare i permessi ad una cartella
bisogna stabilire se si vorranno cambiare i permessi anche a tutti i file in essa
contenuti. Se cosi fosse bisogna utilizzare l'opzione -r (recursively)
con il comando chmod.
3.1.4 Dominanza
dei permessi
Un altro punto su cui bisogna soffermarsi è la priorità dei permessi.
Riproponendo l'esempio della directory diario con dentro il file lista_spesa,
abbiamo:
- $ drwxr-xr-x raffaello users 4096 Oct 23 17:09 diario
e
- $ -rwxr-x-- raffaello users lista_spesa
In questo caso l'utente raffaello potrà accedere (permesso
in esecuzione) alla cartella diario e potrà visualizzarne i file (permesso
in lettura). Potrà inoltre aprire il file lista_spesa (permesso in lettura)
e potrà modificarlo (permesso in scrittura).
Cambiando i permessi come segue:
- $ d-wxr-xr-x raffaello users 4096 Oct 23 17:09 diario
$ -rwxr-x-- raffaello users lista_spesa
avremo che, nonostante sul file lista_spesa l'utente raffaello
abbia pieni permessi non ha il permesso di lettura per la cartella che contiene
il file lista_spesa e quindi non potrà visualizzarlo -> neanche aprirlo
(cosa che gli sarebbe consentita dal permesso in lettura sul file).
Questo per ricordare che i permessi sulle directory sono dominanti rispetto quelli
dei file che contengono. In generale i permessi negati hanno la precedenza su
quelli concessi.
3.1.5
SUID
Ci sono altri due permessi che possono essere assegnati ad un file eseguibile,
uno di questi è il SUID, che assegna al file in questione l'ID del superutente
solo in fase di esecuzione. Quindi qualunque utente esegua il file sarà come
se ad eseguirlo fosse il superutete (utile ad esempio per i programmi per connettersi
ad internet). Per impostare questo permesso la sitassi di chmod è il seguente:
- # chmod +s nomefile
|