Guida avanzata a Solaris

Sicurezza di file e directory


Nota -

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:

Le autorizzazioni possono essere impostare per tre categorie di utenti:

Visualizzazione delle autorizzazioni e dello stato (ls -l)

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:

Figura 3-2 Visualizzazione delle autorizzazioni e dello stato di file e directory

Graphic

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:

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.

Elencazione dei file "nascosti" (ls -a)

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).

Modifica delle autorizzazioni (chmod)

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:

  1. Usare una o più lettere per indicare gli utenti interessati:

    • u (user - il proprietario)

  2. g (group - il gruppo)

  3. o (other - altri utenti)

  4. a (all - tutte le categorie)

  5. Indicare se le autorizzazioni devono essere aggiunte (+) o eliminate (-).

  6. Usare una o più lettere per indicare le autorizzazioni di interesse:

    • r (read - lettura)

  7. w (write - scrittura)

  8. x (execute - esecuzione)

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:

$ pwd
/home/utente2/fiori
$ ls -l
-rwxrwxrwx  3 utente2          21032 feb 12 10:31 giglio
-rwxrwxrwx  3 utente2          12675 feb 08 09:31 mughetto
-rwxrwxrwx  2 utente2             68 feb 10 11:09 narciso
-rwxrwxrwx  1 utente2           1024 feb 14 16:38 rosa
$ chmod go-w *
$ ls -l
-rwxr-xr-x  3 utente2          21032 feb 12 10:31 giglio
-rwxr-xr-x  3 utente2          12675 feb 08 09:31 mughetto
-rwxr-xr-x  2 utente2             68 feb 10 11:09 narciso
-rwxr-xr-x  1 utente2           1024 feb 14 16:38 rosa
$

Nell'esempio, l'uso del comando pwd permette di verificare che la directory in cui viene eseguita l'operazione chmod sia la directory corrente.

Impostazione di autorizzazioni assolute

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 

Scrittura 

Esecuzione 

Totale 

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 

Scrittura 

Esecuzione 

Totale 

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 

Scrittura 

Esecuzione 

Totale 

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:

$ pwd
/home/utente2/fiori
$ ls -l
-rwxrwxrwx  3 utente2          21032 feb 12 10:31 giglio
-rwxrwxrwx  3 utente2          12675 feb 08 09:31 mughetto
-rwxrwxrwx  2 utente2             68 feb 10 11:09 narciso
-rwxrwxrwx  1 utente2           1024 feb 14 16:38 rosa
$ chmod 751 *
$ ls -l
-rwxr-x--x  3 utente2          21032 feb 12 10:31 giglio
-rwxr-x--x  3 utente2          12675 feb 08 09:31 mughetto
-rwxr-x--x  2 utente2             68 feb 10 11:09 narciso
-rwxr-x--x  1 utente2           1024 feb 14 16:38 rosa
$

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.