Por que nunca devo executar o software como root, ainda que frequentemente seja recomendado fornecer uma conta root-access para executar o software? [fechadas]

3

Sou um profissional técnico há muito tempo, mas 100% do meu trabalho está em um ambiente Windows. Eu tenho um bom nível de compreensão de muitos dos problemas técnicos, como gerenciamento de contas de usuário, segurança e desenvolvimento de software.

Ao tentar configurar um VPS, executando o Debian (isso é para um projeto pessoal), encontrei muitos documentos instrutivos que me ajudaram a configurar meu sistema, baixar o código-fonte e compilá-lo.

O que me confunde é que você é sempre desencorajado a executar qualquer software como root. Parece que o root deve ser usado apenas para configurar contas de usuário e permissões. No entanto, se uma conta precisar de acesso a quase tudo que o sistema tem para oferecer, a conta receberá acesso root.

Se uma conta recebe acesso root, essa conta não é essencialmente root? Se isso for verdade, por que não consigo manter as coisas simples (porque esse é um projeto simples) e simplesmente executar tudo a partir da conta raiz do VPS?

Eu suponho que tem que haver uma boa resposta para isso e eu só estou perdendo isso. Parece contra-intuitivo que ele seja uma verdade importante e estabelecida para nunca rodar software como root, e ainda assim sugerir que contas importantes tenham acesso root. IMHO, isso parece ser um problema de segurança ainda maior, porque em vez de haver apenas uma conta root, existem agora duas (ou mais!) Contas que poderiam ser violadas.

Claro, há outra possibilidade - muitos dos documentos que encontrei (através do google) estão errados. Se esse for o caso, infelizmente existe uma grande quantidade de informações ruins que são fornecidas em sites muito profissionais (e freqüentemente articulados). Isso é uma vergonha e um pouco desanimador.

    
por RLH 05.05.2013 / 18:07

3 respostas

3

Eu não tenho idéia do que você realmente quer dizer com "dar acesso root", mas o método usual para dar a alguém ou controle administrativo sobre determinados aspectos de um sistema é usar o mecanismo sudo , que você pode ajustar para permitir apenas as coisas que o usuário precisa.

No caso de deamons / services, existem outros métodos, como eliminar privilégios de root após iniciar ou gerar childs em execução como outros usuários.

Além disso, existem outros métodos que permitem um controle ainda melhor, mas geralmente são muito mais complicados e propensos a erros de uso (pense no SELinux). Um termo geral para essa abordagem é Controle de acesso baseado em função .

    
por 05.05.2013 / 18:22
0

Acho que você está confuso sobre as diferenças entre executar um usuário como "sudo" e usar o root. o programa "sudo" oferece aos usuários na máquina a execução de comandos de superusuário. Agora, mesmo dentro do sudo você não está executando a conta do usuário com acesso root completo, ainda existem limitações dentro do su ou sudo. Também não recomendaria fazer declarações sobre as práticas de segurança do Debian, especialmente ao fazer uma pergunta como esta.

    
por 05.05.2013 / 18:26
0

Muitos processos que inicialmente requerem root setuid [1] para descartar privilégios [2] após executar tarefas de configuração inicial que exigem privilégios elevados. Essa abordagem tem a vantagem de permitir que o daemon / serviço execute ações que exigem permissões elevadas no início e que sejam transferidas para um usuário não privilegiado mais tarde, para que haja menos exposição se o processo funcionar mal ou estiver comprometido, etc.

O Apache precisa se ligar à porta 80 no sistema. A porta 80 é uma porta privilegiada (é menor que 1024) e requer acesso root. Então isso é resolvido rodando o apache inicialmente como root, ligando a porta e qualquer outra configuração necessária, então usando o setuid para fazer o processo rodar como o usuário do servidor web (www-data no ubuntu).

[1] link

[2] link

    
por 05.05.2013 / 19:18