Proprietà e permessi

All'inizio di questo capitolo è stato presentato il seguente esempio per l'esecuzione del comando cd:

[newuser@localhost newuser]$ cd /root
bash: /root: Permission denied
[newuser@localhost newuser]$

Si tratta di un esempio delle caratteristiche di sicurezza di Linux. Linux, come UNIX, è un sistema multiutente e i permessi sui file consentono di proteggere l'integrità del sistema da ogni tipo di danno.

Un modo per ottenere l'accesso ai file è digitare il comando su per collegarsi come utente root, perché chi conosce la password di root ha accesso completo.

[newuser@localhost newuser]$ su
Password: vostra password di root
[root@localhost newuser]# cd /root
[root@localhost /root]#

Tuttavia, collegarsi come superutente non sempre conviene, perché è facile modificare o danneggiare file importanti di configurazione.

Tutti i file e le directory hanno un "proprietario", ossia una persona che li ha creati. Voi avete creato il file sneakers.txt (consultate la la sezione Ridirezionamento di input e output) nella vostra directory di login, quindi, questo file vi "appartiene".

Questo significa che possiamo specificare chi ha il permesso di leggerlo, modificarlo o nel caso si tratti di un'applicazione, chi può eseguirlo.

Leggere, scrivere ed eseguire sono le tre azioni principali regolate dai permessi.

Dal momento che ogni utente del sistema è inserito in un gruppo, possiamo anche specificare quali gruppi di utenti possono accedere ai nostri file.

Riesaminiamo il file sneakers.txt con il comando ls utilizzando l'opzione -l (vedere la Figura 10-12).

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Con questa opzione si visualizzano alcuni dettagli aggiuntivi. Possiamo vedere chi può leggere (r) e scrivere (w) il file, il proprietario (newuser) e a quale gruppo di utenti appartiene (newuser).

SuggerimentoIl vostro gruppo di default
 

Ricordate che il vostro gruppo di default è lo stesso del vostro nome di login.

Figura 10-12. Permessi per sneakers.txt

Di fianco al nome del gruppo, sulla destra, sono presenti informazioni sulla dimensione, la data, l'ora di creazione e il nome del file.

-rw-rw-r--

La prima colonna (mostrata qui di seguito) indica i permessi attuali e ha dieci posizioni. La prima rappresenta il tipo di file. Le altre posizioni sono in realtà tre insiemi di permessi per tre categorie differenti di utenti.

Le categorie sono: il proprietario del file, il gruppo a cui appartiene il file e "altri", ossia utenti e gruppi diversi dal proprietario del file (newuser) e dal suo gruppo (newuser).

-    (rw-)        (rw-)   (r--)    1 newuser newuser
|      |            |      |
tipo proprietari  gruppi  altri  

Nella prima posizione, che specifica il tipo di file, potete trovare uno dei valori seguenti:

Dopo il primo carattere, nei tre gruppi che seguono, è possibile specificare uno dei valori seguenti:

Quando in uno di questi campi compare un trattino in uno di questi campi, significa che un particolare permesso non è stato concesso.

Osserviamo nuovamente la prima colonna del file sneakers.txt e identifichiamo i suoi permessi (vedere la Figura 10-13).

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt
[newuser@localhost newuser]$

Figura 10-13. Un esempio più dettagliato sui permessi

Il proprietario del file, in questo caso newuser, ha i permessi di lettura e scrittura per i file; il file non è un programma, perciò newuser non ha il permesso di eseguirlo. Anche il gruppo newuser ha i permessi di lettura e scrittura per sneakers.txt, ma non di esecuzione.

Gli ultimi tre caratteri si riferiscono agli utenti che non sono newuser e che non appartengono al gruppo newuser. Questi utenti possono leggere il file ma non possono scriverlo o eseguirlo.

Per cambiare i permessi del file sneakers.txt utilizzate il comando chmod.

Nel file originale sono presenti i seguenti permessi:

-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Se siete il proprietario del file o se siete collegati come utente root, potete modificare i permessi per il proprietario, il gruppo e altro.

In questo momento, solo il proprietario e il gruppo possono leggere e scrivere il file. Gli altri utenti o gruppi possono leggere il file, ma non scriverlo (r--).

CautelaImportanza dei permessi
 

Non dimenticate che i permessi dei file sono importanti per la sicurezza. Se chiunque potesse leggere, scrivere o eseguire i vostri file, aumenterebbe il rischio di modifica, danneggiamento o cancellazione dei file. Come regola, dunque, concedete i permessi di scrittura e di lettura solo a chi davvero ne ha bisogno.

