Questão Por que é ruim fazer o login como root?


Muitas vezes eu encontro posts em fóruns ou outros sites onde você vê pessoas brincando de tal maneira sobre como executar / logar como root como se fosse algo horrível e todos deveria saber sobre isso. No entanto, não há muito que uma pesquisa revela sobre o assunto.

Pode ser amplamente conhecido por especialistas em Linux, mas eu realmente não sei por quê. Lembro-me de sempre correr como root quando tentei Linux anos atrás (Redhat e Mandrake) e não me lembro de ter tido problemas por causa disso.

Na verdade, existem algumas distros que têm um fundo vermelho brilhante com sinais de alerta em todo o lado como papel de parede para o usuário root (SuSe?). Eu ainda uso a conta "Administrador" para uso regular na minha instalação do Windows e nunca encontrei nenhum problema.


180
2017-12-04 17:00


origem


Eu acho que não há problema em executar um programa como root. É só isso, você pode prejudicar o núcleo do seu sistema operacional (mesmo sudoers podem fazer isso) se você não for muito sábio no linux. diferente do que eu não sei, há algum problema. Mas esse é apenas o meu ponto de vista. - Gaurav Butola
Questão relacionada Aqui. - loevborg
A dificuldade de entrar no modo raiz varia entre distros. Pessoalmente, estou incomodado com a forma como o Fedora não permite que você 'sudo' saia da caixa. O OpenSUSE e o Ubunto já possuem um sudo pré-configurado ... e assim, se você escolher a distro certa, você pode minimizar seus aborrecimentos por não conseguir acessar os arquivos. - djangofan
@GauravButola Mesmo se você é um especialista, ainda é uma má idéia no caso de um aplicativo ser comprometido. - strugee
@DaboRoss os comentários do OP que ele trabalha no windows como administrador; para minha (pequena) experiência nesse SO, parece-me que é mais como o Ubuntu: é uma conta privilegiada no sentido de poder fazer o que você quiser, mas pergunta para permissão antes, por exemplo, instalar um novo software. Então, provavelmente o equivalente de usar o usuário "administrador" no windows traduzido para o Ubuntu seria rodar o usuário principal com o sudo configurado para que ele não peça o passe - rodando diretamente pois o root é muito mais perigoso. - Rmano


Respostas:


Ele derrota o modelo de segurança que está em vigor há anos. Os aplicativos devem ser executados com segurança não administrativa (ou como meros mortais), portanto, você precisa elevar seus privilégios para modificar o sistema subjacente. Por exemplo, você não iria querer que o recente crash do Rhythmbox acabasse com todo o seu /usr diretório devido a um bug. Ou aquela vulnerabilidade que foi postada no ProFTPD para permitir que um atacante ganhe um shell ROOT.

É uma boa prática em qualquer sistema operacional executar seus aplicativos em um nível de usuário e deixar tarefas administrativas para o usuário raiz, e apenas conforme a necessidade.


146
2017-12-04 17:08



... e protege você de transformar erros triviais em desastres. Eu sou um usuário Unix / adm desde 1990, mas ainda posso certamente escorregar um espaço no lugar exatamente errado fazendo um rm -rf tmp/tests/*... - Rmano
1.) A maioria das pessoas considerará seu diretório home como mais importante que o root, pois o primeiro não pode ser reinstalado. Então eu não vejo o seu ponto. 2.) Em termos de segurança, você está certo. Mas vindo do Windows (onde há mais malware ao redor), onde eu usei a conta de administrador desde sempre (como muitos fazem), eu tenho dificuldade em considerar isso um perigo real. Eu sou apenas com preguiça de digitar sudo e minha senha para cada segundo comando no Linux. Os usuários do Linux não devem ser preguiçosos ????? - Blauhirn
discordo -_-: ~: | - Artful Aardvark
@LazyPower obrigado por editar sua resposta, mas agora eu não entendo mais. Para modificar minha pasta privada do Ubuntu, os programas não precisam de direitos de sudo. Rhythmbox POSSO limpe meu diretório $ HOME / Music inteiro! E isso é tudo que me importa! Como isso está relacionado às permissões de root? - Blauhirn
Isso é uma boa chamada para fora @Blauhirn. Acabei de enviar uma edição de acompanhamento para refletir que não queremos excluir a totalidade do / usr. Em termos de proteger suas pastas $ HOME, nada como um bom backup pode ajudá-lo. Eu não acho que esse cenário específico estaria relacionado tanto à segurança quanto à boa prática. Obrigado novamente pela chamada. - lazyPower


Apenas uma palavra: segurança.

  1. Você está logado como root = todos os aplicativos estão sendo executados com privilégios de root - cada vulnerabilidade no Firefox, Flash, OpenOffice, etc., agora pode destruir seu sistema, porque possíveis vírus agora têm acesso em todos os lugares. Sim, existem apenas alguns vírus para o Ubuntu / Linux, mas também por causa da boa segurança e do usuário padrão sem privilégios.
  2. Não é só sobre vírus - um pequeno bug em um aplicativo pode apagar alguns arquivos do sistema ou ...
  3. Quando você está logado como root, você pode fazer tudo - o sistema não perguntará! Você quer formatar este disco? Ok, apenas um clique e pronto, porque você é root e sabe o que está fazendo ...

73
2017-12-04 17:10



Arquivos de dados, todos pertencentes à minha conta de usuário, são muito mais valioso para mim do que arquivos de sistema. Todos os exemplos acima ainda são problemas quando conectados como usuário, exceto pelo fato de que os arquivos do sistema facilmente substituíveis são salvaguardados. - kbeta
@kbeta você está assumindo que você está rodando em um computador onde os únicos objetos de valor são seus dados e arquivos do sistema. Na realidade, o linux é freqüentemente usado em um sistema onde há muitos usuários usando um sistema simultaneamente. Nesse caso, a estabilidade do sistema (e, portanto, dos arquivos do sistema) é muito mais valiosa e outros arquivos do usuário também são importantes. - Eric Pauley
@kbeta Justo o suficiente, mas uma configuração de sistema danificada também pode representar um risco para seus dados ... e, claro, ter backups seria uma boa idéia se o seu sistema está em risco atualmente ou não. Trabalhar o backup atual com um plano de recuperação de desastre seria melhor ainda. - Pryftan


Rodar como root é ruim porque:

  1. Estupidez: Nada impede que você faça algo estúpido. Se você tentar alterar o sistema de qualquer forma que poderia ser prejudicial, você precisa fazer sudo que praticamente garante uma pausa enquanto você está digitando a senha para você perceber que você está prestes a fazer uma possível mudança grande / caro.
  2. Segurança:  Já foi mencionado algumas vezes nesta questão, mas basicamente é a mesma coisa, mais difícil de hackear se você não conhece a conta de login do usuário admin. root significa que você já tem metade do conjunto de trabalho de credenciais de administrador.
  3. Você realmente não precisa disso: Se você precisar executar vários comandos como root e estiver incomodado por ter que digitar sua senha várias vezes quando o sudo tiver expirado, tudo que você precisa fazer é sudo -i e você é agora raiz. Quer executar alguns comandos usando pipes? Então use sudo sh -c "comand1 | command2".
  4. Você sempre pode usá-lo no console de recuperação:  O console de recuperação permite que você tente se recuperar de fazer algo estúpido ou consertar um problema causado por um aplicativo (que você ainda tinha que executar como sudo :)) O Ubuntu não tem uma senha para a conta root neste caso, mas você pode pesquise on-line para alterar isso, isso tornará mais difícil para qualquer pessoa que tenha acesso físico à sua caixa ser capaz de causar danos.

A razão pela qual você não conseguiu encontrar informações sobre por que é ruim é porque, bem, há muitos dados na internet :) e que muitas pessoas que usam o Linux há muito tempo pensam como você. Essa maneira de pensar sobre a conta raiz é relativamente nova (uma década talvez?) E muitas pessoas ainda ficam irritadas por ter que usar o sudo. Especialmente se eles estão trabalhando em um servidor, o que significa que eles entraram com a intenção de fazer alterações no sistema. Provavelmente provocado por más experiências anteriores e padrões de segurança, a maioria dos administradores sabe melhor, mas eles ainda não gostam disso :).


45
2017-12-04 18:43



"uma década talvez?" Muito mais do que isso, desde quando você escreveu isso. Mesmo sem sudo, há su não mencionar, por ex. o grupo de rodas (por exemplo). A separação de privilégio é sempre importante e sempre foi importante e sempre será importante. Otoh não tantas pessoas usaram o sistema operacional baseado em Unix que há muitos anos e muitos que estão acostumados a ser sempre um administrador. - Pryftan


Essa é uma boa pergunta. Eu acho que a resposta é um pouco diferente, dependendo se você está falando sobre um servidor ou uma instalação de desktop.

Em um desktop, é incomum usar o root conta. Na verdade, o Ubuntu vem com acesso root desativado. Todas as alterações que requerem privilégios de superusuário são feitas através de sudo e seus cognatos gráficos gksudo e kdesudo. Dado que é fácil definir um root senha, no entanto, por que as pessoas não fazem isso?

Um dos motivos é que isso oferece uma camada adicional de segurança. Se você executar um programa como root e uma falha de segurança é explorada, o atacante tem acesso a todos os dados e pode controlar diretamente o hardware. Por exemplo, ele pode instalar um trojan ou keylogger em seu kernel. Na prática, porém, um ataque pode causar uma grande quantidade de dano, mesmo sem privilégios de superusuário. Afinal, todos os dados do usuário - incluindo documentos e senhas armazenadas - são acessíveis sem acesso root.

Um ponto mais válido, em um sistema de usuário único, é que o usuário é impedido de acidentalmente tornar o sistema inutilizável. Se o usuário inadvertidamente emitir um comando que exclua todos os arquivos, eles ainda poderão inicializar o sistema, mesmo se os dados forem perdidos.

Além disso, a maioria dos aplicativos voltados ao usuário (X11) hoje é construída com base na suposição de que eles são executados como uma conta de usuário comum e sem direitos de administrador. Assim, alguns programas podem se comportar mal quando executados como root.

Em um sistema multiusuário com acesso não-gráfico a shell, muitas dessas razões não se aplicam. No entanto, o Ubuntu ainda aceita um padrão inacessível root conta. Por um lado, há uma diferença real entre obter acesso a uma conta de usuário (com sudo direitos) através de uma falha de segurança e acesso root, como no primeiro caso, a interrupção de outros usuários exigirá execução sudo e ainda solicitará a senha da conta como uma etapa de segurança adicional. Por outro lado, é útil executar muitas tarefas administrativas a partir de uma conta de usuário e apenas invocar sudoquando os privilégios de superusuário são absolutamente necessários. Assim, quando instalar um programa a partir da fonte, é aconselhável construir a fonte - em execução configure e make - dentro do diretório do usuário e usando apenas sudo make install na etapa final. Novamente, isso dificulta a captura de si mesmo (e de outros usuários do sistema multiusuário) no pé e diminui a probabilidade de scripts de construção causarem estragos no sistema. Assim, mesmo em um servidor, é um bom conselho ficar com o Ubuntu administração baseada em sudo.


36
2017-12-04 17:24



he will still be able to boot the system, even if the data will be lost. - Qual é o objetivo disso? Se meus dados forem perdidos, meus dados serão perdidos e pronto. O software do sistema Linux pode ser reinstalado se excluído, por que eu deveria me preocupar com a perda de dados nesses diretórios? Por outro lado, a perda de dados ~ é ruim. E sudo não me protege disso. - Blauhirn
Outra boa prática é ter dados importantes armazenados em backup. Se você eliminar o diretório inicial, ainda poderá inicializar e apenas copiar os arquivos do backup. Ou digamos que você tenha um pequeno laptop para viajar. Pode ter algumas fotos, notas de viagem, horários de trens - mas nada muito importante. Se você limpar os arquivos do usuário, ainda poderá inicializar o sistema e fazer o check-in do seu voo ou descobrir qual ônibus pegar. - Richlv
@Blauhirn Backups. E há uma chance de recuperação, mesmo que pareça sombria. - Pryftan


Uma razão para não executar como root que não foi (até agora) identificada por outras respostas é a rastreabilidade. Isso provavelmente é menos importante em máquinas que são principalmente máquinas de usuário único (seu desktop ou laptop), mas em máquinas servidoras, se alguém estiver logado como root, você não sabe quem culpar pelas ações tomadas. Portanto, a maioria das organizações profissionais com vários sistemas e vários administradores que precisam root privilégios exigem que as pessoas façam o login usando seu próprio ID de usuário (e senha), e sudo ou programas semelhantes para operar com root privilégios quando necessário.

Caso contrário, os principais motivos para não executar como root são:

  • Minimize o risco de danos causados ​​por acidentes. Se você correr rm -fr / home/me/my-subdir como root, então você acabou de eliminar dramaticamente tudo de importância da sua máquina por causa daquele espaço após a (primeira) barra - porque o material que vai primeiro é o material que foi adicionado primeiro - pequenas coisas como o kernel, o /bin e a /etc diretório. O Unix fica chateado se você perder isso.

  • Minimize o risco de danos causados ​​por sites externos maliciosos. Se você navegar como root, você está mais vulnerável a downloads diretos de material malicioso.

Eu uso o MacOS X mais do que eu Ubuntu, mas lá, o root está desativado por padrão, e ainda está na minha máquina. Eu atualizo rotineiramente o kernel e outras operações similares - usando sudo (Por trás das cenas). Técnicas semelhantes se aplicam ao Linux em geral.

Basicamente, você deve usar apenas os privilégios de todos root por períodos de trabalho abreviados para evitar o risco de erros.


31
2017-12-04 23:10



Não se trata de culpar alguém, é sobre ser capaz de descobrir porque alguém fez uma mudança. - jippie
@jippie: Quero dizer 'culpa' da mesma maneira que um VCS rastreia quem fez o quê, para que a pessoa correta seja atribuída com a responsabilidade pela mudança, para o bem ou para o mal, e um dos nomes para o comando que faz esse rastreamento é 'culpa'. Dá a você uma pessoa para conversar e descobrir por que algo aconteceu. Nem sempre é 'culpa' (embora, com muita frequência, a razão para precisar saber é porque algo não está funcionando como esperado e há uma necessidade de saber por que não). Então, trata-se de responsabilidade e rastreabilidade, em vez de necessariamente criticar a pessoa pelo que fez. - Jonathan Leffler
No Ubuntu, comandos como rm -fr / home/me/my-subdir não tente realmente excluir recursivamente /, Porque / é tratado especialmente para proteger contra tais erros. Veja a documentação do --preserve-root e --no-preserve-root opções em man rm para detalhes. Mas o princípio é sólido: erros de digitação de um único caractere Faz existem que resultam em rm excluindo tudo. Por exemplo, se você pretende remover tudo no diretório atual executando rm -r *, mas você acidentalmente colocou um / antes *isso seria ruim. - Eliah Kagan
@EliahKagan Mas ainda se você fosse fazer ... chown -R nobody:nobody ../ de dizer / etc que te protegeria? Se você fizesse isso em / etc, causaria um mundo de dor. Da mesma forma é .* quando recursivamente executando um comando. - Pryftan


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.


20
2018-05-03 17:12



'Se você é a única pessoa que usa seu computador, o dano que você pode fazer apenas 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. ”Sem mencionar que você tem o hábito disso ... então você vai para outro sistema e o que acontece? Mesmo com a ideia absurda de fazer as pessoas se acostumarem rm -i por meio de alias de concha. Você vai para um sistema que não tem isso e depois? Bebê sentado um usuário de erros como este nunca é uma boa idéia quando você considera os seres humanos são muito criaturas de hábito. - Pryftan


Conta raiz está desativado por padrão - o que significa que existe, mas não é utilizável (exceto no modo de recuperação). Isso significa que um invasor está ciente de sua conta root, mas não pode usá-lo mesmo se tiver a senha de root. Assim, um atacante tem que adivinhar tanto um nome de usuário que tenha privilégios de administrador, quanto a senha do usuário (que é muito mais difícil do que tentar descobrir a senha de root) .No XP, se você tiver o Console de Recuperação instalado, O acesso físico à sua caixa pode ser iniciado (RC) - não é necessária senha. O mesmo que o modo de recuperação no Ubuntu.

No Ubuntu, quando dizem que a raiz está desativada - o que realmente significa é que a conta está bloqueada. Uma conta é bloqueada, alterando a senha para um valor que não corresponda a nenhum valor criptografado possível. Isso efetivamente impede que qualquer um consiga se logar como root - já que não haveria nenhuma maneira possível de inserir a senha. Uma vez que ainda há momentos em que o acesso root é necessário - o kernel do Ubuntu foi modificado para permitir login local raiz somente no modo de usuário único.

Veja também isso página


13
2017-12-04 17:18



Hum. Sem ofensa, mas você pode querer ler o título da pergunta e depois ler os detalhes novamente. - Mussnoon
Isso é extremamente útil - e faz relacionar-se com a questão. Ele está preocupado com as implicações de segurança de ativar a conta, um pré-requisito para executar como root. - Stefano Palazzo♦
@ Stefano Palazzo: Embora as informações fornecidas possam ser úteis, sinceramente não consigo ver em que parte reside uma resposta para o que eu precisava saber. Eu já li isso várias vezes. - Mussnoon
Não impede que as pessoas consigam entrar no root. - Chad


É como armar uma criança com uma AK47, enquanto ele pode brincar alegremente com sua arma de paintball. ;)

Quero dizer, é errado porque você e seus aplicativos terão mais privilégios, então eles precisam e é aí que as coisas posso e às vezes vai dar errado :(


12
2017-12-05 01:33



uma analogia mais inteligente. - kit.yang
Esta é uma analogia totalmente inadequada. Uma criança com uma AK47 pode matar a si e a outras pessoas. Um usuário unix com acesso root pode, no máximo, tornar seu sistema temporariamente inoperável. (Pode-se sempre reinstalar o sistema operacional e recuperar a operação). - kbeta
@kbeta Você está certo, minha analogia é um pouco fora de proporção e exagerada. por favor siga em frente. - omeid
@ kbeta a analogia é apropriada. o risco não é um sistema inoperante, mas a perda de dados e privacidade. o usuário root pode excluir os dados. por favor use sua fantasia para associar a morte e a perda de dados. - n611x007