Le differenze tra Su, Sudo Su, Sudo -s e Sudo -i

Esistono molti modi diversi per ottenere una sessione di root nel terminale Linux. Ciò può creare confusione, poiché la maggior parte degli utenti principianti che stanno cercando di ottenere i privilegi di root potrebbe non avere familiarità con il modo in cui ciascun comando può ottenere l’accesso come root, come sono diversi e quando queste differenze sono importanti. Qui separiamo ciascuno dei molti comandi diversi utilizzati per ottenere l’accesso come root in un terminale, spieghiamo come ottengono il root, quando usarli e tutto il resto.
Il su
comando sostituisce l’utente corrente che il sistema sta utilizzando nella shell.
Puoi passare a qualsiasi utente digitando su
e aggiungendo un nome utente dopo di esso. Questo dirà al sistema di passare (ed essenzialmente disconnettersi) dall’utente corrente a quello specificato. In alternativa, il su
il comando può ottenere l’accesso come root inserendo su
senza specificare nulla dopo il comando.
“su” è meglio utilizzato quando un utente desidera l’accesso diretto all’account root sul sistema. Non passa sudo
o qualcosa del genere. Invece, ti viene chiesto di inserire la password dell’utente root perché stai letteralmente accedendo ad essa. Inoltre, altri modi per ottenere l’accesso come root non hanno il vantaggio di ottenere anche l’accesso alla directory principale di root e all’ambiente di root.
Questo comando richiede la password dell’utente corrente invece di root.
È essenzialmente lo stesso che correre su
nella shell, salvo una differenza cruciale. Invece di dire al sistema di “cambiare utente” direttamente, gli stai dicendo di eseguire il comando “su” come root. quando sudo su
viene eseguito, “.profile”, “.bashrc” e “/etc/profile” verranno avviati, proprio come l’esecuzione su
(o su root
). Se viene eseguito un comando con sudo
davanti ad esso, gli vengono dati i privilegi di root.
Sebbene non ci sia una grande divergenza tra “sudo su” e “su”, sudo su
è ancora un comando molto utile per un motivo importante: quando un utente esegue “su” per ottenere l’accesso come root su un sistema, deve conoscere la password di root. La radice è data con sudo su
richiedendo la password dell’utente corrente. Ciò rende possibile ottenere il root senza la password di root che aumenta la sicurezza.
Usando sudo -i
è praticamente uguale a sudo su
comando con un’eccezione: non interagisce direttamente con l’utente root.
proprio come sudo su
, il -i
flag consente a un utente di ottenere un ambiente root senza dover conoscere la password dell’account root. sudo -i
è anche molto simile all’uso sudo su
, poiché leggerà tutti i file ambientali (.profile, ecc.) e imposterà l’ambiente all’interno della shell.
Dove differisce da “sudo su” è che sudo -i
è un modo molto più pulito per ottenere root e un ambiente root senza interagire direttamente con l’utente root. Per chiarire: Con sudo su
stai usando più di una radice setuid
comando in background. Ciò rende molto più difficile capire quali variabili ambientali verranno mantenute e quali verranno modificate (quando si passa all’ambiente root). Questo non è vero con sudo -i
. Per questo motivo, la maggior parte delle persone lo vede come il metodo preferito per ottenere il root senza accedere direttamente.
Questo comando richiama una shell con la tua variabile $SHELL.
Il -s
L’opzione per il comando “sudo” legge la variabile $SHELL dell’utente corrente che esegue i comandi. Questo comando funziona come se l’utente fosse in esecuzione sudo /bin/bash
. Sudo -s
è una shell in stile “non login”. A differenza di un comando come sudo -i
o sudo su
, il sistema non leggerà alcun file ambientale. Quando un utente dice alla shell di avviarsi sudo -s
, ottiene il root ma non cambierà l’utente o l’ambiente dell’utente. La tua casa non sarà la casa principale, ecc.
Questo comando è meglio utilizzato quando l’utente non vuole passare a root ma vuole una shell interattiva con il suo valore di ambiente $SHELL. Altri comandi di cui sopra ottengono l’accesso root ma toccano i file ambientali di root e consentono agli utenti un accesso più completo a root (che può essere un problema di sicurezza).
Ogni comando ha il suo caso d’uso. La cosa importante qui è capire cosa fa ogni comando e quando usarli. Così com’è, sudo -i
è il modo più pratico e pulito per ottenere un ambiente root. D’altra parte, quelli che usano sudo -s
scopriranno che possono ottenere una shell di root senza la possibilità di toccare l’ambiente di root, cosa che ha aggiunto vantaggi in termini di sicurezza.
In alcuni casi sì. A meno che tu non sia assolutamente sicuro di dover accedere a root per tutto in una particolare sessione del terminale, spesso è meglio digitare sudo
seguito da un comando se si desidera accedere a root per quel particolare comando. Ad esempio, digitando sudo apt install vlc
in qualsiasi versione di Linux basata su Debian direbbe al sistema operativo di accedere a root solo per eseguire il gestore di pacchetti APT per installare VLC.
Un avvertimento molto importante per la corsa sudo -i
o qualsiasi altra variante di cui abbiamo discusso in precedenza rispetto alla digitazione sudo
prima di ogni comando che vuoi eseguire come root è che il primo non registra la cronologia dei comandi in /var/log/auth.log
. Se sbagli, non puoi tornare indietro e controllare cosa hai fatto in modo da poterlo correggere. Dovrai operare senza memoria, poiché le sessioni di root non vengono registrate.
Digitando sudo
per eseguire un comando (cioè, lo stai digitando nella stessa riga del comando che vuoi eseguire), essenzialmente lo stai eseguendo in una shell di root interattiva. Questo sarebbe quello che sudo -s
il comando autonomo lo fa.
Non c’è davvero un comando in questa lista che sia il migliore al 100%. Man mano che gli utenti si sentono più a loro agio con la riga di comando, dovranno prendere in considerazione ogni modo per ottenere il root (e ce ne sono molti) e valutare i pro ei contro e agire di conseguenza. Spero che con l’aiuto di questo articolo queste decisioni saranno più facili da prendere. Se vuoi saperne di più sui comandi, leggi questo articolo sui comandi utili di Linux per elencare il contenuto di una directory.
Ricevi gli aggiornamenti dei nostri ultimi tutorial.
Miguel è un esperto di tecnologia e crescita aziendale da più di un decennio e scrive software da ancora più tempo. Dal suo piccolo castello in Romania, presenta prospettive fredde e analitiche su cose che influenzano il mondo della tecnologia.
Le differenze tra i vari comandi non sono esoteriche per tutti tranne che per i normali utenti della CLI? I proverbiali utenti “regolari” devono davvero preoccuparsi di queste sottili differenze?
Uso occasionalmente “sudo command” per singoli comandi. Quando ho bisogno di un accesso root più lungo, accedo come root. Sì, mi rendo conto delle insidie.
Leave a Reply