su (Unix)

Da Wikipedia, l'enciclopedia libera.

In informatica su (abbreviazione dalla lingua inglese di switch user o di substitute user, cambia utente o sostituisci utente) è 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 tramite il comando su.

Uso[modifica | modifica sorgente]

La sintassi tipica di su è la seguente:

su [utente [arg1 …] ] [-]

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[modifica | modifica sorgente]

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

su -

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

su root -c "mkdir /opt/esempio"

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

su - alice

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

su alice

Note[modifica | modifica sorgente]

  1. ^ (EN) Why GNU su does not support the ‘wheel’ group in GNU Coreutils manual. URL consultato il 17-05-2008.
  2. ^ (EN) Blocking; su to root, by one and sundry in Securing and Optimizing Linux: Red Hat Edition - A Hands on Guide. URL consultato il 17-05-2008.

Voci correlate[modifica | modifica sorgente]

  • sudo – Esegue comandi con l'identità di altri utenti.
sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di sicurezza informatica