Comando umask di Linux

Aggiornato: 03/13/2021 by Computer Hope

comando umask

Sui sistemi operativi Unix-like, il comando umask restituisce, o imposta, il valore della maschera di creazione della modalità file del sistema.

Questa pagina copre la versione Linux di umask.

Descrizione

Su Linux e altri sistemi operativi Unix-like, i nuovi file sono creati con un set di permessi predefinito. In particolare, i permessi di un nuovo file possono essere limitati in modo specifico applicando una “maschera” di permessi chiamata umask. Il comando umask è usato per impostare questa maschera, o per mostrare il suo valore attuale.

Sintassi

umask 

Opzioni

-S Accetta una rappresentazione simbolica di una maschera, o ne restituisce una.
Maschera Se viene specificata una maschera valida, l’umask viene impostata a questo valore. Se non viene specificata alcuna maschera, viene restituito il valore corrente di umask.

Cosa sono i permessi e come funzionano?

Come forse sapete, ogni file sul vostro sistema ha associato un insieme di permessi usati per proteggere i file: i permessi di un file determinano quali utenti possono accedere a quel file, e che tipo di accesso hanno.

Ci sono tre classi generali di utenti:

  • L’utente che possiede il file (“Utente”).
  • Gli utenti che appartengono al gruppo di proprietà definito per il file (“Gruppo”).
  • Tutti gli altri (“Altro”).

A sua volta, per ciascuna di queste classi di utenti, ci sono tre tipi di accesso al file:

  • La capacità di guardare il contenuto del file (“Leggere”).
  • La capacità di cambiare il contenuto del file (“Write”).
  • La capacità di eseguire il contenuto del file come un programma sul sistema (“Execute”).

Quindi, per ciascuna delle tre classi di utenti, ci sono tre tipi di accesso. Prese insieme, queste informazioni costituiscono i permessi del file.

Come sono rappresentati i permessi?

Ci sono due modi per rappresentare i permessi di un file: simbolicamente (usando simboli come “r” per leggere, “w” per scrivere, e “x” per eseguire) o con un valore numerico ottale.

Per esempio, quando si elenca il contenuto di una directory dalla linea di comando usando il comando ls come segue:

ls -l

vedrete (tra le altre informazioni) le informazioni sui permessi per ogni file. Qui è rappresentato simbolicamente, come nell’esempio seguente:

-rwxr-xr--

Ci sono dieci simboli. Il primo trattino (“-“) significa che questo è un file “regolare”, in altre parole, non una directory (o un dispositivo, o qualsiasi altro tipo speciale di file). I restanti nove simboli rappresentano i permessi: rwxr-xr–. Questi nove simboli sono in realtà tre gruppi di tre simboli ciascuno, e rappresentano i rispettivi permessi specifici, da sinistra a destra:

simboli significato
rwx il proprietario del file può leggere, scrivere o eseguire questo file come processo sul sistema.
r-x chiunque nel gruppo del file può leggere o eseguire questo file, ma non scrivere su di esso.
r– chiunque può leggere questo file, ma non scrivere su di esso o eseguire il suo contenuto come processo.

Specificare la maschera di creazione del file usando i simboli

La forma simbolica generale di una maschera è la seguente:

...

il simbolo di autorizzazione è una qualsiasi combinazione di r (leggere), w (scrivere), o x (eseguire), come descritto sopra.

Il simbolo della classe utente può essere uno o più dei seguenti:

u Utente (il proprietario del file).
g Gruppo (qualsiasi membro del gruppo definito del file).
o Altro (chiunque altro).
a Tutti (equivalente a ugo).

l’operatore delle autorizzazioni può essere uno dei seguenti:

+ consente di abilitare i permessi di file specificati per le classi di utenti specificate (i permessi non specificati non vengono modificati nella maschera).
proibire che i permessi di file specificati siano abilitati per le classi di utenti specificate (i permessi che non sono specificati sono invariati nella maschera).
= consentire che i permessi di file specificati siano abilitati per le classi utente specificate (i permessi non specificati saranno proibiti dalla maschera durante la creazione del file).

Così, per esempio, il seguente comando umask:

umask u+w

Imposta la maschera in modo che quando i file vengono creati, hanno permessi che permettono il permesso di scrittura all’utente (proprietario del file). Il resto dei permessi del file rimarrebbe invariato rispetto al default del sistema operativo.

Molteplici modifiche possono essere specificate separando più serie di notazioni simboliche con delle virgole (ma non degli spazi!). Per esempio:

umask u-x,g=r,o+w

Questo comando imposta la maschera in modo che quando vengono creati i file successivi, essi abbiano i permessi che:

  1. proibisce che il permesso di esecuzione sia impostato per il proprietario del file (utente), lasciando invariati gli altri permessi del proprietario;
  2. abilita il permesso di lettura per il gruppo, mentre proibisce il permesso di scrittura ed esecuzione per il gruppo;
  3. abilita il permesso di scrittura per gli altri, lasciando invariati gli altri permessi.

Nota che se usi l’operatore di uguaglianza (“=”), qualsiasi permesso non specificato sarà specificatamente proibito. Per esempio, il comando

umask a=

Imposta la maschera di creazione file in modo che i nuovi file siano inaccessibili a tutti.

Specificare la maschera di creazione file usando la rappresentazione numerica

La maschera di creazione file può anche essere rappresentata numericamente, usando valori ottali (le cifre da 0 a 7). Quando si usa la rappresentazione numerica ottale, certi numeri rappresentano certi permessi, e questi numeri vengono aggiunti o sottratti l’uno dall’altro per rappresentare il valore finale e combinato dei permessi. In particolare, i numeri 1, 2 e 4 rappresentano i seguenti permessi:

