La maschera dei permessi su Linux

La maschera dei permessi mi permette di conoscere e modificare i permessi sui files e sulle directory che dovrò creare. Sul sistema operativo linux si gestisce tramite il comando umask.

umask

Qual è la differenza tra umask e chmod?

Il comando chmod modifica i permessi sui file e directory già esistenti. Il comando umask, invece, imposta la stringa dei permessi su quelli ancora da creare.

la differenza tra chmod e umask

Bisogna però fare attenzione perché umask utilizza la maschera anziché i permessi numerici.

Come funziona la maschera dei permessi? E' la negazione dei permessi. La maschera funziona come un filtro. In origine tutti i file e le directory hanno il permesso 0777. La maschera li riduce. Ad esempio, una maschera 0111 riduce i permessi da 0777 a 0666.
la spiegazione della maschera dei permessi su Linux

Come visualizzare la maschera dei permessi

Entro sulla riga comandi di Linux.

Prima di creare un file, digito umask per sapere quali permessi di default gli sarebbero assegnati.

umask

Il sistema operativo mi restituisce la negazione dei permessi in forma numerica.

0002

Cosa significa negazione dei permessi?

Se creassi una nuova directory avrebbe il permesso numerico 0775.

Infatti, per calcolare i permessi di una directory basta sottrarre al valore massimo 0777 il numero della maschera umask 0002 e si ottiene 0775.

come si calcolano i permessi con umask

Occorre però distinguere tra file e directory.

Nel caso dei file si utilizza come valore massimo 0666 anziché 0777.

Quindi, il risultato è diverso.

la maschera nel caso dei files

Nota. La stessa maschera ha prodotto permessi diversi per la directory (0775) e per il file (0664). Nel caso dei file si usa come valore massimo 0666 mentre per le directory si usa 0777. Il valore della maschera è sempre lo stesso. Eventuali risultati negativi della sottrazione vanno lasciati uguali a zero ( es. 0666-0777=0000).

Riepilogando, i valori ottali numerici della maschera umask hanno il seguente significato per i file e per le directory.

valore file permessi directory permessi
0 rw- rwx
1 rw- rw-
2 r-- r-x
3 r-- r--
4 -w- -wx
5 -w- -w-
6 --- --x
7 --- ---

C'è un modo più facile per conoscere i permessi sui nuovi file e directory?

In alternativa, per conoscere la maschera dei permessi posso digitare il comando umask aggiungendo il parametro -S

umask -S

In questo caso, il s.o. mi restituisce a video la maschera in formato simbolico.

u=rwx, g=rwx, o=rx

Vuol dire che i nuovi file o directory avrebbero i permessi di lettura, scrittura ed esecuzione (rwx) sia per l'utente proprietario del file (u) che per il gruppo (g).

Gli altri utenti ( o=others ), invece, avrebbero soltanto il permesso di lettura (r) ed esecuzione (x).

E' la stessa informazione ma è molto più immediata e facile da capire.

Nota. E' comunque consigliabile imparare a usare i permessi in formato numerico perché sono utili per modificare la maschera.

Come modificare la maschera dei permessi

La maschera dei permessi di default è impostata dall'amministratore di sistema.

A ciascun utente può associare dei permessi di base.

E' comunque possibile cambiare la maschera anche dalla riga dei comandi.

Si può modificare digitando il comando umask seguito dalla maschera xxxx in forma numerica.

umask [ xxxx ]

Ad esempio, per impostare la maschera 0022 basta digitare

umask 0022

A tutti i file e le directory che saranno creati durante la sessione sarà applicata la maschera 0022.

Le directory avranno i permessi 0755 (rwxr-xr-x) mentre i file 0644 (rw-r--r--).

La modifica vale soltanto per la sessione in corso. Una volta chiusa la sessione o il terminale, la maschera torna ad avere i valori di default impostati dall'amministratore del sistema.

Un esempio pratico

La maschera attuale è 0022 che equivale al permesso 0755 (rwxr-xr-x).

Per modificare la maschera da 0022 a 0077 digito il seguente comando:

umask 0077

Ora la maschera è 0077 che equivale al permesso 0700 (rwx------).

Faccio una verifica e provo a creare un file.

touch filediprova

Poi visualizzo il contenuto della directory corrente con ls -l.

il file è stato creato con il permesso 700 ( u=rww g=--- o=--- )

Il file "filediprova" è stato creato con i permessi rw--------, ossia 660.

Soltanto l'utente proprietario può leggerlo (r), scriverlo (w) ed eseguirlo (x). Il gruppo e gli altri utenti non sono autorizzati.

Perché il file ha il permesso 660 anziché 770? Essendo un file non è eseguibile e va usato come valore massimo 666. Quindi 0666-0077=0600 dove 6 equivale al permesso di lettura e scrittura (rw). Per questa ragione il file "filediprova" ha i permessi rw anziché rwx.

Ora provo a creare una directory.

mkdir provadir

Poi visualizzo di nuovo il contenuto della cartella corrente con ls-l.

la cartella è stata creata con il permesso 700 ossia u=rwx, g=---, o=---

La directory provadir è stata creata con i permessi rwx------, ossia 0700.

Soltanto il proprietario della directory può accedere alla directory (x), visualizzare il suo contenuto (r) e modificarlo (w).

Nota. In questo caso, trattandosi di una directory, la maschera si applica sul valore massimo 0777. Quindi, 0777-0077=0700 dove 7 equivale al permessi di lettura, scrittura e accesso (rwx).


 
Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

I permessi su Linux

  1. Cosa sono i permessi
  2. Come vedere i permessi di un'utente
  3. Come cambiare i permessi su un file o directory
  4. I permessi numerici
    ( es. 777, 644, ecc. )
  5. Le modalità speciali
  6. I comandi chmod
  7. La maschera dei permessi (umask)

FAQ