Su (Unix)
# Su (Unix)

su (abbreviazione dalla lingua inglese di substitute user, sostituisci utente) è un comando dei sistemi operativi Unix, Unix-like e Linux che permette di avviare una shell testuale assumendo l'identità di un altro utente del sistema. La shell avviata è quella predefinita per l'utente di cui si assume l'identità, ed è possibile passarle parametri per farle ad esempio eseguire direttamente un comando, che a questo punto sarà eseguito con la nuova identità.

su viene tipicamente usato da utenti non privilegiati per avviare una shell nei panni di root, e da root per avviare una shell nei panni di utenti ordinari.

Normalmente su richiede di effettuare un'autenticazione con le credenziali dell'utente di cui si vuole assumere l'identità. Ciò non è richiesto quando su viene eseguito dall'utente root.

Su alcuni sistemi (non GNU/Linux, anche se tecnicamente possibile) solo gli utenti che appartengono al gruppo speciale wheel possono assumere l'identità di root tramite il comando su.

In systemd il comando su è stato sostituito da machinectl shell.

## Sintassi

La sintassi tipica di su è la seguente:

Il parametro facoltativo utente specifica il nome dell'utente di cui si desidera assumere l'identità. Se non specificato si assume sia root.

Specificando un trattino "-" si indica di avviare una shell di login, che offre un ambiente sostanzialmente identico a quello che si otterrebbe effettuando la procedura di login testuale nei panni dell'utente di cui si assume l'identità (ad esempio la directory corrente viene impostata alla home directory dell'utente di cui si assume l'identità). Non specificandolo si ottiene invece un ambiente che in parte deriva da quello corrente.

I parametri facoltativi arg sono passati direttamente come parametri alla shell avviata con l'identità del nuovo utente; molte shell (come Bash o la Korn shell) supportano l'opzione "-c riga_di_comando", con la quale è possibile specificare loro un comando da eseguire, di fatto permettendo l'avvio diretto di altri programmi. Ad esempio "su alice -c 'ls -l'" avvia una nuova shell con l'identità dell'utente alice, e le passa i parametri "-c 'ls -l'", che tipicamente fanno sì che la shell esegua il comando "ls -l".

## Esempi

Un utente non privilegiato può avviare una shell come root:

Un utente non privilegiato può specificare un comando da far eseguire alla shell come utente root:

L'utente root avvia una shell nei panni dell'utente non privilegiato alice:

L'utente root assume l'identità dell'utente non privilegiato alice:

