domenica 29 aprile 2012

Problemi con Hard Disk esterni ed accesso ai file in Ubuntu? Potrebbe essere un problema di permessi dei file


Premessa
I sistemi Unix-like gestiscono tutto come file, le directory tramite cui sono ordinati i file sono anch'esse file, lo stesso vale per i dispositivi, i singoli processi, ecc. Tutti i file hanno associati un utente proprietario, un gruppo di utenti e dei permessi che ne regolano l'accesso. Solo il super utente "root" ha la possibilità di accedere a qualsiasi file nel sistema senza tenere conto dei permessi.

Utilizziamo il Terminale
Il terminale è lo strumento che ci permette di visualizzare ed eventualmente modificare i proprietari ed i permessi di accesso ai file. Questo potente e flessibile strumento è temuto e ritenuto troppo complicato da molti utenti, soprattutto da quelli poco pratici degli ambienti Unix-like, ma in realtà, con un minimo di pratica, si dimostra molto più efficace e veloce di qualsiasi gestore di file con interfaccia grafica.

Visualizzare proprietari e permessi con il comando ls
Per poter visualizzare i proprietari ed i permessi dei file possiamo usare il comando ls con l'opzione -l, digitiamo quindi:
ls -l
e vedremo la lista dei file contenuti nella directory corrente arricchita da diverse informazioni, come ad esempio:

drwxr-xr-x 2 massi massi 4096 feb 7 14:52 Documenti
-rw-r--r-- 1 massi massi 179 feb 7 14:36 examples.desktop
drwxr-xr-x 2 massi massi 4096 apr 24 11:28 Immagini
drwxr-xr-x 2 massi massi 4096 feb 7 14:52 Modelli
drwxr-xr-x 2 massi massi 4096 feb 7 14:52 Musica
drwxr-xr-x 2 massi massi 4096 feb 7 14:52 Pubblici
drwxr-xr-x 5 massi massi 4096 apr 27 16:43 Scaricati
drwxr-xr-x 2 massi massi 4096 apr 28 13:15 Scrivania
drwxr-xr-x 2 massi massi 4096 apr 27 23:42 Video

la prima stringa di lettere rappresenta i permessi di accesso ai file, analizziamo insieme quella relativa alla directory Documenti:
d il primo carattere, ci informa che il file è una directory;
rwx è la prima terna di caratteri che rappresentano i permessi di accesso del proprietario, r sta per read (lettura), w sta per write (scrittura) e x sta per execute (esecuzione). Quindi il proprietario ha la facoltà di leggere, scrivere ed eseguire il file.
r-x è la seconda terna e rappresenta i permessi del gruppo a cui appartiene il file. In questo caso gli appartenenti al gruppo hanno facoltà di lettura ed esecuzione, ma non di scrittura.
r-x è l'ultima terna e si riferisce a tutti gli altri utenti. I permessi sono gli stessi riservati al gruppo, cioè lettura ed esecuzione.

Successivamente abbiamo il nome del proprietario e quello del gruppo, tutti i file sono di proprietà dell'utente massi e del gruppo massi.

Modificare il proprietario e il gruppo dei file
Per modificare il proprietario e il gruppo di un file usiamo il comando chown.

Ad esempio creiamo un file di prova con il seguente comando:

touch prova

Il comando touch creerà un file con il nome prova, il proprietario e il gruppo sarà quello dell'utente corrente. Se volessimo cambiare il proprietario del file prova con l'utente paolo ed il gruppo lavoro scriveremo:

sudo chown paolo:lavoro prova

Ora il proprietario sarà paolo ed il gruppo lavoro. Come vedete dall'esempio è necessario usare il comando sudo per poter ottenere il permesso di modificare il proprietario ed il gruppo di un file.

Modificare i permessi di accesso di un file
Per modificare i permessi di accesso di un file utilizziamo il comando chmod, anche in questo caso è necessario utilizzare sudo.

I permessi di accesso di prova sono -rw-rw-r--, che vuol dire accesso in lettura e scrittura per il proprietario e gli appartenenti al gruppo, accesso solo in lettura per gli altri. Nessuno ha il permesso di eseguire il file.

La sintassi del comando è: chmod [ugoa] [+-=] [permessi] [file]

Il primo gruppo di parametri serve ad indicare a quali tipologia di utenti vogliamo applicare le modifiche di accesso.
u sta per user, cioè il proprietario del file.
g sta per group, cioè il gruppo.
o sta per others, cioè tutti gli altri.
a sta per all, tutti senza distinzioni.
Ad esempio, volendo modificare i permessi di accesso al proprietario e al gruppo scriveremmo ug, se invece volessimo modificare i permessi agli altri utenti scriveremmo o, se ancora volessimo applicarle a tutti scriveremmo a oppure ugo.

Il secondo gruppo di parametri serve ad indicare se vogliamo aggiungere un permesso con + o toglierlo con -.

Nel terzo gruppo di parametri andremo a specificare quali permessi vogliamo modificare, quindi r per lettura, w per scrittura e x per esecuzione.

Torniamo al nostro file d'esempio prova e poniamo il caso volessimo aggiungere il permesso in scrittura per tutti gli altri utenti:

sudo chmod o+w prova

Ora i permessi di prova saranno -rw-rw-rw-

Problemi con Hard Disk esterni causati dai permessi di accesso

Se vi è capitato di collegare un hard disk esterno e questo non appare nell'elenco delle periferiche nel Nautilus, mentre su un altro sistema viene riconosciuto senza problemi, allora potreste avere un problema di permessi di accesso.

Provate a collegare l'hard disk e poi aprite il Terminale e digitate il comando:

cd /media

per impostare come directory corrente /media. In questa directory troveremo tutte le periferiche collegate rappresentate da rispettive directory. Proviamo a visualizzarne il contenuto con le informazioni dettagliate dei proprietari e dei permessi di accesso con il comando:

ls -l

Se vedete una directory con il nome dell'hard disk che il Nautilus si rifiuta di mostrarvi allora questa è la conferma che il problema sta nei permessi di accesso.

Qui entra in gioco il permesso di accesso in esecuzione di cui non abbiamo parlato in precedenza. Questo permesso, applicato ai file eseguibili, permette all'utente di avviare l'esecuzione del file. Per i file di tipo directory invece assume un altro ruolo, cioè permette l'accesso e l'utilizzo della directory stessa. Se ad esempio utilizziamo il comando cd su una directory che non ha il permesso in esecuzione, questo fallirà e non riuscirà ad impostare la directory corrente.

Detto questo, torniamo al nostro hard disk che poniamo il caso si chiami esterno. Se vogliamo che qualunque utente possa accedere all'hard disk possiamo verificare che i permessi di accesso r (in lettura) e x (in esecuzione) siano garantiti a tutti. Se così non fosse possiamo modificare i permessi di accesso digitando il comando:

sudo chmod a+rx esterno

Ora sul Nautilus dovreste poter vedere il disco esterno.

In questo breve tutorial ho parlato molto brevemente dei comandi chown e chmod, per ulteriori informazioni dettagliate sulle opzioni e sui parametri accettati da questi comandi vi consiglio di guardare la documentazione offerta con il comando man.
Ad esempio digitando man chown avrete accesso alla documentazione dettagliata del comando.