Cosa fa#
Esegue un singolo comando con i privilegi di un altro utente, tipicamente root. La configurazione di chi puo' fare cosa e' in /etc/sudoers. Ogni esecuzione viene loggata in auth.log — questo e' il motivo per cui e' preferito a su in ambienti multi-utente.
TL;DR#
sudo comando # esegui come root (chiede la tua password)
sudo -u utente cmd # esegui come un utente specifico
sudo -l # mostra cosa puoi fare con sudo
sudo !! # riesegui l'ultimo comando come root
sudo su - # apri una shell root completa via sudoComandi essenziali#
| Comando | Cosa fa | Note |
|---|---|---|
sudo comando | Esegui come root | Usa la TUA password, non quella di root |
sudo -u mario cmd | Esegui come utente mario | Utile per test con utenti diversi |
sudo -l | Lista cosa puoi fare | Fondamentale in Blue Team e in CTF |
sudo -i | Apri shell root interattiva | Come su - ma tramite sudo |
sudo su - | Apri shell root completa | Alternativa comune a sudo -i |
sudo !! | Riesegui ultimo cmd come root | Quando dimentichi sudo davanti |
sudo visudo | Modifica sudoers in sicurezza | NON modificare sudoers con editor diretto |
sudo -l — il comando piu' importante in CTF e Blue Team#
sudo -l
# Output tipico:
# Matching Defaults entries for barno on kali:
# env_reset, secure_path=...
# User barno may run the following commands on kali:
# (ALL : ALL) ALL
# Lettura:
# (chi puoi impersonare : quale gruppo) COMANDO
# (ALL : ALL) ALL = puoi fare tutto come chiunque — sei amministratore completo
# (root) /usr/bin/apt = puoi eseguire SOLO apt come rootIn un CTF o in un pentest, sudo -l e' il primo comando da eseguire dopo aver ottenuto accesso a un sistema. Mostra immediatamente i vettori di privilege escalation disponibili.
/etc/sudoers — struttura base#
# Formato:
# utente host=(runas:gruppo) COMANDI
# Esempi:
barno ALL=(ALL:ALL) ALL # barno puo' fare tutto
mario ALL=(ALL) /usr/bin/apt # mario puo' solo apt
%sudo ALL=(ALL:ALL) ALL # il GRUPPO sudo puo' fare tutto
# %nome = gruppo (il % distingue utenti da gruppi)
# Vedere chi e' nel gruppo sudo:
getent group sudoPerche' sudo cd non funziona#
cd non e' un programma — e' un builtin della shell. Non esiste come file eseguibile in /usr/bin/, quindi sudo non puo' avviarlo come processo separato.
sudo cd /var/ossec/etc # ERRORE: cd non e' un eseguibile
# sudo: cd: command not found
# Soluzione: apri una shell root, poi naviga normalmente
sudo -i
cd /var/ossec/etc # ora funzionasudo -i reinizializza tutto l'ambiente (PATH, HOME, variabili) come se avessi fatto il login come root.
sudo -s mantiene invece l'ambiente dell'utente corrente — utile se vuoi i tuoi alias e variabili.
Differenza con su#
su sudo
───────────────────── ─────────────────────────────
Richiede password di root Richiede la TUA password
Apre una shell Esegue un singolo comando
Traccia meno granulare Ogni comando loggato
Condivide credenziali root Root rimane isolato
Meno flessibile Granulare: puoi limitare i comandiTracce in auth.log#
# Comando eseguito con successo:
# Mar 23 07:15:02 hostname sudo: barno : TTY=pts/0 ;
# PWD=/home/barno ; USER=root ; COMMAND=/usr/bin/apt update
# Tentativo non autorizzato:
# Mar 23 07:16:11 hostname sudo: barno : user NOT in sudoers ;
# TTY=pts/0 ; PWD=/home/barno ; USER=root ; COMMAND=/usr/bin/cat /etc/shadow
# Cerca tutti i sudo in auth.log:
grep "sudo:" /var/log/auth.log(ALL : ALL) ALL in sudoers significa che quell'utente ha accesso root completo. In un'analisi di hardening, ogni utente con questa regola va giustificato. Se trovi un utente non amministratore con questa configurazione, e' un alert.
Scenario Reale#
# ATTACCO — Privilege escalation via sudo
# Un attaccante con accesso utente normale esegue:
sudo -l
# Scopre: (ALL) /usr/bin/find
# find ha un flag -exec che permette di eseguire comandi arbitrari:
sudo find / -name "qualcosa" -exec /bin/bash \;
# Risultato: shell root
# DIFESA — audit regolare dei sudoers
# Verifica chi puo' usare sudo e con quali comandi:
grep -v "^#" /etc/sudoers | grep -v "^$"
getent group sudoCollegato a#
- iam — categoria
- system — categoria
- su — alternativa, richiede password root
- linux-permissions-ugo — contesto permessi
- user-management-cheatsheet — gestione utenti