Nel nostro esempio, supponiamo di voler concedere a un gruppo il permesso di scrittura su un file, in modo che possano leggerlo, scriverci sopra e salvarlo. Ciò significa che dovremo cambiare i permessi nella sezione "altri".

Poiché siete proprietari del file, non dovete collegarvi come utente root. Innanzitutto date uno sguardo al file digitando al prompt:

ls -l sneakers.txt

Il comando precedente visualizza le seguenti informazioni:

-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Adesso digitate:

chmod o+w sneakers.txt

Per controllare i risultati, visualizzate ancora i dettagli del file. Ora il vostro file dovrebbe essere simile a quanto segue:

-rw-rw-rw-    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

A questo punto, chiunque può leggere o scrivere il file (vedere la Figura 10-14).

Figura 10-14. Cambiare i permessi per sneakers.txt

Il comando o+w indica al sistema che desiderate concedere ad "altri" il permesso di scrittura per il file sneakers.txt.

Per rimuovere i permessi di lettura e scrittura per sneakers.txt, utilizzate il comando chmod:

chmod go-rw sneakers.txt

Il risultato sarà simile al seguente:

-rw-------    1 newuser newuser    150 Mar 19 08:08 sneakers.txt

Digitando go-rw, avete indicato al sistema di rimuovere i permessi di lettura e scrittura relativi al file sneakers.txt per il gruppo e gli "altri".

Potete immaginare queste impostazioni come una specie di stenografia quando desiderate cambiare i permessi con chmod, poiché tutto ciò che vi occorre ricordare sono pochi simboli e lettere da associare al comando chmod.

Ecco una lista delle opzioni possibili:

Identità

u — l'utente che possiede il file (ossia il proprietario)

g — il gruppo a cui appartiene l'utente

o — altri (né il proprietario né il gruppo del proprietario)

a — tutti, ossia (u, g e o)

Permessi

r — accesso di lettura

w — accesso di scrittura

x — accesso di esecuzione

Azioni

+ — aggiungi permesso

- — rimuovi permesso

=— rendi unico il permesso

NotaUn altro permesso
 

Un altro simbolo di permesso è t, chiamato anche "sticky bit". Se a un file viene assegnato uno sticky bit, un utente che vuole rimuovere o rinominare quel file deve esere il proprietario del file e della directory deve aver il permesso di scrittura o collegarsi come root (vedere la la sezione Proprietà dei file nel Capitolo 11).

Desiderate provare? Rimuoviamo qualsiasi tipo di permesso dal file sneakers.txt.

chmod a-rwx sneakers.txt

Ora, controllate se riuscite a leggere il file:

[newuser@localhost newuser]$ cat sneakers.txt
cat: sneakers.txt: Permission denied
[newuser@localhost newuser]$

Ha funzionato! Ma, dal momento che il file vi appartiene, potete modificare i permessi quando volete e riportarli alla situazione di partenza (vedere la Figura 10-15).

[newuser@localhost newuser]$ chmod u+rw sneakers.txt
[newuser@localhost newuser]$ cat sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!
[newuser@localhost newuser]$

Figura 10-15. Rimozione e ripristino dei permessi

Ecco alcuni esempi di impostazioni che possiamo utilizzare con chmod:

Aggiungendo l'opzione -R, possiamo cambiare i permessi per l'intero albero della directory in cui ci troviamo.

Esiste tuttavia una limitazione, dal momento che non possiamo "eseguire" una directory come se fosse un'applicazione. Quando aggiungiamo o rimuoviamo i permessi di esecuzione per una directory, stiamo in realtà concedendo (o vietando) i permessi di ricerca dentro questa directory.

Per consentire a chiunque di avere accesso di lettura e scrittura a qualsiasi file nella directory tigger, digitate:

chmod -R a+rw tigger

Ma se non concediamo ad altri i permessi di esecuzione su tigger, non serve a molto limitare l'accesso in lettura e scrittura, perché nessuno può entrare nella directory, a meno che non conosca l'esatto nome del file.

Digitate per esempio:

chmod a-x tigger

per negare i diritti di esecuzione a tutti gli utenti.

Ecco cosa accade se proviamo a entrare nela directory tigger (usando cd).

[newuser@localhost newuser]$ cd tigger
bash: tigger: Permission denied
[newuser@localhost newuser]$

Ripristinate i diritti di accesso al proprietario o al gruppo.

chmod ug+x tigger

Ora, se controllate il vostro lavoro con ls -dl vedrete che solo gli "altri" non hanno accesso a tigger.