- 1 1. Per Iniziare: Cos’è sudo?
- 2 2. Uso Base del Comando sudo
- 3 3. Il File sudoers e il Controllo di Accesso
- 4 4. Utilizzo Avanzato di sudo
- 5 5. Sicurezza e Best Practices
- 6 6. Errori comuni e risoluzione dei problemi
- 7 7. FAQ: Domande frequenti su sudo
- 7.1 Q1. Qual è la differenza tra sudo e su?
- 7.2 Q2. Devo inserire la password di root quando uso sudo?
- 7.3 Q3. Dove vengono registrati i log di sudo?
- 7.4 Q4. Ho modificato accidentalmente il file sudoers. Cosa devo fare?
- 7.5 Q5. Esiste un modo per ottenere privilegi di root senza usare sudo?
- 7.6 Q6. È accettabile avviare applicazioni GUI usando sudo?
- 8 8. Conclusione
1. Per Iniziare: Cos’è sudo?
Il Significato Base e il Ruolo di sudo
Nei sistemi Linux e Unix-like, “sudo” è un comando cruciale.
“sudo” è l’abbreviazione di “superuser do” ed è un strumento per prendere in prestito temporaneamente i privilegi di amministratore (privilegi root) per eseguire comandi. Tipicamente, gli utenti regolari non hanno l’autorità per eseguire operazioni che influenzano l’intero sistema (come installare pacchetti o modificare le impostazioni di sistema). Tuttavia, utilizzando il comando sudo, queste operazioni privilegiate possono essere eseguite in modo limitato.
Ad esempio, puoi eseguire il comando apt con privilegi root eseguendo il seguente comando:
sudo apt update
Quindi, sudo gioca un ruolo nel bilanciare la sicurezza del sistema e la convenienza come un “meccanismo per utilizzare in modo sicuro i privilegi di amministratore.”
Differenze dal Comando su
Esiste un comando su che ha uno scopo simile a sudo, ma ci sono differenze chiare tra i due.
susta per “substitute user” ed è un comando per passare a un altro utente (principalmente root). Quando usisu, le operazioni vengono eseguite in modo da “diventare completamente” l’utente specificato.- D’altra parte,
sudoesegue comandi con privilegi di amministratore presi in prestito temporaneamente mentre si rimane l’utente corrente.
In altre parole, su è un metodo di passaggio su base per sessione, mentre sudo è un metodo di elevazione dei privilegi su base per comando. Questa differenza è significativa in termini di sicurezza; sudo rende più facile gestire la cronologia delle operazioni e, nelle distribuzioni recenti, sudo è diventato il metodo standard.
Distribuzioni Linux Tipiche in Cui Viene Usato sudo
sudo viene utilizzato per impostazione predefinita in molte distribuzioni Linux, e il suo uso è particolarmente previsto nelle seguenti distribuzioni:
- Basate su Ubuntu (Ubuntu, Linux Mint, ecc.) → Inizialmente, non si accede direttamente all’account root, ma lo si gestisce con sudo.
- Basate su Debian → sudo potrebbe essere abilitato in seguito, ma è spesso raccomandato come politica di sicurezza.
- Fedora, CentOS e basate su Red Hat → Sebbene sia possibile utilizzare l’account root, l’uso di sudo è anch’esso comune.
Specialmente in Ubuntu, l’account root è disabilitato per impostazione predefinita, e tutte le operazioni amministrative sono progettate per essere eseguite tramite sudo. Pertanto, comprendere sudo è essenziale per gli utenti Ubuntu.
Perché Si Cerca “sudo sudo”?
La parola chiave di ricerca “sudo sudo” potrebbe sembrare ridondante a prima vista, ma ci sono casi in cui viene ricercata con le seguenti intenzioni:
- Principianti che vogliono conoscere il significato e l’uso di
sudolo inseriscono ripetutamente per enfasi. - Utenti che hanno incontrato problemi nell’uso di
sudo(ad es.,sudo: sudo: command not found) stanno cercando soluzioni. - Utenti che hanno visto esempi di uso doppio di
sudoin script o pipeline e si sono chiesti il motivo.
Comprendendo queste intenzioni di ricerca, i capitoli successivi spiegheranno in dettaglio l’uso corretto e i metodi di configurazione di sudo, nonché la risoluzione dei problemi.
2. Uso Base del Comando sudo
Sintassi Base di sudo
Il formato base di sudo è molto semplice.
sudo [options] command
Ad esempio, per aggiornare le informazioni sui pacchetti del sistema, usa il seguente:
sudo apt update
Questo comando significa “esegui ‘apt update’ con privilegi root.”
Meccanismo di Autenticazione della Password e Cache
La prima volta che usi sudo, o dopo un certo periodo di tempo, il sistema ti chiederà di inserire la password dell’utente. Questo è un meccanismo per migliorare la sicurezza e prevenire operazioni accidentali o uso non autorizzato da parte di terze parti.
Dopo aver inserito la password, viene memorizzata in cache per un certo periodo (5 minuti per impostazione predefinita in Ubuntu), e puoi omettere l’inserimento della password quando usi sudo di nuovo. Questo tempo può essere modificato nel file sudoers.
Opzioni Utilizzate Frequentemente
sudo ha molte opzioni per rendere le operazioni più comode e flessibili. Di seguito sono elencate alcune delle più comunemente usate.
-u (Esegui come un Altro Utente)
Per impostazione predefinita, utilizza i privilegi root, ma utilizzando l’opzione -u, è possibile eseguire comandi come qualsiasi utente.
sudo -u www-data whoami
Il risultato dell’esecuzione sarà www-data, confermando che “il comando è stato eseguito come www-data, non come me stesso.”
-s (Avvia un Shell)
Il seguente comando permette di aprire temporaneamente una shell con privilegi root.
sudo -s
Tuttavia, le operazioni nello stato root dovrebbero essere eseguite con cautela.
-i (Accedi come Utente Root Completo)
Questa opzione ricrea un ambiente root più completo. Poiché le variabili d’ambiente vengono anch’esse passate a quelle di root, diventa una sessione root nello stesso stato immediatamente dopo il login.
sudo -i
-l (Controlla i Comandi Eseguibili)
È anche possibile controllare i comandi che è possibile eseguire utilizzando sudo.
sudo -l
Questo è utile per controllare le restrizioni di sicurezza e testare le impostazioni dei privilegi.
Punti da Notare per i Principianti
- È necessario mettere uno spazio dopo
sudo. Esempio:sudoaptè errato. - Se si desidera eseguire più comandi, è necessario racchiudere l’intero comando tra virgolette (
"o') o separarli con punti e virgola. - Fate attenzione quando eseguite applicazioni GUI con
sudo, poiché potrebbe corrompere i file di configurazione (ad es.,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 nel sistema. Questo file definisce chi può eseguire quali comandi con sudo.
Ad esempio, è possibile un controllo di accesso granulare, come permettere a un certo utente di eseguire solo comandi specifici con sudo.
Questa flessibilità rende possibile realizzare il principio di sicurezza di concedere agli utenti solo i privilegi minimi necessari (principio del privilegio minimo).
Modifica Sicura con il Comando visudo
Il file /etc/sudoers non dovrebbe essere modificato direttamente con un editor di testo.
Questo perché un errore di sintassi può rendere sudo inutilizzabile, rendendo il recupero difficile. Pertanto, è raccomandato utilizzare il comando visudo per la modifica.
sudo visudo
visudo esegue il controllo della sintassi al momento del salvataggio, permettendo una modifica sicura.
Sintassi Base ed Esempi di Configurazione
La sintassi base del file sudoers è la seguente:
username hostname = (runas_user) command(s)
Esempio:
alice ALL=(ALL:ALL) ALL
Questa impostazione permette all’utente “alice” di eseguire tutti i comandi su tutti gli host come qualsiasi utente.
Per aggiungere più restrizioni:
bob ALL=(ALL) /usr/bin/systemctl restart nginx
Questa impostazione restringe l’utente “bob” a eseguire solo il “comando di riavvio di nginx” con sudo.
Controllo per Gruppo: Il Gruppo sudo
In molte distribuzioni come Ubuntu, agli utenti appartenenti al gruppo sudo viene concessa la privilegio di utilizzare sudo.
%sudo ALL=(ALL:ALL) ALL
Scrivendo %sudo in questo modo, diventa possibile la gestione per gruppo.
Per aggiungere un utente al gruppo sudo, utilizzare il seguente comando:
sudo usermod -aG sudo username
Come Utilizzare e Precauzioni per l’Opzione NOPASSWD
Se trovate fastidioso inserire la password ogni volta che eseguite sudo, potete utilizzare l’opzione NOPASSWD per saltare l’inserimento della password.
alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Con questa impostazione, l’utente “alice” sarà in grado di riavviare nginx senza password.
Tuttavia, questo aumenta i rischi di sicurezza, quindi è importante utilizzarlo solo per un numero limitato di comandi.
In particolare, combinarlo con ALL non è raccomandato.
4. Utilizzo Avanzato di sudo
Eseguire Comandi come un Utente Specifico
Normalmente, sudo esegue comandi con privilegi root, ma utilizzando le opzioni, è possibile anche eseguire comandi come qualsiasi utente.
Ad esempio, se si desidera eseguire un comando come l’utente “www-data” utilizzato dal server web, utilizzare il seguente:
sudo -u www-data whoami
Il risultato dell’esecuzione sarà www-data, confermando che “il comando è stato eseguito come www-data, non come me stesso.”
Questo uso è utile quando si desidera controllare ambienti o privilegi diversi per ciascun utente.
Combinazione con Redirect e Pipe
Un punto comune di confusione per i principianti è la combinazione di sudo con redirect (>) e pipe (|).
Ad esempio, il seguente comando potrebbe sembrare corretto a prima vista, ma non funzionerà come previsto:sudo echo "test" > /etc/test.conf
In questo caso, echo stesso viene eseguito con sudo, ma il redirect con > è eseguito con privilegi di utente regolare. Pertanto, la scrittura fallirà.
Il modo corretto è utilizzare il comando tee:
echo "test" | sudo tee /etc/test.conf
Facendo così, la parte del redirect viene eseguita anche con privilegi sudo, e si può evitare l’errore.
Utilizzo di sudo negli Script
Quando si includono comandi che richiedono privilegi di amministratore in uno script shell, aggiungere esplicitamente sudo prima del comando.
Tuttavia, se si sta creando uno script assumendo che verrà eseguito da un utente regolare, è più sicuro aggiungere sudo solo alle parti necessarie ed evitare di eseguire l’intero script con sudo.
Esempio (install.sh):
#!/bin/bash
echo "Installing package..."
sudo apt install -y nginx
C’è anche un pattern per controllare se è root all’inizio dello script:
if [ "$EUID" -ne 0 ]; then
echo "This script must be run as root"
exit 1
fi
Includendo tali controlli, diventa possibile un’operazione sicura dello script.
Comandi Convenienti Usati Frequentemente
sudo !!→ Riesegue il comando precedente con sudo. Ad esempio:apt update sudo !!
Questo ha lo stesso effetto di sudo apt update.
sudo -k→ Cancella manualmente la cache della password sudo. Questo è utile per ragioni di sicurezza, come prima di lasciare temporaneamente il terminale.sudo -v→ Estende i privilegi sudo per la sessione corrente. Questo è comodo per compiti lunghi.
5. Sicurezza e Best Practices
Adherire al Principio del Minimo Privilegio
Lo scopo principale dell’uso di sudo è abilitare operazioni di sistema con i privilegi minimi necessari.
In altre parole, l’uso ideale non è “essere sempre l’utente root onnipotente”, ma “prendere in prestito il potere di root solo quando necessario e nell’ambito necessario.”
Seguendo questo principio, le seguenti impostazioni, ad esempio, sono desiderabili:
- Permettere agli utenti di eseguire solo comandi specifici con sudo (ad es.,
systemctl restart nginx). - Minimizzare l’uso di NOPASSWD.
- Gestire gli utenti con privilegi amministrativi in gruppi (ad es.,
sudo).
Logging e Auditing
sudo registra i comandi eseguiti nei log. Questo permette di controllare in seguito chi ha usato quale comando e quando.
Le destinazioni principali dei log sono le seguenti (possono variare a seconda della distribuzione):
/var/log/auth.log(Ubuntu, basate su Debian)journalctl(distribuzioni con systemd)
Ad esempio, per controllare la cronologia di utilizzo di sudo in Ubuntu:
grep 'sudo' /var/log/auth.log
O:
journalctl _COMM=sudo
Questo rende possibile tracciare chi ha fatto cosa anche in caso di operazioni non autorizzate o accidentali. Questa è una prospettiva essenziale nella gestione del server.

Vulnerabilità Reale di sudo (CVE-2021-3156)
Sebbene sudo sia uno strumento molto affidabile, vulnerabilità significative sono state riportate in passato.
Un esempio particolarmente famoso è CVE-2021-3156 (comunemente noto come Baron Samedit), rilasciato nel 2021.
Questa era una vulnerabilità seria in cui, sotto certe condizioni, un input malizioso poteva permettere a un utente regolare di ottenere privilegi root.
Questo problema è già stato risolto, ma come mostra questo caso:
- Mantenere sempre pacchetti importanti inclusi sudo alla versione più recente .
- Controllare regolarmente siti ufficiali e database di vulnerabilità.
Tali misure sono necessarie.
Introduzione all’Alternativa a sudo: doas
In alcuni ambienti Linux minimalisti e tra gli utenti attenti alla sicurezza, un comando chiamato doas è anche usato come alternativa a sudo.
doas è uno strumento conciso di escalation dei privilegi originario di OpenBSD, caratterizzato dalla sua configurazione più semplice e maggiore sicurezza rispetto sudo.
Esempio:
doas apt update
Il file di configurazione è scritto in /etc/doas.conf. La sintassi è anch’essa semplice:
permit nopass :wheel
Come mostrato, è possibile scrivere facilmente impostazioni come consentire agli utenti del gruppo wheel di usare doas senza password.
Tuttavia, poiché doas non è fornito di default in alcuni ambienti Linux, è necessario un certo sforzo per installarlo e configurarlo.
A seconda dello scopo e dell’obiettivo, è opportuno scegliere se sudo o doas sia più adatto.
6. Errori comuni e risoluzione dei problemi
Errore “User is not in the sudoers file”
username is not in the sudoers file. This incident will be reported.
Questo errore viene visualizzato quando l’utente corrente non ha il permesso di usare sudo. Si verifica tipicamente quando un nuovo utente, non aggiunto al gruppo sudo, esegue un comando.
Soluzione:
- Accedi con un altro utente che possiede privilegi di root.
- Aggiungi l’utente target al gruppo
sudo.sudo usermod -aG sudo username
Dopo di ciò, esci e rientra nella sessione, e sudo sarà disponibile.
Errore “Permission denied” quando si usano redirezioni o pipe
Permission denied
Questo errore si verifica perché, anche se si intende eseguire un comando con sudo, lainazione della redirezione o l’elaborazione della pipe avviene al di fuori di sudo**.
Esempio errato:
sudo echo "test" > /etc/test.conf
In questo caso, echo è eseguito con sudo, ma la scrittura sul file avviene con i privilegi dell’utente normale, risultando in un errore.
Uso corretto:
echo "test" | sudo tee /etc/test.conf
Oppure, per scrivere più righe contemporaneamente, è meglio usare sudo tee o sudo bash -c.
sudo bash -c 'echo "line1" > /etc/test.conf'
Inoperatività dovuta a errori nella modifica del file sudoers
Se modifichi direttamente il file sudoers e commetti un errore di sintassi, sudo stesso può diventare inutilizzabile. È uno stato molto pericoloso.
Soluzione:
- Accedi con l’account root (nota che è disabilitato di default in Ubuntu).
- Ripara con il seguente comando:
pkexec visudo
Se pkexec non può essere usato, sarà necessario avviare in modalità di recupero o simile per modificare il file /etc/sudoers.
Inoltre, per prevenire errori di sintassi, usa sempre il seguente per modificare:
sudo visudo
“sudo: command not found”
sudo: command not found
Questo errore si verifica quando sudo non è installato sul sistema o non può essere trovato a causa di un problema con la variabile d’ambiente PATH.
Soluzione:
- Accedi con privilegi di root e reinstalla sudo come segue:
apt update apt install sudo
- Oppure esegui specificando direttamente il percorso a
/usr/bin/sudo:/usr/bin/sudo ls
7. FAQ: Domande frequenti su sudo
Q1. Qual è la differenza tra sudo e su?
R:
sudo è un comando per “eseguire temporaneamente solo comandi specifici con privilegi di amministratore”, mentre su è un comando per “passare all’intero utente (principalmente root)”.
sudo: Eleva i privilegi solo per alcune operazioni mantenendo l’utente corrente.su: Cambia completamente a un altro utente.
Dal punto di vista della sicurezza e della cronologia delle operazioni, l’uso di sudo è consigliato negli ultimi anni.
Q2. Devo inserire la password di root quando uso sudo?
R:
No, di solito inserisci la tua password di accesso, non quella di root.
Questo serve a ridurre il rischio di perdita della password di root e a facilitare il tracciamento della cronologia delle operazioni dell’utente.
Q3. Dove vengono registrati i log di sudo?
R:
In molte distribuzioni Linux, i log delle operazioni di sudo sono registrati in uno dei seguenti:
- Basati su Ubuntu/Debian:
/var/log/auth.log - Basati su RHEL/CentOS:
/var/log/secure - Tutti gli ambienti systemd:
journalctl _COMM=sudo
Questo rende possibile tracciare chi ha fatto cosa anche in caso di operazioni non autorizzate o accidentali.
Q4. Ho modificato accidentalmente il file sudoers. Cosa devo fare?
R:
Prima di tutto, assicurati sempre di usare sudo visudo prima di modificare.
Se non riesci più a usare sudo a causa di un errore di sintassi, prova a ripararlo con uno dei seguenti metodi:
- Accedi con l’account root e correggi il file con
visudo. - Se è Ubuntu, avvia in modalità “Recovery” come root e riparalo.
pkexec visudo(in ambienti dovepolkitè abilitato).
Poiché gli errori di sintassi influenzano il funzionamento dell’intero sistema, verifica nuovamente dopo la correzione.
Q5. Esiste un modo per ottenere privilegi di root senza usare sudo?
R:
Sì, ma non è consigliato a causa dei maggiori rischi di sicurezza.
esempio:
- Passare a root con il comando
su(richiede la password di root). - Accedere direttamente con l’account root (disabilitato di default in Ubuntu).
Molte distribuzioni Linux hanno una politica che evita l’uso diretto dell’account root, e l’uso di sudo è più sicuro.
Q6. È accettabile avviare applicazioni GUI usando sudo?
R:
In generale, è meglio evitarlo. Per esempio, eseguire qualcosa come sudo gedit può sovrascrivere i file di configurazione GUI con privilegi di root, causando incoerenze di permessi o corruzione della configurazione.
Quando si usano applicazioni GUI, è consigliato utilizzare gksudo o pkexec come segue (tuttavia, questi strumenti potrebbero essere deprecati o non installati a seconda dell’ambiente):
pkexec gedit
8. Conclusione
Comprendere correttamente il ruolo di sudo
In questo articolo abbiamo spiegato in modo generale “sudo“, comando molto importante in Linux e nei sistemi Unix‑like, coprendo il suo ruolo di base, utilizzo, metodi di configurazione, applicazioni, misure di sicurezza, errori comuni e FAQ.
sudo non è solo qualcosa da “mettere davanti a un comando”, ma un meccanismo di controllo degli accessi importante che consente di svolgere le operazioni necessarie mantenendo la sicurezza del sistema.
Un uso corretto previene problemi
Prestare particolare attenzione ai seguenti punti è la chiave per usare sudo in modo sicuro:
- Operare con i privilegi minimi necessari (principio del minimo privilegio).
- Gestire le impostazioni in modo sicuro usando
visudo. - Utilizzare i log per controllare e gestire la cronologia delle operazioni.
- Fare attenzione al comportamento quando si combinano pipe e redirect.
- Evitare, in generale, di usarlo per applicazioni GUI.
La mancata comprensione di questi aspetti può portare a problemi come “file corrotti”, “impostazioni non ripristinabili” o “sudo inutilizzabile”.
Scegli uno stile che si adatti alla tua operatività
Linux è un sistema molto flessibile. Oltre a sudo, è possibile utilizzare strumenti alternativi come doas quando necessario.
In base alla tua politica operativa e di sicurezza, scegli lo stile che più ti si addice e configuralo e usalo correttamente, così otterrai una gestione del sistema### In conclusione
Comprendere sudo è il primo passo per comprendere Linux.
Acquisisci la conoscenza e l’uso corretti non solo come comando comodo, ma come una “chiave” per proteggere l’intero sistema.
Speriamo prossima volta che utilizzerai Linux, ognuno dei tuoi comandi venga eseguito con maggiore sicurezza.



