Leggere questo paragrafo con attenzione. Una chiara comprensione delle autorizzazioni dei file è importante per molte operazioni quotidiane.
Le autorizzazioni dei file sono un metodo per proteggere file e directory dalla lettura e dalla scrittura da parte di utenti non autorizzati. In alcuni casi può essere opportuno autorizzare altri utenti a leggere determinati file ma non a modificarli. In altri casi si possono avere sul proprio sistema file eseguibili (programmi) da condividere. Le autorizzazioni consentono di controllare il tipo di accesso degli altri utenti ai propri file.
I tipi di autorizzazioni disponibili per file e directory sono i seguenti:
r - autorizzazione di lettura. È necessaria per esaminare e copiare un file o per elencare il contenuto di una directory.
w - autorizzazione di scrittura. È necessaria per modificare, cancellare o rinominare un file, o per aggiungere o eliminare un file da una directory.
x - autorizzazione di esecuzione. È necessaria per utilizzare un file eseguibile, ad esempio un programma, o per accedere a una directory.
Le autorizzazioni possono essere impostare per tre categorie di utenti:
Gruppo - altri utenti appartenenti allo stesso gruppo dell'utente (ad esempio tutti gli utenti di uno stesso reparto). I gruppi vengono creati dall'amministratore del sistema.
In precedenza è stato descritto l'uso del comando ls per l'elencazione dei file. Abbinando al comando ls l'opzione -l, è possibile ottenere un elenco dei file in formato lungo. I file e le directory vengono elencati in ordine alfabetico. La Figura 3-2 illustra questo metodo di visualizzazione:
Il primo carattere della riga indica il tipo di file. Un trattino (-) indica un file, una d una directory, mentre altri caratteri possono indicare altri tipi di file speciali.
I nove caratteri successivi indicano le autorizzazioni del file o della directory. La sequenza è formata da tre gruppi di tre caratteri ciascuno, indicanti rispettivamente le autorizzazioni del proprietario, del gruppo e degli altri utenti. Le autorizzazioni di filevuoto, rw-r--r--, indicano che il proprietario può leggere e scrivere il file, il gruppo e gli altri utenti lo possono leggere mentre nessuno lo può eseguire. Le autorizzazioni della directory fiori2, rwxr-xr-x, indicano che tutti gli utenti possiedono l'autorizzazione in lettura ed esecuzione sulla directory, mentre solo il proprietario ha l'autorizzazione in scrittura.
Oltre alle autorizzazioni dei file, l'elenco visualizzato contiene le seguenti informazioni:
Numero dei collegamenti del file o della directory
Nome del proprietario (utente2 in questo caso)
Data e ora dell'ultimo aggiornamento del file o della directory
Nome del file o della directory
Spostarsi nella propria directory home con il comando cd e provare ad eseguire il comando ls -l. (Il risultato sarà naturalmente diverso da quello illustrato nell'esempio.)
Provare ora a digitare il comando seguente:
$ ls -l nomedir |
dove nomedir è il nome di una directory effettivamente presente nel file system. Indicando il nome di una directory, il comando ls -l visualizza le informazioni relative a tutti i file e directory contenuti nella directory specificata.
Alcuni tipi di file non vengono elencati utilizzando il semplice comando ls. I nomi di questi file iniziano con il carattere . ("punto"), come ad esempio .cshrc, .login e .profile. Per elencare anche i "file punto", usare il comando ls -a:
$ ls -a . .. .cshrc .login .profile filevuoto |
Si noti che i file che iniziano con il carattere . sono elencati prima degli altri. L'elenco illustrato contiene due file speciali: il primo è il file ., che rappresenta il riferimento alla directory corrente, il secondo è il file .., che rappresenta il riferimento alla directory di livello superiore.
In genere, i file che iniziano con il carattere . vengono usati dai programmi di utilità del sistema e non vengono modificati dall'utente (a parte alcune eccezioni).
Il comando chmod permette di cambiare le autorizzazioni di un file o di una directory. Questa operazione può essere eseguita solo dal proprietario del file o della directory o da un utente root. La sintassi generale del comando chmod è la seguente:
chmod autorizzazioni nome |
dove autorizzazioni indica le autorizzazioni da modificare e nome è il nome del file o della directory su cui si desidera eseguire l'operazione.
Le autorizzazioni possono essere specificate in vari modi. Qui di seguito viene illustrata una delle forme di indicazione più semplici:
Usare una o più lettere per indicare gli utenti interessati:
u (user - il proprietario)
g (group - il gruppo)
o (other - altri utenti)
a (all - tutte le categorie)
Indicare se le autorizzazioni devono essere aggiunte (+) o eliminate (-).
Usare una o più lettere per indicare le autorizzazioni di interesse:
Nell'esempio seguente, viene aggiunta l'autorizzazione di scrittura alla directory viole per gli utenti appartenenti allo stesso gruppo del proprietario (autorizzazioni diventa perciò g+w e nome viene sostituito con viole):
$ ls -l viole drwxr-xr-x 3 utente2 1024 feb 10 11:15 viole $ chmod g+w viole $ ls -l viole drwxrwxr-x 3 utente2 1024 feb 10 11:15 viole $ |
Come si può osservare, per effetto del comando il trattino (-) nella sequenza di caratteri relativa alle autorizzazioni del gruppo è diventato una w.
Per eliminare dalla stessa directory le autorizzazioni di lettura ed esecuzione degli utenti esterni al gruppo (autorizzazioni viene sostituito in questo caso da o-rx), digitare il seguente comando:
$ ls -l viole drwxrwxr-x 3 utente2 1024 feb 10 11:15 viole $ chmod o-rx viole $ ls -l viole drwxrwx--- 3 utente2 1024 feb 10 11:15 viole $ |
In seguito al comando, la r (lettura) e la x (esecuzione) del gruppo di caratteri relativi alle autorizzazioni degli altri utenti sono state sostituite da trattini (-).
Quando si crea un nuovo file o una nuova directory, il sistema assegna automaticamente le autorizzazioni di default.
In generale, le autorizzazioni di default per i nuovi file sono le seguenti:
-rw-r--r--
Per le nuove directory sono invece le seguenti:
drwxr-xr-x
Perciò, per creare un nuovo file petunia che sia eseguibile dal proprietario (utente2) occorrerà procedere come segue:
$ ls -l petunia -rw-r--r-- 3 utente2 1024 feb 10 12:27 petunia $ chmod u+x petunia $ ls -l petunia -rwxr--r-- 3 utente2 1024 feb 10 12:27 petunia $ |
Per modificare con un solo comando le autorizzazioni di tutte le categorie di utenti, usare l'opzione a. Per creare ad esempio un nuovo file rosa che sia eseguibile da tutti gli utenti, procedere come segue:
$ ls -l rosa -rw-r--r-- 3 utente2 1024 feb 10 11:31 rosa $ chmod a+x rosa $ ls -l rosa -rwxr-xr-x 3 utente2 1024 feb 10 11:31 rosa $ |
In seguito al comando, in tutte le categorie comparirà la lettera x.
È anche possibile cambiare le autorizzazioni di più file e directory utilizzando il carattere speciale *. Ad esempio, per cambiare le autorizzazioni di tutti i file della directory corrente fiori in modo che solo il proprietario vi abbia accesso di scrittura, procedere come segue:
Nell'esempio, l'uso del comando pwd permette di verificare che la directory in cui viene eseguita l'operazione chmod sia la directory corrente.
Finora si è parlato del comando chmod per la modifica delle autorizzazioni in modo relativo rispetto alle impostazioni correnti. Il comando chmod prevede tuttavia un'altra forma di utilizzo, in cui vengono impiegati codici numerici per specificare i diversi tipi di autorizzazioni. Utilizzato in questa forma, chmod permette di impostare le autorizzazioni di un file o di una directory in modo assoluto.
La sintassi di chmod per l'impostazione di autorizzazioni assolute è la seguente:
chmod codnum nome
dove codnum è il codice numerico e nome è il nome del file o della directory su cui si desidera eseguire l'operazione.
Il codice numerico completo è costituito da tre cifre. Ogni cifra viene utilizzata per una delle tre categorie di utenti: proprietario, gruppo e altri. Ad esempio, il comando seguente imposta le autorizzazioni assolute di lettura, scrittura ed esecuzione per il proprietario e per il gruppo e la sola autorizzazione di esecuzione per gli altri utenti:
$ chmod 771 rosa |
La Tabella 3-1 illustra la correlazione tra le autorizzazioni descritte per il file rosa e il codice numerico 771.
Tabella 3-1 Autorizzazioni del file rosa
Autorizzazione |
Proprietario |
Gruppo |
Altri |
---|---|---|---|
Lettura |
4 |
4 |
0 |
Scrittura |
2 |
2 |
0 |
Esecuzione |
1 |
1 |
1 |
Totale |
7 |
7 |
1 |
Ogni colonna della Tabella 3-1 rappresenta una delle categorie di utenti: proprietario, gruppo e altri. Per impostare le autorizzazioni in lettura occorre aggiungere il codice 4 alla colonna appropriata; per impostare le autorizzazioni in scrittura occorre aggiungere un 2, mentre per le autorizzazioni di esecuzione occorre aggiungere un 1. Il totale delle tre colonne indicato nell'ultima riga della tabella rappresenta il codice numerico completo.
Qui di seguito è illustrato un altro esempio dell'uso di questo metodo per impostare le autorizzazioni assolute, con l'aggiunta del comando ls -l per evidenziare il risultato ottenuto:
$ ls -l mughetto -rw-r--r-- 3 utente2 1024 feb 10 11:46 mughetto $ chmod 755 mughetto $ ls -l mughetto -rwxr-xr-x 3 utente2 1024 feb 10 11:48 mughetto $ |
Le autorizzazioni del file mughetto sono state impostate in modo che il proprietario possa leggere, scrivere ed eseguire il file, e in modo che i membri del gruppo e gli altri utenti possano leggerlo ed eseguirlo. La Tabella 3-2 illustra nei dettagli la composizione del codice numerico relativo alle autorizzazioni del file mughetto.
Tabella 3-2 Autorizzazioni del file mughetto
Autorizzazione |
Proprietario |
Gruppo |
Altri |
---|---|---|---|
Lettura |
4 |
4 |
4 |
Scrittura |
2 |
0 |
0 |
Esecuzione |
1 |
1 |
1 |
Totale |
7 |
5 |
5 |
Per applicare al file ciclamino le autorizzazioni di lettura, scrittura ed esecuzione per tutte le categorie di utenti, il comando da eseguire sarà il seguente:
$ ls -l ciclamino -rw-r--r-- 3 utente2 1024 feb 10 11:51 ciclamino $ chmod 777 ciclamino $ ls -l ciclamino -rwxrwxrwx 3 utente2 1024 feb 10 11:53 ciclamino $ |
La Tabella 3-3 illustra la composizione del codice utilizzato per questo esempio.
Tabella 3-3 Autorizzazioni del file ciclamino
Autorizzazione |
Proprietario |
Gruppo |
Altri |
---|---|---|---|
Lettura |
4 |
4 |
4 |
Scrittura |
2 |
2 |
2 |
Esecuzione |
1 |
1 |
1 |
Totale |
7 |
7 |
7 |
Il codice numerico 777 rappresenta il livello massimo di autorizzazioni che è possibile attribuire a un file o a una directory.
Come per la modifica delle autorizzazioni relative, anche nel caso delle autorizzazioni assolute è possibile usare il carattere speciale * per eseguire il comando su tutti i file della directory corrente. Ad esempio, per modificare le autorizzazioni assolute di tutti i file della directory corrente fiori in modo che il proprietario abbia le autorizzazioni di lettura, scrittura ed esecuzione, il gruppo le autorizzazioni di lettura ed esecuzione e gli altri utenti solo l'autorizzazione di esecuzione, inserire il comando seguente:
Nell`esempio viene utilizzato anche il comando pwd per verificare che la directory nella quale si esegue l'operazione sia la directory corrente. Il comando ls -l è inserito solo per illustrare il risultato della modifica delle autorizzazioni. Quando si impostano le autorizzazioni assolute non è necessario conoscere le autorizzazioni correnti.
Per maggiori informazioni sul comando chmod(1), vedere man Pages(1): User Commands.