4.6 KiB
Differenza tra sudo e su
su
Il comando su
(switch users) serve praticamente per diventare un altro utente ereditandone identificativo, identificativo del gruppo, privilegi, permessi
d’esecuzione e di navigazione ed in alcuni casi anche variabili d’ambiente, alias, percorsi predefiniti e quant’altro.
Richiede la password dell'utente di destinazione.
La sua sintassi di base è:
su <parametro_opzionale> nomeutente
Se invocato senza parametri il nomeutente viene impostato automaticamente a root.
sudo -
Il comando su -
è simile al comando su, ma cambia anche l'ambiente dell'utente corrente in quello dell'utente root. Ciò significa che le variabili
d'ambiente dell'utente corrente vengono sostituite con quelle dell'utente root.
sudo
Il comando sudo
prende come input un comando – non un utente – e permette di eseguire il comando passato in input con i privilegi definiti nel file /etc/sudoers
.
In sostanza il comando sudo permette di fare ciò che farebbe un utente privilegiato senza il bisogno di possedere la sua password.
sudo <parametro_opzionale> comando_da_eseguire
Mentre con il comando su si cambia utente fino al termine della sessione del terminale, sudo assegna i privilegi dell'utente target al solo processo che viene con esso avviato.
L'utente target
non deve essere necessariamente l'amministratore, ma può essere un qualsiasi utente del sistema. Per scegliere l'utente target, usare l'opzione -u:
sudo -u target comando
Una volta digitato il comando, il sistema chiederà la password dell'utente attuale e non la password dell'utente target (a meno che non si configuri sudo in modo diverso). La password viene chiesta la prima volta e memorizzata per un certo lasso di tempo, quindi è possibile usare il comando sudo più volte consecutive senza dover inserire ogni volta la password.
Parametri alla riga di comando
sudo può essere lanciato con una serie di parametri che ne modificano il funzionamento temporaneamente. Quelli che seguono sono una parte delle opzioni disponibili:
Opzione | Risultato |
---|---|
-H | imposta la variabile di sistema $HOME con la cartella Home dell'utente target, cioè quello che eseguirà il comando, normalmente root; in maniera predefinita sudo lascia inalterata la $HOME |
-b | esegue il comando in background |
-k | serve a eliminare il salvataggio della password per l'utente; al successivo utilizzo di sudo verrà nuovamente richiesta la password |
-l | visualizza i comandi che si è autorizzati a usare o non usare |
-i | consente di entrare nella riga di comando come utente target simulando l'accesso per il nuovo utente e impostando le variabili d'ambiente; in pratica consente all'utente di diventare root e quindi non dover utilizzare sudo ad ogni successivo comando |
-s | consente di entrare nella riga di comando come utente target; questa opzione è quasi identica a -i, ma non imposta le variabili d'ambiente dell'utente target |