Sui sistemi operativi Linux e Unix, tutti i nuovi file vengono creati con un insieme predefinito di autorizzazioni. La umask
l'utilità consente di visualizzare o impostare la maschera di creazione della modalità file, che determina i bit di autorizzazione per i file o le directory appena creati.
Viene utilizzato da mkdir, touch, tee e altri comandi che creano nuovi file e directory.
Autorizzazioni Linux #
Prima di andare oltre, spieghiamo brevemente il modello dei permessi di Linux.
In Linux, ogni file è associato a un proprietario ea un gruppo e gli vengono assegnati diritti di accesso autorizzati per tre diverse classi di utenti:
- Il proprietario del file.
- I membri del gruppo.
- Tutti gli altri.
Esistono tre tipi di autorizzazioni applicabili a ciascuna classe:
- Il permesso di lettura.
- Il permesso di scrittura.
- Il permesso di esecuzione.
Questo concetto consente di specificare a quali utenti è consentito leggere il file, scrivere nel file o eseguire il file.
Per visualizzare i permessi dei file, usa ls
comando:
ls -l dirname
drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname
|[-][-][-] [------] [---]
| | | | | |
| | | | | +-----------> Group
| | | | +-------------------> Owner
| | | +----------------------------> Others Permissions
| | +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type
Il primo carattere rappresenta il tipo di file che può essere un file normale (-
), una directory (d
), un collegamento simbolico(l
), o qualsiasi altro tipo speciale di file.
I successivi nove caratteri rappresentano i permessi, tre set di tre caratteri ciascuno. Il primo set mostra le autorizzazioni del proprietario, il secondo le autorizzazioni del gruppo e l'ultimo set mostra le autorizzazioni di tutti gli altri.
Carattere r
con un valore ottale di 4
sta per read, w
con un valore ottale di 2
per scrivere, x
con un valore ottale di 1
per l'autorizzazione all'esecuzione e (-
) con un valore ottale di 0
senza permessi.
Ci sono anche altri tre tipi di permessi speciali sui file:setuid
, setgid,
e Sticky Bit
.
Nell'esempio sopra (rwxr-xr-x
) significa che il proprietario ha letto, scritto ed eseguito i permessi (rwx
), il gruppo e altri hanno le autorizzazioni di lettura ed esecuzione.
Se rappresentiamo i permessi dei file utilizzando una notazione numerica, arriveremo al numero 755
:
- Proprietario:
rwx
=4+2+1 = 7
- Gruppo:
r-x
=4+0+1 = 5
- Altro:
r-x
=4+0+1 = 5
Se rappresentate in notazione numerica, le autorizzazioni possono avere tre o quattro cifre ottali (0-7). La prima cifra rappresenta le autorizzazioni speciali e, se viene omessa, significa che non sono impostate autorizzazioni speciali sul file. Nel nostro esempio 755
è lo stesso di 0755
. La prima cifra può essere una combinazione di 4
per setuid
, 2
per setgid
e 1
per Sticky Bit
.
I permessi dei file possono essere modificati usando il chmod
comando e proprietà usando il chown
comando.
Capire umask #
Per impostazione predefinita, sui sistemi Linux, i permessi di creazione predefiniti sono 666
per i file, che concede l'autorizzazione di lettura e scrittura a utenti, gruppi e altri e a 777
per le directory, che significa leggere, scrivere ed eseguire autorizzazioni per utenti, gruppi e altri. Linux non consente la creazione di un file con autorizzazioni di esecuzione.
I permessi di creazione predefiniti possono essere modificati usando umask
utilità.
umask
interessa solo l'ambiente shell corrente. Sulla maggior parte delle distribuzioni Linux, il valore umask predefinito a livello di sistema è impostato in pam_umask.so
o /etc/profile
file.
Se desideri specificare un valore diverso per utente, modifica i file di configurazione della shell dell'utente come ~/.bashrc
o ~/.zshrc
. Puoi anche cambiare la sessione corrente umask
valore eseguendo umask
seguito dal valore desiderato.
Per visualizzare il valore della maschera corrente, digita semplicemente umask
senza argomenti:
umask
L'output includerà il
022
La umask
value contiene i bit di autorizzazione che NON essere impostato sui file e le directory appena creati.
Come abbiamo già accennato, i permessi di creazione predefiniti per i file sono 666
e per le directory 777
. Per calcolare i bit di autorizzazione dei nuovi file, sottrai il valore umask dal valore predefinito.
Ad esempio, per calcolare come umask 022
influenzerà i file e le directory appena creati, usa:
- File:
666 - 022 = 644
. Il proprietario può leggere e modificare i file. Il gruppo e altri possono solo leggere i file. - Elenchi:
777 - 022 = 755
.Il proprietario puòcd
nella directory ed elencare, leggere, modificare, creare o eliminare i file nella directory. Il gruppo e altri possonocd
nella directory e nell'elenco e leggere i file.
Puoi anche visualizzare il valore della maschera in notazione simbolica usando il -S
opzione:
umask -S
u=rwx,g=rx,o=rx
A differenza della notazione numerica, il valore della notazione simbolica contiene i bit di autorizzazione che verranno impostati sui file e le directory appena creati.
Impostazione del valore della maschera #
La maschera di creazione del file può essere impostata utilizzando la notazione ottale o simbolica. Per rendere permanenti le modifiche, imposta il nuovo umask
valore in un file di configurazione globale come /etc/profile
file che interesserà tutti gli utenti o nei file di configurazione della shell di un utente come ~/.profile
, ~/.bashrc
o ~/.zshrc
, che interesserà solo l'utente. I file utente hanno la precedenza sui file globali.
Prima di apportare modifiche a umask
valore, assicurarsi che il nuovo valore non rappresenti un potenziale rischio per la sicurezza. Valori meno restrittivi di 022
dovrebbe essere usato con grande cautela. Ad esempio, umask 000
significa che chiunque ha letto, scritto ed eseguito le autorizzazioni su tutti i file appena creati.
Diciamo che vogliamo impostare permessi più restrittivi per i file e le directory appena creati in modo che altri non possano cd
alle directory e leggere i file. I permessi che vogliamo sono 750
per directory e 640
per i file.
Per calcolare il umask
valore, è sufficiente sottrarre i permessi desiderati da quello predefinito:
Valore Umask:777-750 = 027
Il umask
desiderato il valore rappresentato in notazione numerica è 027
.
Per impostare in modo permanente il nuovo valore a livello di sistema, apri il /etc/profile
file con il tuo editor di testo:
sudo nano /etc/profile
e cambia o aggiungi la seguente riga all'inizio del file:
/etc/profileumask 027
Per rendere effettive le modifiche, esegui il seguente source
comando o disconnetti e accedi:
source /etc/profile
Per verificare le nuove impostazioni, creeremo un nuovo file e una nuova directory utilizzando mkdir
e touch
:
mkdir newdir
touch newfile
Se controlli i permessi usando ls
comando, noterai che il nuovo file ha 640
e la nuova directory 750
permessi, come volevamo:
drwxr-x--- 2 linuxize users 4096 Jul 4 18:14 newdir
-rw-r----- 1 linuxize users 0 Jul 4 18:14 newfile
Un altro modo per impostare la maschera di creazione del file è utilizzare la notazione simbolica. Ad esempio umask u=rwx,g=rx,o=
è uguale a umask 027
.
Conclusione #
In questa guida abbiamo spiegato i permessi di Linux e come usare umask
comando per impostare i bit di autorizzazione per i file o le directory appena creati.
Per ulteriori informazioni, digita man umask
nel tuo terminale.
Se hai domande, lascia un commento qui sotto.