Introduzione

L'utility su (substitute o switch user) consente di eseguire comandi con i privilegi di un altro utente, per impostazione predefinita l'utente root.

L'utilizzo di su è il modo più semplice per passare all'account amministrativo nella sessione di accesso corrente. Ciò è particolarmente utile quando l'utente root non è autorizzato ad accedere al sistema tramite ssh o utilizzando il display manager della GUI.

In questo tutorial, spiegheremo come usare il comando su.

Come usare il comando su

La sintassi generale per il comando su è la seguente:

su [OPTIONS] [USER [ARGUMENT...]]

Se richiamato senza alcuna opzione, il comportamento predefinito di su è eseguire una shell interattiva come root:

su

Ti verrà richiesto di inserire la password di root e, se autenticato, l'utente che esegue il comando diventa temporaneamente root.

Per confermare che l'utente è cambiato, utilizzare il comando whoami:

whoami

Il comando stamperà il nome dell'utente che esegue la sessione di shell corrente:

root

L'opzione più comunemente usata quando si richiama su è -, -l, --login. Questo rende la shell, una shell di login con un ambiente molto simile a un login reale e cambia la directory corrente:

su -

Se si desidera eseguire un'altra shell anziché quella definita nel file passwd, utilizzare l'opzione -s, --shell. Ad esempio, per passare a root ed eseguire la shell zsh digitare:

su -s /usr/bin/zsh

Per preservare l'intero ambiente (HOME, SHELL, USER e LOGNAME) dell'utente in uso, utilizzare l'opzione -p, --preserve-environment.

su -p

Quando viene utilizzata l'opzione -, l'opzione -p viene ignorata.

Se si desidera eseguire un comando come utente sostitutivo senza avviare una shell interattiva, utilizzare l'opzione -c, --command. Ad esempio, per invocare ilcomando ps come root, digitare:

su -c ps

Per passare a un altro account utente, passare il nome utente come argomento a su. Ad esempio, per passare all'utente noviello digitare:

su noviello

Sudo vs Su

Su alcune distribuzioni Linux come Ubuntu, l'account utente root è disabilitato per impostazione predefinita per motivi di sicurezza. Ciò significa che non è impostata alcuna password per root e non è possibile utilizzare su per passare a root.

Un'opzione per passare a root sarebbe quella di anteporre sudo al comando su e inserire la password dell'utente attualmente connesso:

sudo su -

Il comando sudo consente di eseguire programmi come un altro utente, per impostazione predefinita l'utente root.

Se si antepone sudo, il comando su verrà richiamato come root. L'esecuzione sudo su - e l'utilizzo della password utente sono gli stessi dell'esecuzione su - con la password di root.

Se utilizzato con l'opzione -i, sudo esegue una shell di accesso interattiva con l'ambiente dell'utente root:

sudo -i

sudo -i è praticamente lo stesso di su -.

Il vantaggio dell'utilizzo di sudo rispetto a su è che la password di root non deve essere condivisa tra più account utente amministrativi.

Inoltre, con sudo puoi consentire agli utenti di eseguire solo programmi specifici con privilegi di root.

Conclusione

su è un utility della riga di comando che ti consente di diventare temporaneamente un altro utente ed eseguire comandi con l'utente sostitutivo.