Skip to main content
  1. Comandi/

sudo - superuser do

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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 sudo

Comandi essenziali
#

ComandoCosa faNote
sudo comandoEsegui come rootUsa la TUA password, non quella di root
sudo -u mario cmdEsegui come utente marioUtile per test con utenti diversi
sudo -lLista cosa puoi fareFondamentale in Blue Team e in CTF
sudo -iApri shell root interattivaCome su - ma tramite sudo
sudo su -Apri shell root completaAlternativa comune a sudo -i
sudo !!Riesegui ultimo cmd come rootQuando dimentichi sudo davanti
sudo visudoModifica sudoers in sicurezzaNON 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 root
Important

In 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 sudo

Perche' 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 funziona

sudo -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 comandi

Tracce 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
Warning

(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 sudo

Collegato a
#

  • iam — categoria
  • system — categoria
  • su — alternativa, richiede password root
  • linux-permissions-ugo — contesto permessi
  • user-management-cheatsheet — gestione utenti

Related