TL; DR: Faça as coisas como root somente quando for necessário. sudo
torna isso muito fácil. Se você habilitar logins de raiz, você ainda pode seguir esta regra, você apenas tem que ter cuidado para fazer isso. Embora a ativação de logins de raiz não seja realmente insegura se for feita corretamente, você não precisa habilitar logins de raiz porque você tem sudo
.
Há realmente duas questões relacionadas aqui.
- Por que é ruim fazer login como root no uso diário de um computador (navegação na Web, email, processamento de texto, jogos etc.)?
- Por que o padrão do Ubuntu é desabilitar os logins raiz completamente e usar
sudo
e polkit para permitir que administradores executem 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ê usa poderes de root para tarefas que não exigem, e acaba fazendo algo que não pretendia fazer, pode alterar ou prejudicar o sistema de uma forma que não deseja.
- Se você executa um programa como root quando não precisa, e ele acaba fazendo algo que você não queria que ele fizesse - por exemplo, devido a uma vulnerabilidade de segurança ou outro bug - pode alterar ou prejudicar o seu sistema de uma forma que você não deseja.
É verdade que, mesmo sem fazer as coisas como root, você pode causar danos. Por exemplo, você pode excluir todos os arquivos em seu próprio diretório pessoal, que geralmente inclui todos os seus documentos, sem ser executado como root! (Espero que você tenha backups.)
Naturalmente, como root, existem maneiras adicionais de destruir acidentalmente esses mesmos dados. Por exemplo, você poderia especificar o argumento of=
errado para um comando dd
e gravar dados brutos em seus arquivos (o que os torna muito mais difíceis de recuperar do que se você os tivesse excluído).
Se você é a única pessoa que usa seu computador, o dano que você pode fazer somente como root pode não ser maior do que o dano que você pode fazer com seus privilégios normais de usuário. Mas isso ainda não é razão para expandir seu risco para incluir maneiras adicionais de bagunçar o seu sistema Ubuntu.
Se a execução com uma conta de usuário não-root impedisse você de exercer controle sobre seu próprio computador, isso seria, obviamente, uma troca ruim . Mas isso não acontece - sempre que você quiser executar uma ação como root, você 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 logar como root é inerentemente insegura é um mito. Alguns sistemas possuem uma conta root habilitada por padrão; outros sistemas usam sudo
por padrão, e alguns são configurados com ambos.
- Por exemplo, OpenBSD , que é amplamente e razoavelmente considerado o sistema operacional de uso geral mais seguro do mundo, navios com a conta root ativada para login local baseado em senha.
- Outros sistemas operacionais bem respeitados que fazem isso incluem RHEL , CentOS e Fedora .
-
Debian (do qual O Ubuntu deriva ) tem o usuário decidir qual abordagem será configurada, durante a instalação do sistema.
Não é objetivamente errado ter um sistema no qual a conta raiz esteja ativada, contanto que
- você ainda só usa quando realmente precisa, e
- você restringe o acesso a ele adequadamente.
Muitas vezes os novatos perguntam como habilitar a conta root no Ubuntu. Nós não devemos esconder essa informação deles, mas geralmente quando as pessoas perguntam isso é porque eles estão sob a impressão equivocada de que eles precisam para habilitar a conta root. Na verdade, isso quase nunca é necessário, portanto, ao responder a essas perguntas, é importante explicá-lo. A ativação da conta raiz também torna fácil tornar-se complacente e executar ações como root que não exigem privilégios de root . Mas isso não significa que a ativação da conta root seja insegura .
sudo
incentiva e ajuda os usuários a executar comandos como root somente quando necessário. Para executar um comando como root, digite sudo
, um espaço e, em seguida, o comando. Isso é muito conveniente, e muitos usuários de todos os níveis preferem essa abordagem.
Em suma, você não precisa ativar logins de raiz porque tem sudo
.Mas, desde que você a use apenas para tarefas administrativas que a exijam, é igualmente seguro ativá-la e fazer logon como root, desde que seja dessas maneiras :
- Localmente, a partir de um console virtual não-gráfico.
- Com o comando
su
, quando conectado a partir de outra conta .
No entanto, riscos de segurança adicionais significativos surgem se você fizer logon como root das seguintes formas:
-
Graficamente. Quando você faz login graficamente, um monte de coisas é executado para fornecer a interface gráfica, e você acabará executando ainda mais aplicativos como root para usar essa interface para qualquer coisa. Isso vai contra o princípio de apenas executar programas como root que realmente precisam de privilégios de root. Alguns desses programas podem conter bugs, incluindo bugs de segurança.
Além disso, há um motivo não relacionado à segurança para evitar isso. Fazer login graficamente como root não é bem suportado - como loevborg menciona , desenvolvedores de ambientes de desktop e de aplicativos gráficos não frequentemente testá-los como root. Mesmo se o fizerem, fazer login em um ambiente de área de trabalho gráfico como root não obterá testes alfa e beta do mundo real pelos usuários, já que quase ninguém o tenta (pelas razões de segurança explicadas acima).
Se você precisar executar um aplicativo gráfico específico como root, você pode usar gksudo
ou sudo -H
. Isso executa muito menos programas como root do que se você realmente logasse graficamente com a conta root.
-
Remotamente. A conta root
pode na verdade fazer qualquer coisa, e tem o mesmo nome em praticamente todos os sistemas do tipo Unix. Fazendo login como root via ssh
ou outros mecanismos remotos, ou até mesmo configurando serviços remotos para permitir , você torna muito mais fácil para intrusos, incluindo scripts automatizados e malware rodando em botnets, acesso através de força bruta, ataques de dicionário (e possivelmente alguns bugs de segurança).
Argumenta-se que o risco não é extremamente alto se você permitir somente logins raiz baseados em , e não baseados em senha .
Por padrão no Ubuntu, nem logins de root gráficos nem logins remotos via SSH são habilitados, mesmo se você habilitar o logging como root . Ou seja, mesmo que você habilite o login root, ele ainda estará habilitado de maneira razoavelmente segura.
- Se você executar um servidor ssh no Ubuntu e não tiver alterado
/etc/sshd/ssh_config
, ele conterá a linha PermitRootLogin without-password
. Isso desativa o login de root baseado em senha, mas permite 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 remoto remoto baseado em chave é muito menos ruim do que o login remoto remoto baseado em senha, em parte porque não cria o risco de ataques de força bruta e de dicionário.
- Mesmo que os padrões devam proteger você, acho que ainda é uma boa idéia verificar sua configuração ssh, se você for ativar a conta root. E se você está executando outros serviços que fornecem login remoto, como o ftp, você deve verificá-los também.
Em conclusão:
- Fazer coisas como root somente quando você precisar; O
sudo
ajuda você a fazer isso, enquanto ainda fornece a você todo o poder do root sempre que desejar.
- Se você entender como o root funciona e os perigos do uso excessivo, habilitar a conta raiz não é realmente problemático do ponto de vista da segurança.
- Mas, se você entende isso, também sabe que você quase não precisa para ativar a conta raiz .
Para mais informações sobre root e sudo
, incluindo alguns benefícios adicionais de sudo
que eu não abordei aqui, eu recomendo RootSudo na wiki de ajuda do Ubuntu.