TL; DR: faça as coisas como root somente quando for necessário. sudo
torna isso muito fácil. Se você habilitar logins raiz, ainda poderá seguir esta regra, basta ter cuidado para fazer isso. Embora a ativação de logins raiz não seja realmente insegura se feita corretamente, você não precisa habilitar logins raiz porque é sudo
.
Há realmente duas perguntas relacionadas aqui.
- Por que é ruim fazer login como raiz para o uso diário do computador (navegação na web, email, processamento de texto, jogos etc.)?
- Por que o Ubuntu padrão para desabilitar logins raiz completamente e usando
sudo
e polkit para permitir que administradores para executar comandos específicos como root?
Por que não executar tudo como root o tempo todo?
A maioria das outras respostas cobre isso. Tudo se resume a:
- Se você usar poderes de raiz para tarefas que não os exigem e acabar fazendo algo que não pretendia fazer, poderá alterar ou prejudicar seu sistema de uma maneira que não deseja.
- Se você executar um programa como root quando não precisava, e isso acaba fazendo algo que você não quis dizer para ele fazer - por exemplo, devido a uma vulnerabilidade de segurança ou outro bug - que poderia mudar ou danos seu sistema de uma maneira que você não deseja.
É verdade que, mesmo sem fazer as coisas como raiz, você pode causar danos. Por exemplo, você pode excluir todos os arquivos em seu próprio diretório pessoal, o que geralmente inclui todos os seus documentos, sem ser executado como root! (Espero que você tenha backups.)
Obviamente, como raiz, existem outras maneiras de destruir acidentalmente esses mesmos dados. Por exemplo, você pode especificar o of=
argumento errado para um dd
comando e gravar dados brutos nos seus arquivos (o que os torna muito mais difíceis de recuperar do que se os tivesse excluído).
Se você é a única pessoa que usa seu computador, o dano que você pode causar apenas como root pode não ser realmente maior do que o dano que você pode causar com seus privilégios regulares de usuário. Mas isso ainda não é motivo para expandir seu risco e incluir maneiras adicionais de bagunçar o sistema Ubuntu.
Se correr com uma conta de usuário non-root impediu de exercer controle sobre seu próprio computador, então este seria, evidentemente, um mau compromisso. Mas isso não acontece - sempre que você realmente deseja executar uma ação como raiz, pode fazê-lo com sudo
e outros métodos .
Por que não possibilitar o login como root?
A ideia de que a capacidade de efetuar login como raiz é inerentemente insegura é um mito. Alguns sistemas têm uma conta raiz ativada por padrão; outros sistemas usam sudo
por padrão e alguns são configurados com ambos.
- Por exemplo, o OpenBSD , que é amplamente e razoavelmente considerado o sistema operacional de uso geral mais seguro do mundo, é fornecido com a conta raiz ativada para login local com senha.
- Outros SOs respeitados que fazem isso incluem RHEL , CentOS e Fedora .
- O Debian (do qual o Ubuntu deriva ) faz com que o usuário decida qual abordagem será configurada durante a instalação do sistema.
Não é objetivamente errado ter um sistema em que a conta raiz esteja ativada, desde que
- você ainda o usa apenas quando realmente precisa, e
- você restringe o acesso a ele adequadamente.
Freqüentemente, os novatos perguntam como habilitar a conta root no Ubuntu. Não devemos ocultar essas informações, mas geralmente quando as pessoas perguntam isso, é porque estão com a impressão errada de que precisam ativar a conta raiz. De fato, isso quase nunca é necessário; portanto, ao responder a essas perguntas, é importante explicar isso. A ativação da conta root também facilita a complacência e a execução de ações como root que não exigem privilégios de root. Mas isso não significa permitir que a conta root é por si só inseguro.
sudo
incentiva e ajuda os usuários a executar comandos como root somente quando necessário. Para executar um comando como raiz, digite sudo
, um espaço e, em seguida, o comando Isso é muito conveniente, e muitos usuários de todos os níveis de habilidade preferem essa abordagem.
Resumindo, você não precisa habilitar logins raiz porque possui sudo
. Mas, desde que você o utilize apenas para tarefas administrativas que exijam, é igualmente seguro habilitar e fazer logon como root, desde que seja apenas das seguintes formas :
- Localmente, a partir de um console virtual não gráfico .
- Com o
su
comando, quando conectado a partir de outra conta.
No entanto, riscos de segurança adicionais substanciais surgem se você efetuar logon como root das seguintes maneiras:
Graficamente. Quando você faz login graficamente, muitas coisas são executadas para fornecer a interface gráfica, e você acaba executando ainda mais aplicativos como root para usar essa interface para qualquer coisa. Isso contraria o princípio de apenas executar programas como root que realmente precisam de privilégios de root. Alguns desses programas podem conter erros, incluindo erros de segurança.
Além disso, há um motivo não relacionado à segurança para evitar isso. O login gráfico como root não é bem suportado - como o loevborg menciona , os desenvolvedores de ambientes de desktop e de aplicativos gráficos geralmente não os testam como root. Mesmo que isso aconteça, o logon em um ambiente gráfico de área de trabalho como raiz não recebe testes alfa e beta do mundo real pelos usuários, já que quase ninguém tenta (pelas razões de segurança explicadas acima).
Se você precisar executar um aplicativo gráfico específico como root, poderá usargksudo
ou sudo -H
. Isso executa muito menos programas como root do que se você realmente fez logon graficamente com a conta root.
Remotamente. Com root
efeito, a conta pode fazer qualquer coisa e tem o mesmo nome em praticamente todos os sistemas Unix. Ao fazer login como root via ssh
ou outros mecanismos remotos, ou mesmo configurando serviços remotos para permitir isso , você facilita a invasão de invasores, incluindo scripts automatizados e malware em execução em redes bot, para obter acesso por força bruta, ataques de dicionário (e possivelmente alguns bugs de segurança).
Indiscutivelmente, o risco não é extremamente alto se você permitir apenas logins raiz com base em chave e não em senha .
Por padrão no Ubuntu, nem os logons de raiz gráficos nem os remotos via SSH são ativados, mesmo se você ativar o login como raiz . Ou seja, mesmo se você habilitar o login raiz, ele ainda estará ativado apenas de maneiras razoavelmente seguras.
- Se você executa um servidor ssh no Ubuntu e não mudou
/etc/sshd/ssh_config
, ele conterá a linha PermitRootLogin without-password
. Isso desativa o login raiz com base em senha, mas permite o login baseado em chave. No entanto, nenhuma chave é configurada por padrão; portanto, a menos que você tenha configurado uma, isso também não funcionará. Além disso, o login raiz remoto baseado em chave é muito menos ruim que o login raiz remoto baseado em senha, em parte porque não cria o risco de força bruta e ataques de dicionário.
- Embora os padrões devam protegê-lo, acho que ainda é uma boa ideia verificar sua configuração ssh, se você deseja ativar a conta root. E se você estiver executando outros serviços que fornecem login remoto, como ftp, verifique-os também.
Em conclusão:
- Faça coisas como root somente quando precisar;
sudo
ajuda você a fazer isso, enquanto ainda oferece todo o poder de root a qualquer momento.
- Se você entender como o root funciona e os perigos de usá-lo, ativar a conta raiz não é realmente problemático do ponto de vista da segurança.
- Mas se você entende isso, também sabe que quase certamente não precisa habilitar a conta raiz .
Para obter mais informações sobre raiz e sudo
, incluindo alguns benefícios adicionais sudo
que não foram abordados aqui, recomendo o RootSudo no wiki de ajuda do Ubuntu.