giovedì 28 maggio 2009

Cambiare i permessi di file e cartelle in Ubuntu

I permessi dei file ci attanagliano spesso e volentieri. Quante volte abbiamo scoperto che quel problema che tentavamo di risolvere da giorni, era dovuto a dei permessi sbagliati di qualche file nascosto nel nostro pc?
L'universo dei permessi di Ubuntu può sembrare molto più complicato di quello che è in realtà, bastano poche conoscenze ed il gioco è fatto.
Cominciamo a vedere come fare per sapere quali sono i permessi dei file che si trovano in una determinata cartella. Supponiamo di voler conoscere i permessi dei file che si trovano nella nostra home:
ls -l /home/NOMEUTENTE
e ci apparirà un output del genere:

Il primo carattere rappresenta una caratteristica specifica del file, ad esempio se è una cartella abbiamo la d di directory. Nel caso in cui una cartella fosse un collegamento ad un'altra troveremo alla destra del nome della cartella una freccia con il percorso della directory di cui è il collegamento.
I successivi 9 caratteri sono da guardare come 3 terne ed indicano i permessi, rispettivamente di:
  1. proprietario (owner)
  2. gruppo (group)
  3. altri utenti (other)
Le lettere possono essere r, w o x, il loro significato varia a seconda del fatto che si riferiscano a singoli file o cartelle. Nel caso di file:
  • r = read, permette di leggere il file, senza modificarlo;
  • w = write, permetti di scrivere, sovrascrivere, modificare il contenuto del file;
  • x = execute, permette di eseguire il file, se questo è un eseguibile.
Se invece stiamo valutando i permessi di una cartella:
  • r consente la visualizzazione del contenuto della cartella, con il comando ls;
  • w consente l'eliminazione o la creazione di file all'interno della cartella;
  • x consente di accedere alla cartella, magari con il comando cd, anche nel caso in cui non se ne possa visualizzare il contenuto.
Dobbiamo notare che se applichiamo il permesso di scrittura ad una cartella, anche chi non può accedere ai file contenuti in quella cartella, li potrà però cancellare!
Ora che sappiamo interpretare i permessi, dobbiamo poterli cambiare! Lo possiamo fare in due modi, con le lettere o coi numeri. Sono tutti e due piuttosto semplici, richiedono solo un po' di memoria e l'utilizzo del comando chmod.
Proviamo prima con le lettere. Abbiamo visto che i permessi caratterizzano proprietario, gruppo e altri. Nel terminale queste tre entità vengono indicate così:
  • u è il proprietario
  • g è il gruppo
  • o sono gli altri
Abbiamo già visto come vengono sintetizzate le varie restrizioni.
Ci aiuteremo con ancora tre simboli:
  • + per aggiungere un permesso
  • - per togliere un permesso
  • = per impostare un permesso
Ora sappiamo tutto! Immaginiamo allora di aggiungere la possibilità di scrittura del file prova1, che si trova nella home, per il suo proprietario:
chmod u+w /home/NOMEUTENTE/prova1
Leviamo ora la scrittura del guppo:
chmod g-w /home/NOMEUTENTE/prova1
Cambiamo idea e facciamo in modo che proprietario, gruppo e altri possano leggere, scrivere e eseguire il nostro file:
chmod ugo+rwx /home/NOMEUTENTE/prova1

Proviamo ora il metodo con i numeri.
Qua ci dobbiamo ricordare che significato hanno le varie cifre:
  • 0 = nessun permesso
  • 1 = esecuzione
  • 2 = scrittura
  • 3 = 2+1 = esecuzione + scrittura
  • 4 = lettura
  • 5 = 4+1 = lettura + esecuzione
  • 6 = 4+2 = lettura + scrittura
  • 7 = 4+2+1 = lettura + scrittura + esecuzione
Utilizzeremo il comando chmod seguito da un numero di 3 cifre:
  • la prima si riferisce ai permessi del proprietario
  • la seconda ai permessi del gruppo
  • la terza ai permessi degli altri utenti
Cerchiamo allora di impostare il nostro file prova1 in modo che il proprietario possa leggere, scrivere ed eseguire mentre gruppo e altri solo leggere ed eseguire:
chmod 755 /home/NOMEUTENTE/prova1
Per cambiare i permessi di una cartella e contemporaneamente di tutti i file in essa contenuti, dobbiamo aggiungere -R subito dopo il comando chmod. Supponiamo di voler dare a tutti i permessi di lettura, scrittura ed esecuzione della cartella share nella home e dei file che contiene:
chmod -R 777 /home/NOMEUTENTE/share

Per poter cambiare i permessi di file e cartelle di cui non si è proprietari bisogna agire da root, eseguendo i comandi che abbiamo indicato finora con davanti sudo. Ovviamente, come ogni volta che si agisce da root, dobbiamo agire con molta cautela, cambiare i programmi di determinati file del sistema può essere anche molto pericoloso.

Nessun commento:

Posta un commento