Hai familiarità con le operazioni logiche? In pratica l'umask serve per fare uno XOR sui permessi. Lo XOR è anche una porta logica che serve per fare addizioni e di conseguenza sottrazioni.
Esiste una cosa chiamata tabella di verità che ti spiega come funziona.
0 xor 0 = 0
1 xor 0 = 1
0 xor 1 = 1
1 xor 1 = 0
L'umask funziona proprio così.
Ragionando con gli 1 e 0 al posto dei consueti r,w,x te ne puoi rendere conto:
ad esempio con l'umask 0147 hai una rappresentazione in bit 0(001)(100)(111).
Se con l'umask fai lo xor con 0666 cioé 0(110)(110)(110) usando la tabella sopra, ottieni: 0(111)(011)(001) che in ottale è 0731.
Ma poiché c'è la restrizione sui permessi di esecuzione, diventa 0(110)(010)(000). Passando dai bit ai agli ottali: 0620.

Rispondi quotando