Cosa fa#
Avvia una shell con l'identita' di un altro utente. Senza flag cambia solo l'utente mantenendo l'ambiente corrente. Con - simula un login completo: carica i dotfile, cambia la home directory e resetta le variabili d'ambiente.
TL;DR#
su root # cambia utente ma mantieni l'ambiente attuale
su - root # login completo: nuovo ambiente, nuova home, dotfile caricati
su - barno # diventa barno con il suo ambiente completo
su -c 'comando' utente # esegui un singolo comando come quell'utenteLa differenza critica: su vs su -#
# Senza trattino — ambiente ibrido
su root
- sei root
- sei ancora nella directory da cui hai lanciato su
- le variabili d'ambiente (PATH, HOME) sono ancora le tue
- i dotfile di root NON vengono caricati
# Con trattino — login completo
su - root
- sei root
- sei in /root (home di root)
- PATH, HOME, SHELL resettati a quelli di root
- ~/.bash_profile e ~/.bashrc di root vengono caricatiIn un contesto di attacco, su - e' piu' pericoloso perche' l'attaccante ottiene l'ambiente completo dell'utente target, inclusi alias e script potenzialmente utili per muoversi nel sistema.
Comandi essenziali#
| Comando | Cosa fa | Note Blue Team |
|---|---|---|
su utente | Cambia utente, mantieni ambiente | Lascia traccia in auth.log |
su - utente | Login completo come utente | Piu' completo, piu' tracciabile |
su - | Login completo come root | Equivalente a su - root |
su -c 'cmd' utente | Esegui un comando come utente | Utile per singole operazioni |
exit | Torna all'utente precedente | Chiude la shell aperta da su |
- usato come argomento singolo significa login shell in molti comandi Unix. La tradizione risale agli anni '70 — indicava "comportati come se stessi facendo un login completo".su - root # login completo come rootsu -l barno # equivalente con flag esplicito bash -l # apri bash come login shell ```
Tracce in auth.log#
# Tentativo riuscito:
# Mar 23 07:12:34 hostname su: (to root) barno on pts/0
# Tentativo fallito:
# Mar 23 07:13:01 hostname su: FAILED SU (to root) barno on pts/0
# Cerca tutti i cambi utente nel log:
grep " su:" /var/log/auth.logImportant
su richiede la password dell'utente target (es. password di root).
sudo richiede la password dell'utente corrente.
Questa differenza cambia il modello di sicurezza: con su devi condividere la password di root, con sudo no.
Scenario Reale#
# DIFESA — monitoraggio escalation privilegio
# Un analista cerca cambi di utente sospetti in auth.log:
grep "su:" /var/log/auth.log | grep -v "pam_unix"
# Pattern sospetto: molti tentativi falliti verso root
# seguiti da un successo alle 3:14 di notte = possibile brute force su suCollegato a#
- iam — categoria
- system — categoria
- sudo — alternativa moderna, piu' granulare
- shell-interattiva — su apre una nuova shell
- linux-permissions-ugo — contesto permessi


