TL; DR: fai le cose come root solo quando devi. sudo
rende abbastanza facile. Se abiliti gli accessi root, puoi comunque seguire questa regola, devi solo fare attenzione a farlo. Sebbene l'abilitazione degli accessi root non sia in realtà non sicura se eseguita correttamente, non è necessario abilitare gli accessi root perché è così sudo
.
Ci sono davvero due domande correlate qui.
- Perché è male accedere come root per l'uso quotidiano del computer (navigazione web, e-mail, elaborazione testi, giochi, ecc.)?
- Perché Ubuntu non abilita completamente la disabilitazione degli accessi root e usa
sudo
e polkit per consentire agli amministratori di eseguire comandi specifici come root?
Perché non eseguire tutto come root, sempre?
La maggior parte delle altre risposte copre questo. Si riduce a:
- Se usi i poteri di root per attività che non li richiedono e finisci per fare qualcosa che non volevi fare, potresti cambiare o danneggiare il tuo sistema in un modo che non desideri.
- Se si esegue un programma come root quando non hai bisogno, e si finisce per fare qualcosa che non voleva dire che a fare - per esempio, a causa di una vulnerabilità di sicurezza o altro bug - potrebbe cambiare o danni il tuo sistema in un modo che non vuoi.
È vero che anche senza fare le cose come root, puoi causare danni. Ad esempio, puoi eliminare tutti i file nella tua home directory, che di solito include tutti i tuoi documenti, senza correre come root! (Spero che tu abbia dei backup.)
Naturalmente, come root, ci sono altri modi per distruggere accidentalmente quegli stessi dati. Ad esempio, potresti specificare l' of=
argomento sbagliato in un dd
comando e scrivere dati grezzi sui tuoi file (il che li rende molto, molto più difficili da recuperare rispetto a se li avessi semplicemente cancellati).
Se sei l'unica persona che utilizza il tuo computer, il danno che puoi fare solo come root potrebbe non essere davvero superiore al danno che puoi fare con i tuoi privilegi utente regolari. Ma questo non è ancora un motivo per espandere il rischio per includere ulteriori modi di rovinare il sistema Ubuntu.
Se l'esecuzione con un account utente non root ti impediva di esercitare il controllo sul tuo computer, ovviamente questo sarebbe un cattivo compromesso. Ma non lo fa - ogni volta che desideri effettivamente eseguire un'azione come root, puoi farlo con sudo
e altri metodi .
Perché non rendere possibile il login come root?
L'idea che la capacità di accedere come root sia intrinsecamente insicura è un mito. Alcuni sistemi hanno un account root abilitato per impostazione predefinita; altri sistemi utilizzano sudo
per impostazione predefinita e alcuni sono configurati con entrambi.
- Ad esempio, OpenBSD , che è ampiamente e ragionevolmente considerato il sistema operativo generico più sicuro al mondo, viene fornito con l'account root abilitato per l'accesso locale basato su password.
- Altri sistemi operativi rispettati che lo fanno includono RHEL , CentOS e Fedora .
- Debian (da cui deriva Ubuntu ) fa decidere all'utente quale approccio verrà configurato, durante l'installazione del sistema.
Non è oggettivamente sbagliato avere un sistema in cui è abilitato l'account di root, a condizione che
- lo usi ancora solo quando è necessario, e
- si limita l'accesso ad esso in modo appropriato.
Spesso i principianti chiedono come abilitare l'account root in Ubuntu. Non dovremmo nascondere queste informazioni a loro, ma di solito quando le persone lo chiedono è perché hanno l'impressione sbagliata di dover abilitare l'account root. In realtà, questo non è quasi mai necessario, quindi quando si risponde a tali domande è importante spiegarlo. L'abilitazione dell'account root consente inoltre di diventare facilmente compiacenti ed eseguire azioni come root che non richiedono privilegi di root. Ma questo non significa che abilitare l'account root sia di per sé insicuro.
sudo
incoraggia e aiuta gli utenti a eseguire i comandi come root solo quando necessario. Per eseguire un comando come root, digitare sudo
, uno spazio e quindi il comando. Questo è molto conveniente e molti utenti di tutti i livelli preferiscono questo approccio.
In breve, non è necessario abilitare gli accessi root perché lo sono sudo
. Ma finché lo si utilizza solo per attività amministrative che lo richiedono, è altrettanto sicuro abilitare e accedere come root, purché sia solo in questi modi :
- A livello locale, da una console virtuale non grafica .
- Con il
su
comando, quando si accede da un altro account.
Tuttavia, se si accede come root in questi modi sorgono notevoli rischi per la sicurezza:
Graficamente. Quando accedi graficamente, vengono eseguite molte cose per fornire l'interfaccia grafica e finirai per eseguire ancora più applicazioni come root per utilizzare quell'interfaccia per qualsiasi cosa. Questo va contro il principio di eseguire solo programmi come root che hanno davvero bisogno dei privilegi di root. Alcuni di questi programmi possono contenere bug, inclusi i bug di sicurezza.
Inoltre, c'è un motivo non di sicurezza per evitarlo. Effettuare l' accesso graficamente come root non è ben supportato, come menziona loevborg , gli sviluppatori di ambienti desktop e di app grafiche spesso non li testano come root. Anche se lo fanno, accedere a un ambiente desktop grafico come root non ottiene test alfa e beta nel mondo reale da parte degli utenti, poiché quasi nessuno lo tenta (per i motivi di sicurezza spiegati sopra).
Se è necessario eseguire un'applicazione grafica specifica come root, è possibile utilizzaregksudo
o sudo -H
. Questo esegue molti meno programmi come root rispetto a quando si è effettivamente connessi graficamente con l'account root.
A distanza. L' root
account in effetti può fare qualsiasi cosa e ha lo stesso nome praticamente su ogni sistema simile a Unix. Accedendo come root tramite ssh
o altri meccanismi remoti, o anche configurando i servizi remoti per consentirlo , si rende molto più facile per gli intrusi, inclusi script automatici e malware in esecuzione su botnet, ottenere l'accesso attraverso la forza bruta, gli attacchi del dizionario (e possibilmente alcuni bug di sicurezza).
Probabilmente il rischio non è estremamente elevato se si consentono solo accessi root basati su chiave e non basati su password .
Per impostazione predefinita in Ubuntu, né gli accessi root grafici né gli accessi remoti tramite SSH sono abilitati, anche se si abilita l'accesso come root . Cioè, anche se abiliti il login di root, è ancora abilitato solo in modi ragionevolmente sicuri.
- Se si esegue un server SSH su Ubuntu e non è stato modificato
/etc/sshd/ssh_config
, conterrà la riga PermitRootLogin without-password
. Ciò disabilita l'accesso root basato su password, ma consente l'accesso basato su chiave. Tuttavia, nessuna chiave è configurata per impostazione predefinita, quindi a meno che tu non ne abbia impostato uno, anche quello non funzionerà. Inoltre, l'accesso root remoto basato su chiave è molto meno grave dell'accesso root remoto basato su password, in parte perché non crea il rischio di forza bruta e attacchi di dizionario.
- Anche se le impostazioni predefinite dovrebbero proteggerti, penso che sia comunque una buona idea controllare la tua configurazione ssh, se hai intenzione di abilitare l'account root. E se stai eseguendo altri servizi che forniscono l'accesso remoto, come ftp, dovresti anche controllarli.
In conclusione:
- Fai cose come root solo quando è necessario;
sudo
ti aiuta a farlo, dandoti comunque la piena potenza di root ogni volta che lo desideri.
- Se capisci come funziona root e i pericoli di un uso eccessivo, abilitare l'account root non è davvero problematico dal punto di vista della sicurezza.
- Ma se lo capisci, sai anche che quasi certamente non è necessario abilitare l'account di root .
Per ulteriori informazioni su root e sudo
, inclusi alcuni vantaggi aggiuntivi di sudo
cui non ho parlato qui, consiglio vivamente RootSudo nella wiki della guida di Ubuntu.