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.
sudoti consente di impartire comandi come un altro utente senza modificare la tua identità- Devi avere una voce in
/etc/sudoersper eseguire queste autorizzazioni limitate sudo -iti porta a una sessione interattiva come rootsusignifica passare a un particolare utente- Semplicemente digitando
supassa all'utente root sudochiederà la tua password, mentresuchiederà 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.