Permessi su file e directory (UMASK, CHMOD, CHOWN, CHGRP)

The user file-creation mode mask (umask) è una variabile che controlla come sono definiti i permessi di nuovi file e directory.
Automaticamente umask remuove i permessi da quelli base di default che sono 777 per le nuove directory e 666 per i nuovi file così da aiumentare la sicurezza.  

read - lettura: Flag r in symbolic mode; Valore 4 in octal mode
write - scrittuta: Flag w in symbolic mode; Valore 2 in octal mode
execute - esecuzione: Flag x in symbolic mode; Valore 1 in octal mode

Il valore di default di umask per uno standard user è 0002 mentre  per root user è 0022.
Il primo bit rappresenta un permesso speciale chiamato sticky bit.
Quindi una nuova directory avrà i seguenti persemssi
777 - 002 = 775 cioè drwxrwxr-x   se creata da un utente standart.
777 - 022 = 755 cioè  drwxr-xr-x   se creata da un utente root.  
Per i nuovi file invece abbiamo
666 - 002 = 664 cioè rw-rw-r--  se creata da un utente standart.
666 - 022 = 644 cioè rw-r--r--    se creata da un utente root.  











Il file di configurazione è /etc/profile che viene letto alla login di ogni user, ma la Best Practice prevede di cambiare umask solo a livello di utente.
# su - anna
# vi  .bashrc 
Ad esempio inserire la riga seguente:
umask 077

Ricaricare il file
# . ./.bash_profile

Oppure modificare  .bash_profile

Per modificare umask per tutti gli utenti creare il file di configurazione seguente:
/etc/profile.d/umask.sh
umask 077

Questo file si applica a tutti gli utenti ma se configurato anche .bash_profile/bash_rc viene applicato la modifica scritta dentro quest'ultimo file a seconda dell'accesso.

Se configurati entrambi  bash_profile e umask.sh 
1) "su - anna" vince la configurazione di bash_profile
2) "su anna" vince la configurazione di umask.sk

Se configurati entrambi  bashrc e umask.sh 
1) "su - anna" vince la configurazione di bashrc
2) "su anna" vince la configurazione di bashrc   --> nn si applica umask.sh

Se configurati bashrc, bash_profile e umask.sh 
1) "su - anna" vince la configurazione di bash_profile 
2) "su anna" vince la configurazione di bashrc

Quindi conviene modificare per un singolo utente solo .bashrc.
   


chmod
Per modificare i permessi dei file si usa il comando chmod che usa una duplice sintassi per indicare i permessi:
chmod modifica gli attributo di accesso su uno o più file. Solo il proprietario del file, o l'utente root, può modificarne gli attributi. E' un comando comune in tutti gli Unix.
chmod [opzioni] modo file
-c (--changes) Visualizza informazioni sui file che vengono modificati
-R (--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine Applica al file specificato nella riga di comando gli stessi permessi che ha file_origine
-f (--silent) Non stampa messaggi di errore sui file che non possono essere modificati
-v  Visualizza a video i nuovi e i vecchi permessi

Esistono due diversi modi per definire i permessi su un file:

SYMBOLIC MODE
I permessi vengono definiti nella forma: chi-opcode-permesso.
CHI può essere:
u USER - Utente proprietario del file
g GROUP - Gruppo proprietario del file
o OTHER - Altri utenti
a ALL - Tutti gli utenti del sistema (default)

OPCODE può essere:
+ Aggiunge un permesso
 Rimuove un permesso
= Assegna un permesso (e rimuove tutti quelli non specificati)

PERMESSO può essere:
r READ - Lettura sul file
w WRITE - Scrittura sul file
x EXECUTE - Esecuzione del file (o apertura della directory)
SET USER ID - Assicura che tutti i file creati in una directory ereditano automaticamente come gruppo, il gruppo proprietario della directory.


t STICKY BIT - Solo il proprietario del file può cancellare il file.
Normalmente un utente può cancellare tutti i file contenuti in una directory su cui ha permesso di scrittura, anche se non ha permessi di scrittura sul file stesso. Con lo Sticky bit impostato, ciò non è possibile: l'utente può cancellare il relativo file solo se ha permessi di scrittura sul file stesso

OCTAL MODE
E' un metodo alternativo che permette di definire i permessi con un numero ottale composta da tre cifre:
la prima indica i permessi per l'utente owner, la seconda per il gruppo, la terza per gli altri.
I permessi vengono calcolati sommando i seguenti valori ottali:
4 - Lettura
2 - Scrittura
1 - Esecuzione.
In questo modo il permesso di lettura+scrittura+esecuzione si indica con il numero 7 (4+2+1), il permesso di lettura, esecuzione con 5 (4+1) e così via.
E' inoltre possibile indicare una quarta cifra (da far precedere alle 3 usuali) per permettere l'assegnamento dei seguenti permessi speciali:
4 - Imposta lo UserId per l'esecuzione
2 - Imposta il GroupID
1 - Imposta lo sticky bit.

Esempi:
Per impostare i permessi totali all'owner, e solo in lettura a tutti gli altri si hanno le seguenti possibilità:
chmod 744 /home/file
chmod u=rwx,go=r /home/file


Per impostare permessi di sola lettura per l'owner e il group e nessun permesso per gli altri:
chmod 440 /home/file
chmod ug=r,o-rwx /home/file


Per impostare totali permessi per tutti gli utenti su un file:
chmod 777 /home/file
chmod ugo=rwx /home/file


chown 
modifica il proprietario di uno più file. Può essere fatto solo da root o dal proprietario corrente del file.
E' un comando comune in tutti gli Unix.
chown [opzioni] nuovo_proprietario <file>
chown [opzioni] nuovo_proprietario:nuovo_gruppo <file>

-c (--changes) Visualizza informazioni sui file che vengono modificati
-R (--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine Applica al file specificato nella riga di comando lo stesso proprietario che ha file_origine
-f (--silent) Non stampa messaggi di errore sui file che non possono essere modificati
-v (--verbose) Visualizza dettagliate informazioni su ogni file che chown tenta di modificare.
Esempi:
chown al /var/tmp/alien Imposta al come proprietario del file /var/tmp/alien
chown beppe:beppe /home/file Imposta owner beppe e group owner beppe al file /home/file

chgrp 
Per cambiare il gruppo poprietario di un file
chgrp <gruppo> <file>


Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database