.
1. Introduzione: Cos’è sudo?
Il significato di base e il ruolo di sudo
Nei sistemi Linux e Unix-like, sudo è uno dei comandi più importanti.
Il termine sudo sta per “superuser do”, ed è uno strumento che consente agli utenti di eseguire temporaneamente comandi con privilegi amministrativi (root).
Normalmente, gli utenti standard non hanno il permesso di eseguire operazioni che influenzano l’intero sistema, come l’installazione di pacchetti o la modifica delle impostazioni di sistema. Tuttavia, usando il comando sudo, queste operazioni privilegiate possono essere eseguite in modo controllato e limitato.
Ad esempio, il comando seguente esegue apt con privilegi di root:
sudo apt update
In questo modo, sudo svolge un ruolo critico come meccanismo sicuro per l’uso dei privilegi amministrativi, bilanciando sia la sicurezza del sistema sia la sua usabilità.
La differenza tra sudo e su
Un altro comando con uno scopo simile a sudo è su, ma esistono differenze nette tra i due.
susta per “substitute user” ed è usato per passare completamente a un altro utente (tipicamente root). Quando usisu, operi come quell’utente per l’intera sessione.- D’altra parte,
sudoti consente di rimanere come utente corrente prendendo temporaneamente in prestito i privilegi amministrativi per un singolo comando.
In sintesi, su cambia utente a livello di sessione, mentre sudo eleva i privilegi a livello di comando. Da un punto di vista della sicurezza, sudo facilita il tracciamento della cronologia dei comandi, motivo per cui è diventato l’approccio standard nelle moderne distribuzioni Linux.
Distribuzioni Linux che usano comunemente sudo
Il comando sudo è abilitato per impostazione predefinita in molte distribuzioni Linux, in particolare nelle seguenti:
- Sistemi basati su Ubuntu (Ubuntu, Linux Mint, ecc.) → L’account root è disabilitato per impostazione predefinita e tutte le operazioni amministrative vengono eseguite tramite sudo.
- Sistemi basati su Debian → sudo potrebbe dover essere abilitato manualmente, ma è spesso consigliato come buona pratica di sicurezza.
- Sistemi basati su Fedora, CentOS e Red Hat → L’accesso diretto a root è possibile, ma l’uso di sudo è comunque comune.
In Ubuntu, in particolare, l’account root è disabilitato per impostazione predefinita, e tutte le operazioni amministrative devono essere eseguite usando sudo. Per questo motivo, comprendere sudo è essenziale per gli utenti Ubuntu.
Perché le persone cercano “sudo sudo”?
La keyword “sudo sudo” può sembrare ridondante a prima vista, ma viene spesso cercata per i seguenti motivi:
- Principianti che cercano di enfatizzare o comprendere meglio il significato e l’uso di
sudo - Utenti che incontrano errori come
sudo: sudo: command not found - Confusione dopo aver visto esempi in cui
sudoè usato erroneamente due volte in script o pipeline
Con queste intenzioni di ricerca in mente, le sezioni seguenti spiegheranno in dettaglio l’uso corretto, i metodi di configurazione e le tecniche di risoluzione dei problemi per sudo.
2. Uso di base del comando sudo
Sintassi di base di sudo
La sintassi di base di sudo è molto semplice:
sudo [options] command
Ad esempio, per aggiornare le informazioni sui pacchetti del sistema:
sudo apt update
Ciò significa che il comando apt update viene eseguito con privilegi di root.
Autenticazione con password e caching delle credenziali
Quando usi sudo per la prima volta, o dopo che è trascorso un certo intervallo di tempo, il sistema ti chiederà di inserire la password del tuo utente. Questo meccanismo di sicurezza aiuta a prevenire usi accidentali o accessi non autorizzati.
Dopo aver inserito la password, questa viene memorizzata in cache per un periodo fisso (5 minuti per impostazione predefinita su Ubuntu). Durante questo intervallo, i successivi comandi sudo non richiedono di reinserire la password. Questo timeout può essere modificato nel file sudoers.
Opzioni comunemente usate
sudo offre molte opzioni per rendere le operazioni più flessibili e comode. Di seguito sono elencate alcune delle più utilizzate.
-u (Esegui come un altro utente)
Per impostazione predefinita, i comandi vengono eseguiti come root, ma con l’opzione -u, è possibile eseguire un comando come qualsiasi utente specificato.
sudo -u www-data whoami
L’output sarà www-data, confermando che il comando è stato eseguito come utente www-data.
-s (Avvia un Shell)
Il seguente comando apre una shell temporanea con privilegi root:
sudo -s
Sii cauto quando lavori in una shell root.
-i (Simula un Accesso Root Completo)
Questa opzione crea un ambiente root più completo. Le variabili d’ambiente vengono cambiate in quelle di root, risultando in una sessione root simile all’accesso diretto come root.
sudo -i
-l (Elenca Comandi Consentiti)
Puoi verificare quali comandi sei autorizzato a eseguire con sudo:
sudo -l
Questo è utile per verificare le impostazioni di permesso e le restrizioni di sicurezza.
Punti Importanti per Principianti
- Devi includere uno spazio dopo
sudo. Ad esempio,sudoaptè incorretto. - Quando esegui più comandi, devi quotare l’intero comando o separarli con punti e virgola.
- Lanciare applicazioni GUI con
sudopuò danneggiare i file di configurazione , quindi dovrebbe essere generalmente evitato (ad esempio,sudo gedit).
3. Il File sudoers e il Controllo di Accesso
Cos’è il File sudoers?
Il file di configurazione che controlla il comportamento del comando sudo è /etc/sudoers. Questo file definisce chi può eseguire quali comandi usando sudo.
Ad esempio, permette un controllo di accesso granulare come autorizzare un utente a eseguire solo comandi specifici con sudo.
Questa flessibilità rende possibile seguire il principio del privilegio minimo, concedendo agli utenti solo i permessi minimi di cui hanno bisogno.
Modifica Sicura con il Comando visudo
Non dovresti mai modificare /etc/sudoers direttamente con un editor di testo.
Un errore di sintassi in questo file può disabilitare sudo completamente, rendendo difficile il recupero del sistema. Per questo motivo, è fortemente raccomandato modificarlo usando il comando visudo.
sudo visudo
visudo esegue un controllo di sintassi prima di salvare, permettendo cambiamenti di configurazione sicuri.
Sintassi Base ed Esempi di Configurazione
La sintassi base del file sudoers è la seguente:
username hostname = (run-as user) allowed commands
Esempio:
alice ALL=(ALL:ALL) ALL
Questa configurazione permette all’utente alice di eseguire tutti i comandi come qualsiasi utente su tutti gli host.
Un esempio più ristretto:
bob ALL=(ALL) /usr/bin/systemctl restart nginx
Questo permette all’utente bob di eseguire solo il comando di riavvio nginx con sudo.
Controllo Basato su Gruppo: Il Gruppo sudo
Su molte distribuzioni come Ubuntu, gli utenti che appartengono al gruppo sudo sono autorizzati a usare sudo.
%sudo ALL=(ALL:ALL) ALL
Usando %sudo si abilita la gestione dei permessi basata su gruppo.
Per aggiungere un utente al gruppo sudo:
sudo usermod -aG sudo username
L’Opzione NOPASSWD e Considerazioni di Sicurezza
Se inserire la password ogni volta è scomodo, puoi usare l’opzione NOPASSWD per saltare l’autenticazione della password.
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Questo permette a alice di riavviare nginx senza inserire la password.
Tuttavia, questo aumenta il rischio di sicurezza, quindi è critico limitare l’uso solo a comandi specifici. Usare NOPASSWD con ALL non è raccomandato.
4. Uso Avanzato di sudo
Eseguire Comandi come un Utente Specifico
Sebbene sudo tipicamente esegua comandi come root, può anche eseguire comandi come altri utenti.
Ad esempio, per eseguire un comando come utente www-data:
sudo -u www-data whoami
L’output sarà www-data.
Questo è utile per verificare permessi e differenze d’ambiente tra utenti.
Usare sudo con Redirezione e Pipe
Un punto comune di confusione per i principianti è combinare sudo con redirezione (>) o pipe (|).
Il seguente comando sembra corretto ma non funziona come previsto:
sudo echo "test" > /etc/test.conf
Mentre echo viene eseguito con sudo, la ridirezione è gestita dalla shell come utente normale.
L’approccio corretto è usare tee:
echo "test" | sudo tee /etc/test.conf
Usare sudo negli script
Quando gli script richiedono privilegi amministrativi, aggiungi sudo solo ai comandi che ne hanno bisogno.
Esempio (install.sh):
#!/bin/bash
echo "Installing package..."
sudo apt install -y nginx
Un altro schema comune è verificare se lo script è eseguito come root:
if [ "$EUID" -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
Scorciatoie utili per sudo
sudo !!Riesegue il comando precedente con sudo.apt update sudo !!
sudo -kCancella le credenziali sudo memorizzate nella cache.sudo -vEstende la sessione sudo corrente.
5. Sicurezza e migliori pratiche
Seguire il principio del minimo privilegio
L’obiettivo principale dell’uso di sudo è operare il sistema con i privilegi minimi necessari.
- Consentire solo comandi specifici tramite sudo
- Limitare l’uso di
NOPASSWD - Gestire gli amministratori tramite gruppi
Registrazione e audit
sudo registra tutti i comandi eseguiti.
/var/log/auth.log(Ubuntu/Debian)journalctl(sistemi basati su systemd)grep 'sudo' /var/log/auth.logjournalctl _COMM=sudo

Vulnerabilità sudo nel mondo reale (CVE-2021-3156)
Sebbene sudo sia altamente affidabile, in passato sono state scoperte vulnerabilità serie.
Un esempio notevole è CVE-2021-3156 (Baron Samedit), che consentiva agli utenti locali di ottenere privilegi di root in condizioni specifiche.
- Mantieni sudo aggiornato
- Monitora gli avvisi di sicurezza
Alternativa a sudo: doas
Alcuni ambienti orientati alla sicurezza usano doas come alternativa più semplice a sudo.
doas apt update
Esempio di configurazione:
permit nopass :wheel
6. Errori comuni e risoluzione dei problemi
Utente non presente nel file sudoers
username is not in the sudoers file. This incident will be reported.
Ciò significa che l’utente non ha privilegi sudo.
sudo usermod -aG sudo username
Permesso negato con ridirezione
echo "test" | sudo tee /etc/test.conf
File sudoers corrotto
pkexec visudo
sudo: comando non trovato
apt update
apt install sudo
7. FAQ
Q1. Qual è la differenza tra sudo e su?
A: sudo eleva comandi individuali, mentre su cambia completamente utente.
Q2. È necessaria la password di root per sudo?
A: No. Inserisci la password del tuo utente.
Q3. Dove sono memorizzati i log di sudo?
/var/log/auth.log/var/log/securejournalctl _COMM=sudo
Q4. Ho rotto il file sudoers. Cosa devo fare?
Usa la modalità di recupero o pkexec visudo.
Q5. Posso ottenere privilegi di root senza sudo?
Sì, ma non è consigliato.
Q6. È sicuro eseguire applicazioni GUI con sudo?
No. Usa pkexec invece.
8. Riepilogo
Comprendere correttamente sudo
sudo è un meccanismo critico di controllo degli accessi, non solo un comando di comodità.
Un uso corretto previene i problemi
- Usa il minimo privilegio
- Modifica con
visudo - Revisiona i log
Scegli lo stile operativo giusto
Seleziona strumenti come sudo o doas in base alla tua politica di sicurezza.
Nota finale
Comprendere sudo è un passo fondamentale per padroneggiare l’amministrazione di sistemi Linux.


