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]$
	  

Questo è un esempio delle caratteristiche di sicurezza di Linux. Linux, come UNIX, è un sistema multiutente, e i permessi sui file sono una soluzione per proteggere l'integrità del sistema, da ogni evenienza-- malintenzionata o accidentale.

Un modo per avere accesso è tramite il su di root, perchè chi conosce la password di root ha l'accesso completo.

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

Collegarsi come superuser non è sempre conveniente -- perchè è facile compiere degli errori su file importanti di configurazione.

Tutti i file e le directory sono di "proprietà" della persona che le ha create. Abbiamo creato il file sneakers.txt nella nostra login perciò sneakers.txt "appartiene" a noi.

Questo significa che possiamo specificare chi può leggere, scrivere. Inoltre nel caso il file sia un eseguibile è possibile specificare che ha il permesso di esecuzione.

Leggere, scrivere ed eseguire sono le tre impostazioni principali dei permessi.

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 (long) (vedasi Figura 15-16).

[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) ed a quale gruppo di utenti appartiene (newuser).

SuggerimentoIl vostro gruppo di default
 

Ricordatevi che, per default, il gruppo corrisponde al nome dell'utente.

Figura 15-16. Permessi per sneakers.txt

Tra il nome del gruppo ed il nome del file sono presenti le informazioni sulla dimensione del file, la data e l'ora di creazione.

Che significato hanno le lettere e i trattini presenti sulla sinistra? È più facile mostrare il significato con un esempio:

-rw-rw-r--
	  

Ci sono 10 colonne. La prima colonna rappresenta il tipo di file. Le rimanenti 9 colonne sono suddivise in 3 gruppi con 3 differenti categorie di permessi.

Questi tre gruppi si riferiscono rispettivamente al proprietario del file, al gruppo di appartenenza del file, ed "al resto del mondo", cioè tutti gli altri utenti e gruppi al di fuori del proprietario (newuser) e del gruppo (newuser).

In particolare:

 -    (rw-)   (rw-)  (r--)    1 newuser newuser
 |      |       |      |
type  owner   group  others
	  

Il primo campo, che specifica il tipo di file, può avere uno dei seguenti valori:

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

Quando appare 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 leggiamo i suoi permessi (vedasi Figura 15-17).

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

Figura 15-17. Un esempio sui permessi

Il proprietario del file, newuser, ha i permessi di lettura e scrittura per i file; il file non è un programma, perciò newuser non ha il permesso di eseguirlo. Il gruppo newuser ha i permessi di lettura e scrittura per sneakers.txt. Similmente al programma per proprietari newuser, non esiste un permesso di esecuzione per gruppi newuser.

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.

Possiamo utilizzare il comando chmod per cambiare i permessi di un file.

Nel file sneakers.txt possiamo cambiare i permessi con il comando chmod.

Nel file originale sono presenti i seguenti permessi:

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

Dal momento che siamo i proprietari del file -- o siamo collegati come root -- possiamo cambiare i permessi utilizzando tutte le combinazioni.

Attualmente, il proprietario (noi) e gli utenti del gruppo ( newuser) possono leggere e scrivere il file.

Chiunque si trovi al di fuori del nostro gruppo -- può solamente leggere il file (r--).

CautelaI permessi sono necessari
 

Ricordatevi che i permessi sui file sono molto importanti per la sicurezza. Ogni qualvolta permettete a chiunque di leggere, scrivere o eseguire i file, potreste mettere a rischio l'integrità del sistema. Come regola generale, vi consigliamo di evitare il più possibile i permessi di lettura e scrittura agli altri utenti.

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

Dal momento che siamo i proprietari del file, non dobbiamo usare su per poter cambiare i permessi. È sufficiente digitare:

ls -l sneakers.txt
	  

che visualizza le informazioni sul file:

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

Ora digitate:

chmod o+w sneakers.txt
	  

Per controllare i risultati, possiamo elencare di nuovo i dettagli riguardanti i file:

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

A questo punto, chiunque può leggere o scrivere il file (si veda la Figura 15-18).

Figura 15-18. Cambiare i permessi per sneakers.txt

Quando abbiamo digitato o+w, abbiamo deciso di aggiungere i permessi di scrittura per il file sneakers.txt.

Se vogliamo eliminare tutti i diritti di accesso per il file sneakers.txt possiamo utilizzare il comando chmod per eliminare i permessi di lettura e scrittura come segue:

chmod go-rw sneakers.txt
	  

questo sarà il risultato:

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

L'opzione go-rw, significa che "per il gruppo ed il resto del mondo, si vuole rimuovere i permessi di lettura e scrittura al file sneakers.txt."

Queste opzioni sembrano scritte in stile stenografico in modo da cambiare i permessi con chmod, perchè tutto quello che dovete fare è ricordare alcuni simboli e lettere con il comando chmod.

Ecco una lista delle opzioni:

Identità

u -- l'utente proprietario del file

g -- il gruppo al quale l'utente appartiene

o -- il resto del mondo (ne il proprietario ne il gruppo del proprietario)

a -- tutti (u, g, e o)

Permessi

r -- accesso di sola lettura

w -- accesso di sola scrittura

x -- accesso di esecuzione

Azioni

+ -- aggiungere i permessi

- -- rimuovere i permessi

= -- renderlo l'unico permesso

Proviamo? Rimuoviamo i permessi da sneakers.txt -- per tutti gli utenti.

chmod a-rw sneakers.txt
	  

Ora, controlliamo se è possibile leggere il file:

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

Funziona! Non possiamo accedere al file. Visto che il file ci appartiene, possiamo cambiare i permessi a nostro piacimento. (Vedasi Figura 15-19)

[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 15-19. Togliere ed aggiungere nuovamente i 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.

C'è 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 permettere a chiunque di avere l'accesso di lettura e scrittura sul file directory tigger nella nostra directory di login, possiamo digitare:

chmod -R a+rw tigger
	  

Ma se non concediamo ad altri di avere 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.

Per esempio, digitiamo:

chmod a-x tigger
	  

per rimuovere i diritti di esecuzione a tutti gli utenti.

Ecco cosa accade se proviamo ad entrare nella directory tigger:

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

Riconfiguriamo i nostri diritti di accesso e quelli dei gruppi.

chmod ug+x tigger
	  

Ora, se controlliamo il nostro lavoro con il comando ls -dl vedremo che solo gli altri non hanno accesso su tigger.