Skip to main content
  1. Comandi/

su - substitute user

·3 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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'utente

La 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 caricati

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

ComandoCosa faNote Blue Team
su utenteCambia utente, mantieni ambienteLascia traccia in auth.log
su - utenteLogin completo come utentePiu' completo, piu' tracciabile
su -Login completo come rootEquivalente a su - root
su -c 'cmd' utenteEsegui un comando come utenteUtile per singole operazioni
exitTorna all'utente precedenteChiude 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 root

su -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.log
Important

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 su

Collegato a
#

Related