Guida avanzata a Solaris

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.