L'autorizzazione per file e directory Unix è sotto forma di una struttura 3×3. ovvero Tre permessi (lettura, scrittura ed esecuzione) disponibili per tre tipi di utenti (proprietario, gruppi e altri).
Nell'output del comando ls -l, i 9 caratteri dalla 2a alla 10a posizione rappresentano i permessi per i 3 tipi di utenti.
-rw-r--r-- 1 sathiya sathiya 272 Mar 17 08:22 test.txt
Nell'esempio sopra:
- L'utente (sathiya) ha il permesso di lettura e scrittura
- Il gruppo ha l'autorizzazione di lettura
- Altri hanno il permesso di lettura
Tre autorizzazioni per i file:
- leggi :permesso di leggere il contenuto del file.
- scrivi :permesso di scrivere nel file.
- esegui :permesso di eseguire il file come programma/script.
Tre autorizzazioni di directory:
- leggi :permesso di leggere il contenuto della directory (visualizzare file e sottodirectory in quella directory).
- scrivi :permesso di scrivere nella directory. ( crea file e sottodirectory in quella directory )
- esegui :permesso di entrare in quella directory.
Valori numerici per i permessi di lettura, scrittura ed esecuzione:
- leggi 4
- scrivi 2
- esegui 1
Per avere una combinazione di autorizzazioni, aggiungi i numeri richiesti. Ad esempio, per i permessi di lettura e scrittura, è 4+2 =6.
Modifica i permessi di file e directory utilizzando il comando Chmod
È possibile utilizzare la rappresentazione ottale o la rappresentazione simbolica per modificare l'autorizzazione di un file o di una directory.
Rappresentazione ottale per i permessi:
- Il primo numero è per l'utente
- Il secondo numero è per il gruppo
- Il terzo numero è per gli altri
Ad esempio, dai lettura, scrittura ( 4+2 =6 ) all'utente e leggi ( 4 ) al gruppo e altri.
$ chmod 644 filename
Ad esempio, dai lettura, esegui ( 4 + 1 =5 ) all'utente e leggi (4 ) al gruppo e niente ( 0 ) agli altri.
$ chmod 540 filename
Ad esempio, dai lettura, scrivi ( 4 + 2 =6 ) all'utente e niente ( 0 ) al gruppo e leggi ( 4 ) agli altri.
$ chmod 604 filename
Umask 022 è responsabile dell'autorizzazione predefinita di un file
Il valore umask predefinito è 0022, che decide l'autorizzazione predefinita per un nuovo file o directory. Il permesso predefinito per una directory è 0777, per i file i permessi sono 0666 da cui viene sottratto il valore umask predefinito 0022 per ottenere i file appena creati o il permesso della directory.
L'autorizzazione finale predefinita per un file viene calcolata come mostrato di seguito:
- Autorizzazione file predefinita:666
- Umask predefinito:022
- Autorizzazione file predefinita finale:644
L'autorizzazione finale predefinita per una directory viene calcolata come mostrato di seguito:
- Autorizzazione directory predefinita:777
- Umask predefinito:022
- Autorizzazione alla directory predefinita finale:755
È possibile modificare il valore umask in un valore appropriato di ciò che è necessario in base al calcolo sopra. Ad esempio, se non vuoi che nessun altro oltre all'utente (proprietario) faccia nulla sul file o sulla directory, puoi dare umask come 0077.
$ umask 0077
Dopodiché, se crei un file o una directory, avrà i permessi solo per l'utente come mostrato di seguito:
$ > testfile $ ls -l testfile -rw------- 1 sathiya sathiya 0 Mar 17 08:23 testfile