Loading AI tools
Da Wikipedia, l'enciclopedia libera
umask è un comando della shell testuale dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che permette di suggerire ai programmi avviati successivamente quali permessi negare al momento della creazione di nuovi file e directory. Ha effetto solo per i programmi avviati successivamente ad umask, e solo se avviati dalla stessa shell, differendo da chmod sia perché quest'ultimo modifica i permessi successivamente alla creazione dei file o directory, sia perché i permessi forniti con chmod sono quelli effettivi e non quelli negati.
umask è anche il nome di una chiamata di sistema definita dallo standard POSIX[2] che modifica un omonimo attributo dei processi (precisamente del process control block), il quale mantiene il valore corrente di tale suggerimento, e che viene ereditato dai processi figli. Di fatto, il comando umask della shell, che è interno alla shell stessa e non è un programma esterno, agisce semplicemente invocando tale chiamata di sistema per modificare il valore corrente della maschera del processo della shell; il nuovo valore viene poi ereditato dai comandi avviati in seguito dalla stessa shell (ma non, ad esempio, dai comandi avviati in precedenza o avviati da altre shell).
Il comando e la chiamata di sistema umask modificano solo il comportamento predefinito dei programmi, i quali mantengono la possibilità tecnica di aggirare il suggerimento, ad esempio cambiando il valore dell'impostazione corrente o modificando esplicitamente i permessi dei nuovi file e/o directory create. È possibile negare solo permessi standard di lettura, scrittura ed esecuzione, e non altri tipi di permessi.
La sintassi generale del comando umask è:
dove la maschera può essere:
Lanciando il comando senza specificare un parametro maschera viene mostrato sullo standard output il valore corrente. Se si desidera lasciare invariati i propri permessi, negandoli completamente agli utenti del gruppo e a tutti gli altri utenti, si usi:
Notare che i permessi di ogni file o directory creati dipendono sia dai permessi richiesti dal programma che li ha creati che dall'impostazione data tramite umask.
L'opzione -S mostra il valore corrente dei permessi effettivi espresso in notazione simbolica (ad esempio u=rwx,g=rx,o=rx invece di 022)
L'opzione -p mostra il valore di negazione dei permessi corrente impostato da umask (ad esempio 022)
Valori comunemente usati per umask sono:
|
Imposta il valore di umask a 0147 e tramite il comando touch crea un nuovo file vuoto (che normalmente avrebbe i permessi 0666, o -rw-rw-rw-); il nuovo file ha permessi ottali 0620, in quanto 0666 & ~0147 = 0620:
Seguendo l'esempio sopra è possibile osservare la differenza con il comando chmod eseguito successivamente:
Imposta il valore di umask a 0147 e tramite il comando mkdir crea una nuova directory (che normalmente avrebbe i permessi 0777, o drwxrwxrwx); la nuova directory ha permessi ottali 0630, in quanto 0777 & ~0147 = 0630:
La chiamata di sistema umask è dichiarata nello header file sys/stat.h:
#include <sys/stat.h>
mode_t umask(mode_t cmask);
Il tipo mode_t è un tipo opaco (solitamente un tipo numerico intero) che rappresenta dei permessi d'accesso. Il parametro cmask indica i permessi che si vuole negare. A tal fine sono considerati solo i permessi di lettura, scrittura ed esecuzione relativi alle classi di permessi utente, gruppo e altri. I restanti permessi, come set User ID, set Group ID e sticky non sono considerati.
Il valore di ritorno è il valore precedente di umask.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.