Basi dei permessi di accesso: chmod
, chown
, umask
1. Concetto di permessi di accesso
Quando lavori con file o directory in Linux, emerge la necessità di gestire l'accesso a essi. Immagina di aver lasciato i tuoi calzini in bella vista, e ora tutti in casa possono usarli! I permessi di accesso in Linux permettono di prevenire "l'uso non autorizzato dei calzini" (o qualcosa di più importante, come i tuoi script). Iniziamo a capire come funziona.
Ogni file (e directory) in Linux ha tre insiemi di permessi di accesso che determinano chi può leggerli, scriverli o eseguirli:
- Lettura (r): Permette di visualizzare il contenuto del file o l'elenco dei file nella directory.
- Scrittura (w): Consente di modificare il contenuto del file o aggiungere/eliminare file dalla directory.
- Esecuzione (x): Consente di eseguire il file come programma (o accedere alla directory).
Modello a tre livelli
Ogni permesso si applica a tre gruppi di utenti:
- Proprietario (owner): Chi ha creato il file.
- Gruppo (group): Gli utenti raggruppati in un gruppo a cui è assegnato il file.
- Altri (others): Tutti gli altri utenti del sistema.
Esempio di permessi di accesso per un file:
-rwxr-xr--
Spieghiamolo:
- Il primo simbolo
-
indica che è un file (per una directory saràd
). - I primi tre simboli
rwx
— permessi per il proprietario (lettura, scrittura, esecuzione). - I tre simboli successivi
r-x
— permessi per il gruppo (lettura, esecuzione). - Gli ultimi tre simboli
r--
— permessi per gli altri (solo lettura).
2. Comando chmod
: gestione dei permessi di accesso
Formato simbolico
Il comando chmod
modifica i permessi di accesso per file e directory. Il formato simbolico del comando è il seguente:
chmod [chi][azione][permessi] nome_file
- Chi:
u
(proprietario),g
(gruppo),o
(altri),a
(tutti). - Azione:
+
(aggiungi permessi),-
(rimuovi permessi),=
(imposta permessi esatti). - Permessi:
r
(lettura),w
(scrittura),x
(esecuzione).
Esempi:
# Aggiungiamo i permessi di esecuzione per tutti
chmod a+x script.sh
# Aggiungiamo i permessi di scrittura solo per il gruppo
chmod g+w file.txt
# Togliamo i permessi di lettura agli altri
chmod o-r document.txt
Formato ottale
Il formato ottale (o numerico) è più compatto, ma richiede la comprensione del "magico mondo dei numeri". In questo formato ogni combinazione di permessi è rappresentata da un numero:
r = 4
w = 2
x = 1
I permessi si sommano:
rwx = 7
(4 + 2 + 1)rw- = 6
(4 + 2)r-- = 4
Formato del comando:
chmod [numero][numero][numero] nome_file
Esempio:
# Impostiamo i permessi rwx per il proprietario, r-x per il gruppo, r-- per gli altri
chmod 754 file.sh
3. Cambiare il proprietario del file: comando chown
Se hai bisogno di trasferire un file a un altro utente (o gruppo), il comando chown
ti può aiutare.
Formato:
chown [utente]:[gruppo] nome_file
Esempi:
# Trasferire la proprietà all'utente user1
chown user1 myfile.txt
# Cambiare il proprietario e il gruppo
chown user1:group1 myfile.txt
# Cambiare solo il gruppo
chown :group2 myfile.txt
4. Maschera predefinita: umask
Quando crei un file, i permessi di accesso per esso vengono definiti dal sistema. Ad esempio, i permessi potrebbero essere rw-r--r--
. Ma da dove provengono? Risposta: dal comando umask
.
Che cos'è umask
?
umask
definisce quali permessi non saranno impostati per i nuovi file.
Ad esempio:
- Set di permessi base per un file:
666
(nessuna esecuzione). - Maschera:
022
. - Permessi finali:
644
(666 - 022
).
Comandi:
- Mostra la maschera corrente:
umask
- Imposta una nuova maschera:
umask 0022
Esempio:
# Imposta la maschera affinché i nuovi file abbiano rw-rw-r--
umask 0002
5. Permessi di amministratore e sudo
Che cos'è sudo
?
sudo
(abbreviazione di "superuser do") è un comando in sistemi Linux e Unix-like che consente all'utente di eseguire comandi come se fosse il superutente (root) o un altro utente con privilegi elevati.
Il sistema sudo
garantisce l'accesso temporaneo alle funzionalità amministrative senza necessità di lavorare costantemente con l'account root, riducendo così i rischi di modifiche accidentali o malevole al sistema.
Semplificando molto, sudo viene scritto prima del comando che deve essere eseguito con i permessi di amministratore.
Come funziona sudo
?
Esecuzione del comando:
Quando scrivi un comando con sudo
, il sistema verifica se il tuo utente ha il diritto di eseguire comandi con privilegi elevati.
Ad esempio:
sudo apt update
Autenticazione:
La prima volta che usi sudo
nella sessione corrente, il sistema chiederà di inserire la password dell'utente corrente (non di root).
Dopo aver inserito correttamente la password, il sistema salva l'autenticazione per un breve periodo di tempo (solitamente 5-15 minuti), per evitare di richiedere la password per ogni comando.
Esecuzione del comando:
Se l'utente ha i diritti specificati nella configurazione di sudo
, il comando verrà eseguito con i permessi del superutente.
Funzioni e comandi principali di sudo
Esecuzione di un comando con privilegi:
sudo <comando>
Ad esempio:
sudo apt install nginx
Esecuzione di un comando come un altro utente: Usa il flag -u
:
sudo -u <nome_utente> <comando>
Ad esempio:
sudo -u user1 ls /home/user1
Accesso a un terminale amministrativo: Avvia una shell con permessi root:
sudo -i
oppure:
sudo su
Visualizzare la configurazione di sudo
:
sudo -l
Mostra i comandi che l'utente corrente ha il diritto di eseguire.
Modifica della configurazione di sudo
:
sudo visudo
Questo comando apre il file di configurazione /etc/sudoers
per una modifica sicura.
6. Esempi
Proviamo ad applicare le nostre conoscenze in pratica.
Compito 1: Gestione dei permessi con chmod
Crea un file:
touch myfile.txt
Imposta per il proprietario i permessi di lettura, scrittura ed esecuzione:
chmod u+rwx myfile.txt
Aggiungi i permessi solo di lettura per gli altri:
chmod o+r myfile.txt
Controlla i permessi:
ls -l myfile.txt
Compito 2: Cambio del proprietario con chown
Crea un file:
touch ownedfile.txt
Cambia il proprietario all'utente
user1
(sono necessari i privilegi da admin):sudo chown user1 ownedfile.txt
Controlla i cambiamenti:
ls -l ownedfile.txt
Compito 3: Esperimenti con umask
Controlla la maschera attuale:
umask
Imposta la maschera a
027
:umask 027
Crea un nuovo file:
touch newfile.txt
Controlla i permessi del file creato:
ls -l newfile.txt
7. Errori tipici e particolarità
- Dimenticato
sudo
durante il cambio del proprietario: Solo l'amministratore può cambiare il proprietario di un file. Se ricevi l'errore "Operation not permitted", prova ad aggiungeresudo
. - Ordine errato nel comando
chmod
: Hai cambiato i permessi sull'oggetto sbagliato. Assicurati di aver selezionato il file o la directory corretta. umask
influisce solo sui nuovi file: Se provi a cambiare i permessi di file già esistenti usandoumask
, non funzionerà. Usachmod
.
Sapevi che i permessi di accesso in Linux sono così flessibili che puoi creare un file che "vede" solo una persona in tutto l'universo? Come si suol dire, con grandi permessi arriva una grande responsabilità! Ora, armato di chmod
, chown
e umask
, sei pronto a rendere i tuoi sistemi Linux non solo comodi, ma anche sicuri.
GO TO FULL VERSION