Questo articolo esplora le differenze tra sudo
e su
comandi in Linux. Puoi anche guardare questo video per conoscere questi comandi. Diventare root permanentemente con su
è un noto 'no-no' nell'universo *nix. Come mai? Perché diventare root con su
significa che sei root, che equivale ad accedere a un terminale come utente root con la password di root. Ed è pericoloso per molte ragioni.
[ Potrebbe interessarti anche: Nozioni di base sulla riga di comando di Linux:sudo ]
Lavorare come root significa che hai il potere di:
- Rimuovi uno o tutti i file
- Modifica i permessi di uno o tutti i file
- Cambia il runlevel del sistema
- Modifica account utente
- Monta o smonta i filesystem
- Rimuovi o installa software
- Crea, rimuovi e modifica i file system
Fondamentalmente, puoi fare qualsiasi cosa al sistema come utente root. È l'onnipotente account amministrativo. E, a differenza di altri sistemi operativi più loquaci, non vedrai un "Sei sicuro?" finestra di dialogo per essere sicuri che rm -rf *
il comando che hai appena emesso era in /opt/tmp
anziché su /
. Come puoi immaginare, gli errori commessi come utente root possono essere irreversibili e devastanti. C'è un'alternativa:sudo
.
sudo
sudo
, che è l'acronimo di superutente do o sostituto utente do , è un comando che esegue un prompt con privilegi elevati senza la necessità di modificare l'identità. A seconda delle tue impostazioni in /etc/sudoers
file, puoi inviare singoli comandi come root o come un altro utente. Per continuare a eseguire i comandi con l'alimentazione di root, devi sempre usare il comando sudo. Ad esempio, se desideri installare Nginx pacchetto, esegui:
$ dnf install nginx
Ma vedrai un errore se non sei root o nel gruppo sudo. Invece, se esegui questo comando:
$ sudo dnf install nginx
Ti verrà chiesto di digitare la tua password, quindi potrai eseguire il comando se fai parte del gruppo sudo.
Un modo semplice per passare a una sessione interattiva come utente root è il seguente:
$ sudo -i
La teoria alla base dell'utilizzo di sudo è che l'atto di emettere il comando sudo prima di qualsiasi comando che esegui ti fa pensare di più a ciò che stai facendo e, si spera, fare meno errori con un account che possiede un potere illimitato.
su
su
, invece, è l'acronimo di cambia utente o utente sostitutivo . In pratica stai passando a un particolare utente e hai bisogno della password per l'utente a cui stai passando. Molto spesso, l'account utente a cui si passa è l'account root, ma può essere qualsiasi account del sistema.
Ad esempio, se digiti:
$ su -
Nell'esempio sopra, stai passando a root e hai bisogno della password di root. Il (-
) ti fornisce l'ambiente di root (percorso e variabili della shell) invece di darti semplicemente il potere dell'utente root per un singolo comando mantenendo il tuo ambiente.
$ su bryant
Per il secondo esempio, stai passando a bryant , quindi hai bisogno della password di Bryant a meno che tu non sia root.
Se vuoi passare a bryant account utente incluso il percorso di Bryant e le variabili di ambiente, utilizzare il (-
) interruttore:
$ su - bryant
Il (-
) ha lo stesso effetto dell'accesso a un sistema direttamente con quell'account utente. In sostanza, tu diventi quell'utente.
Concludi
Ricapitolando ciò che hai imparato.
sudo
ti consente di impartire comandi come un altro utente senza modificare la tua identità- Devi avere una voce in
/etc/sudoers
per eseguire queste autorizzazioni limitate sudo -i
ti porta a una sessione interattiva come rootsu
significa passare a un particolare utente- Semplicemente digitando
su
passa all'utente root sudo
chiederà la tua password, mentresu
chiederà la password per l'utente a cui stai passando
[ Vuoi saperne di più sulla sicurezza? Consulta la checklist di sicurezza e conformità IT. ]
Ma quando ne usi uno, non un altro? Dal momento che il sudo
la politica è definita in /etc/sudoers
, questo può fornire potenti controlli delle autorizzazioni. Da sudo
può praticamente fare tutto ciò che su
può, direi che è meglio attenersi a sudo
a meno che tu non stia lavorando con alcuni codici legacy che richiedono il su
comando.