numero permesso
4 lettura
2 scrittura
1 execute

Questi numeri sono usati perché qualsiasi combinazione di questi tre numeri sarà unica. La seguente tabella illustra le loro combinazioni uniche:

valore letto + valore scritto + valore eseguito = valore combinato: equivalente simbolico:
0 0 0 0
0 0 1 1 x
0 2 0 2 w
0 2 1 3 wx
4 0 0 4 r
4 0 1 5 rx
4 2 0 6 rw
4 2 1 7 rwx

Per ogni classe di utenti, una cifra può rappresentare i loro permessi; usando l’esempio precedente, potremmo rappresentare il permesso simbolico di rwxr-xr– usando il numero ottale a tre cifre 754. L’ordine delle cifre è sempre lo stesso: Utente, Gruppo, Altro.

L’altra cifra del permesso

Nelle rappresentazioni ottali dei permessi dei file, ci sono in realtà quattro cifre. Le tre cifre importanti che abbiamo discusso sono le ultime tre cifre. La prima cifra è un indicatore speciale dei permessi dei file, e per questa discussione può essere considerata sempre zero. Quindi da qui in poi, quando discutiamo del permesso di file 777, ci si può riferire ad esso anche come 0777.

Come funziona l’umask?

L’umask maschera i permessi limitandoli di un certo valore.

In sostanza, ogni cifra dell’umask viene “sottratta” dal valore di default del sistema operativo per arrivare al valore di default che avete definito. Non è proprio una sottrazione; tecnicamente, la maschera viene negata (viene preso il suo complemento bitwise) e questo valore viene poi applicato ai permessi di default usando un’operazione logica AND. Il risultato è che la umask dice al sistema operativo quali bit di permesso “spegnere” quando crea un file.

In Linux, il valore di default dei permessi è 666 per un file normale, e 777 per una directory. Quando si crea un nuovo file o una nuova directory, il kernel prende questo valore di default, “sottrae” il valore di umask, e dà ai nuovi file i permessi risultanti.

Questa tabella mostra come ogni cifra del valore di umask influenza i nuovi permessi di file e directory:

cifra di umask permessi di file predefiniti permessi di directory predefiniti
0 rw rwx
1 rw rw
2 r rx
3 r r
4 w wx
5 w w
6 x x
7 (nessun permesso consentito) (nessun permesso consentito)

Quindi se il nostro valore di umask è 022, allora ogni nuovo file avrà, per default, i permessi 644 (666 – 022). Allo stesso modo, ogni nuova directory sarà creata di default con i permessi 755 (777 – 022).

Esempi

Per visualizzare l’attuale valore di umask del vostro sistema, digitate il comando:

umask

che restituisce l’umask del vostro sistema come numero ottale a quattro cifre, per esempio:

0002

Ancora una volta, il primo zero è una cifra speciale di autorizzazione e può essere ignorato; per i nostri scopi, 0002 è uguale a 002.

Per vedere questo come una rappresentazione simbolica, usate il flag -S:

umask -S

Che restituisce lo stesso valore simbolicamente, per esempio:

u=rwx,g=rwx,o=rx

dove u sta per utente, g sta per gruppo, e o sta per altro. Questo ci sta dicendo che se creiamo un nuovo file, questo ha i permessi di default 664, che sono 666 (i permessi di default per i file) mascherati da 002 (il nostro valore di umask).

Testiamo questo creando un nuovo file con il comando touch:

touch testfile

E ora otteniamo un elenco di directory per quel file:

ls -l testfile
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile

Come previsto, il nuovo file ha i permessi -rw-rw-r–, o 0664: Il proprietario e il gruppo possono leggere o scrivere il file, e gli altri possono solo leggerlo.

Ora cambiamo la umask. Per impostare una umask di 022, usate il comando:

umask 022

Questo è lo stesso che eseguire umask 0022; se specificate solo tre cifre, la prima cifra sarà considerata zero. Verifichiamo che il cambiamento abbia avuto luogo:

umask
0022

E ora creiamo un nuovo file:

touch testfile2

E ora visualizziamo il suo elenco di directory, con il primo file che abbiamo creato, usando il carattere jolly asterisco (“*”) per visualizzare tutti i file il cui nome inizia con “testfile”:

ls -l testfile*
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile-rw-r--r-- 1 myusername myusername 0 Jan 7 14:39 testfile2

Come potete vedere, testfile2 ha i permessi 644.

Ecco alcuni altri esempi di comandi umask:

umask a+r

Imposta la maschera in modo che i nuovi file permettano a tutti gli utenti di leggerli; gli altri permessi saranno invariati da quelli di default.

umask a-x

Imposta la maschera in modo che i nuovi file non siano inizialmente eseguibili da nessun utente; gli altri permessi di default rimangono invariati.

umask u=rw,go=

Imposta la maschera in modo che i nuovi file siano leggibili e scrivibili dall’utente che possiede il file, ma non possano essere eseguiti; i membri del gruppo e gli altri non hanno permessi per accedere al file.

umask 777

Rendi i nuovi file inaccessibili a tutti – nessuno può leggerli, scriverli o eseguirli.

umask 000

Rendi i nuovi file completamente accessibili (lettura, scrittura ed esecuzione) a tutti. Tuttavia, questa è una cattiva idea. Non fatelo.

chmod – Cambia i permessi di file o directory.
csh – L’interprete dei comandi della shell C.
ksh – L’interprete dei comandi della shell Korn.
sh – L’interprete dei comandi della shell Bourne.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *