Su (Unix)
su (da switch user o substitute user) è un comando dei sistemi operativi Unix e Unix-like 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[1], anche se tecnicamente possibile[2]) solo gli utenti che appartengono al gruppo speciale wheel possono assumere l'identità di root.
Uso
La sintassi tipica di su è la seguente:
su [-] [utente [arg1 ..] ]
Il parametro 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 diventa quella 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 una riga di comando da far 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 si che la shell esegua il comando "ls -l".
Esempi
Un utente non privilegiato può avviare una shell come root:
su -
Un utente non privilegiato può eseguire direttamente un comando come root:
su root -c "mkdir /opt/esempio"
L'utente root avvia una shell nei panni dell'utente non privilegiato alice:
su - alice
Note
- ^ (EN) Why GNU su does not support the ‘wheel’ group, in GNU Coreutils manual. URL consultato il 17-05-2008.
- ^ (EN) Blocking; su to root, by one and sundry, in Securing and Optimizing Linux: RedHat Edition - A Hands on Guide. URL consultato il 17-05-2008.
Voci correlate
- sudo – Esegue comandi con l'identità di altri utenti.