Linux Commands · 7 min read · Jan 31, 2026
Comprendere la differenza tra i comandi sudo e su su Linux

In uno dei nostri articoli precedenti, abbiamo discusso in dettaglio il comando ‘sudo’. Verso la fine di quel tutorial, è stata menzionata un’altra comando simile ‘su’ in una piccola nota. Bene, in questo articolo discuteremo in dettaglio il comando ‘su’ e come si differenzia dal comando ‘sudo’.
Ma prima di fare ciò, si prega di notare che tutte le istruzioni e gli esempi menzionati in questo tutorial sono stati testati su Ubuntu 18.04 LTS e Debian 10.
Il comando su in Linux
Il lavoro principale del comando su è quello di consentire di passare a un altro utente durante una sessione di accesso. In altre parole, lo strumento ti consente di assumere l’identità di un altro utente senza dover disconnettersi e poi accedere (come quell’utente).
Il comando su è principalmente utilizzato per passare all’account superuser/root (poiché i privilegi di root sono frequentemente richiesti durante il lavoro sulla riga di comando), ma - come già accennato - puoi usarlo per passare a qualsiasi altro utente non root.
Ecco come puoi utilizzare questo comando per passare all’utente root:
La password richiesta da questo comando è anche quella dell’utente root. Quindi, in generale, il comando su richiede di inserire la password dell’utente target. Dopo che la password corretta è stata inserita, lo strumento avvia una sotto-sessione all’interno della sessione esistente nel terminale.
su -
C’è un altro modo per passare all’utente root: eseguire il comando ‘su -‘:
Ora, qual è la differenza tra ‘su’ e ‘su -‘? Bene, il primo mantiene l’ambiente del vecchio/utente originale anche dopo che è stata effettuata la transizione a root, mentre il secondo crea un nuovo ambiente (come dettato dal ~/.bashrc dell’utente root), simile al caso in cui accedi esplicitamente come utente root dalla schermata di accesso.
IMPORTANTE per gli utenti di Debian 10. La variabile PATH dell’utente root differisce su Debian 10 quando si utilizza ‘su’ rispetto a ‘su -‘, le directory come /sbin mancano quando viene utilizzato solo ‘su’, il che significa che potresti ricevere errori di comando non trovato anche per comandi di amministrazione di sistema di base. Quindi usa sempre ‘su -‘ su Debian 10 per diventare utente root.
La pagina man di ‘su’ chiarisce anche:
L'argomento opzionale - può essere utilizzato per fornire un ambiente simile a quello che l'utente si aspetterebbe se l'utente si fosse connesso direttamente.Quindi, sarai d’accordo che accedere con ‘su -‘ ha più senso. Ma poiché esiste anche il comando ‘su’, ci si potrebbe chiedere quando è utile. Il seguente estratto - tratto dal sito wiki di ArchLinux - fornisce una buona idea sui benefici e i rischi del comando ‘su’:
A volte può essere vantaggioso per un amministratore di sistema utilizzare l’account shell di un utente ordinario piuttosto che il proprio. In particolare, occasionalmente il modo più efficiente per risolvere un problema di un utente è accedere all’account di quell’utente per riprodurre o eseguire il debug del problema.
Tuttavia, in molte situazioni non è desiderabile, o può persino essere pericoloso, che l’utente root operi dall’account shell di un utente ordinario e con le variabili ambientali di quell’account piuttosto che dal proprio. Utilizzando involontariamente l’account shell di un utente ordinario, root potrebbe installare un programma o apportare altre modifiche al sistema che non avrebbero lo stesso risultato se fossero state effettuate mentre si utilizzava l’account root. Ad esempio, potrebbe essere installato un programma che potrebbe dare all’utente ordinario il potere di danneggiare accidentalmente il sistema o ottenere accesso non autorizzato a determinati dati.
Nota: Nel caso tu voglia passare più argomenti dopo - in ‘su -‘, allora dovresti usare l’opzione della riga di comando -l che il comando offre (invece di -). Ecco la definizione di - e l’opzione della riga di comando -l:
-, -l, --login
Fornire un ambiente simile a quello che l'utente si aspetterebbe se l'utente si fosse connesso direttamente.
Quando - viene utilizzato, deve essere specificato come ultima opzione su. Le altre forme (-l e --login) non hanno questa restrizione.su -c
C’è un’altra opzione del comando ‘su’ che vale la pena menzionare: -c. Ti consente di fornire un comando che desideri eseguire dopo essere passato all’utente target.
La pagina man di ‘su’ lo spiega così:
-c, --command COMMAND
Specifica un comando che sarà invocato dalla shell utilizzando il suo -c.
Il comando eseguito non avrà terminale di controllo. Questa opzione non può essere utilizzata per eseguire programmi interattivi che necessitano di un TTY di controllo.Considera il seguente esempio di modello:
su [utente-target] -c [comando-da-eseguire]Quindi in questo caso, il ‘comando-da-eseguire’ sarà eseguito come:
[shell] -c [comando-da-eseguire]Dove ‘shell’ verrebbe sostituito dalla shell dell’utente-target definita nel /etc/passwd.
Sudo vs Su
Ora che abbiamo discusso le basi del comando ‘su’, è tempo di discutere le differenze tra i comandi ‘sudo’ e ‘su’.
Password
La principale differenza tra i due è la password che richiedono: mentre ‘sudo’ richiede la password dell’utente corrente, ‘su’ richiede di inserire la password dell’utente root.
Chiaramente, ‘sudo’ è un’alternativa migliore tra i due per quanto riguarda la sicurezza. Ad esempio, considera il caso di un computer utilizzato da più utenti che richiedono anche accesso root. Utilizzare ‘su’ in un tale scenario significa condividere la password di root con tutti loro, il che non è una buona pratica in generale.
Inoltre, nel caso tu voglia revocare l’accesso superuser/root di un particolare utente, l’unico modo è cambiare la password di root e poi ridistribuire la nuova password di root tra tutti gli altri utenti.
Con Sudo, d’altra parte, puoi gestire entrambi questi scenari senza sforzo. Dato che ‘sudo’ richiede agli utenti di inserire la propria password, non è necessario condividere la password di root con tutti gli utenti in primo luogo. E per fermare un particolare utente dall’accesso ai privilegi di root, tutto ciò che devi fare è modificare l’entry corrispondente nel file ‘sudoers’.
Comportamento predefinito
L’altra differenza tra i due comandi è nel loro comportamento predefinito. Mentre ‘sudo’ consente solo di eseguire un singolo comando con privilegi elevati, il comando ‘su’ avvia una nuova shell, consentendoti di eseguire quanti più comandi desideri con privilegi di root fino a quando non esci esplicitamente da quella shell.
Quindi il comportamento predefinito del comando ‘su’ è potenzialmente pericoloso dato che l’utente può dimenticare il fatto che sta lavorando come root e potrebbe involontariamente apportare alcune modifiche irreversibili (come eseguire il comando ‘rm -rf’ nella directory sbagliata). Per una discussione dettagliata su perché non è incoraggiato lavorare sempre come root, vai qui.
Registrazione
Sebbene i comandi eseguiti tramite ‘sudo’ siano eseguiti come utente target (che è ‘root’ per impostazione predefinita), sono contrassegnati con il nome utente del sudoer. Ma nel caso di ‘su’, non è possibile rintracciare direttamente cosa ha fatto un utente dopo che è passato all’account root.
Flessibilità
Il comando ‘sudo’ è molto più flessibile in quanto puoi persino limitare i comandi a cui vuoi che i sudoer abbiano accesso. In altre parole, agli utenti con accesso a ‘sudo’ possono essere dati solo accesso ai comandi necessari per il loro lavoro. Tuttavia, con ‘su’ ciò non è possibile: o hai il privilegio di fare tutto o niente.
Sudo su
Presumibilmente a causa dei potenziali rischi coinvolti nell’utilizzo di ‘su’ o nel registrarsi direttamente come root, alcune distribuzioni Linux - come Ubuntu - disabilitano l’account utente root per impostazione predefinita. Gli utenti sono incoraggiati a utilizzare ‘sudo’ ogni volta che hanno bisogno di privilegi di root.
Tuttavia, puoi comunque eseguire ‘su’ con successo, cioè, senza inserire la password di root. Tutto ciò che devi fare è eseguire il seguente comando:
sudo suPoiché stai eseguendo il comando con ‘sudo’, ti verrà richiesto di inserire solo la tua password. Quindi, una volta fatto, il comando ‘su’ verrà eseguito come root, il che significa che non chiederà alcuna password.
PS: Nel caso tu voglia abilitare l’account root sul tuo sistema (anche se ciò è fortemente sconsigliato perché puoi sempre usare ‘sudo’ o ‘sudo su’), dovrai impostare manualmente la password di root, cosa che puoi fare utilizzando il seguente comando:
sudo passwd rootConclusione
Sia questo che il nostro precedente tutorial (che si concentra su ‘sudo’) dovrebbero darti una buona idea degli strumenti disponibili che ti consentono di svolgere compiti che richiedono privilegi elevati (o un insieme completamente diverso di privilegi). Nel caso tu abbia qualcosa da condividere su ‘su’ o ‘sudo’, o voglia condividere la tua esperienza, sei il benvenuto a farlo nei commenti qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.