deve usar sudo ou apenas su root no gerenciamento de servidores?


8

Qual abordagem é melhor?

Para uso na área de trabalho, parece que o sudo é melhor, pois:

  • Posso ter um histórico mais consistente como usuário normal
  • Não é necessário lembrar de duas senhas, o que é especialmente verdadeiro quando não faço coisas administrativas regularmente.
  • Não há necessidade de criar uma conta root adicional na instalação.

Mas sobre gerenciamento de servidores?

No servidor, geralmente você já tem uma conta raiz criada e é provável que faça coisas administrativas com frequência. Portanto, as vantagens do sudo parecem não mais valer.

Além disso, é fácil configurar o su na linha de comando na maioria das distribuições, basta adicionar o usuário ao grupo de roda. (Você pode até passar -G wheelquando useradding.) Assim, a configuração de su pode ser facilmente automatizada em scripts de shell.

Mas para sudo? Você precisa primeiro adicionar o usuário, em seguida, executar visudointerativamente. Isso é ruim, pois você não pode automatizá-lo em scripts de shell.

(Bem, você pode. Por exemplo,

echo '%wheel    ALL=(ALL)   ALL' >> /tmp/sudoers.tmp
cp /etc/sudoers /etc/sudoers.old
visudo -c -f /tmp/sudoers.tmp &&  mv /tmp/sudoers.tmp /etc/sudoers

Mas pelo menos não é tão fácil.)

Então, quais são suas opiniões? Para um ambiente de servidor, qual você prefere, sudo ou su root?


Este deve ser um wiki, caso contrário, provavelmente será fechado porque é muito subjetivo.
John Gardeniers 27/12/2009

Não acho que seja subjetivo demais. Assim como a excelente resposta do Raphink mostra, em um ambiente de múltiplos usuários, o sudo é o preferido.
weakish

Eu não acho que seja uma pergunta subjetiva. Não se trata de você gostar ou não de sudo, mas se é adaptado a um uso ou outro.
22410 as

A propósito, também estou um pouco surpreso com o seu visudo -ccomando, pois acredito que você precisa visudo -c -fverificar um arquivo específico.
27510 Dech

@ Repense sim, você está totalmente certo. Eu editei minha pergunta.
weakish

Respostas:


16

A conta root é necessária nos servidores, com certeza, mas eu prefiro conceder direitos sudo, especialmente quando há vários usuários na máquina, e isso por vários motivos:

  • Eu não uso o sudo apenas para conceder TODOS os direitos para TODOS os comandos, mas também para conceder direitos específicos como usuário específico a comandos específicos.
  • Ao atribuir usuários a grupos funcionais, posso gerenciar seus direitos com esses grupos em sudoers, em vez de gerenciar usuários individualmente.
  • acessos ao sudo são registrados no auth.log por padrão, incluindo quais usuários usaram o sudo a que horas.
  • O sudo permite gerenciar a configuração de várias máquinas com um arquivo.
  • cada usuário mantém sua própria senha, portanto, não há necessidade de alterar a senha raiz quando um usuário sai.

Quanto ao gerenciamento com scripts, novas versões do sudo suportam inclusões, mas eu prefiro usar fantoches e definir classes que concatenam o conteúdo dos sudoers.

O Puppet também pode ser associado ao Augeas para gerenciar seu arquivo sudoers.


3
Na verdade, não considero um caso de múltiplos usuários. Você está certo, sudo é aparentemente um vencedor quando há vários usuários. Mas para um único usuário, ainda acho que su é suficiente. PS Obrigado por mencionar o fantoche. Só não tenho conhecimento dessa ferramenta fofa antes.
weakish

A propósito, se você deseja validar seu arquivo sudoers antes de implantá-lo com o fantoche, tenho uma função de validação em mãos que faz isso.
22909 Dech

11
Ao usar o sudo, o root nem precisa ter uma senha válida, pois você só precisa confiar nas senhas dos usuários. Além de não precisar alterar a senha de root quando alguém sai, você também tem menos uma senha que pode ser adivinhada / quebrada / invadida.
21719 Shannon Nelson

@ ShannonNelson Eu acredito que eles estão mencionando o usuário root e a senha, pois os servidores alugados geralmente são fornecidos com eles.
Jun13

1

Você parece estar dificultando as coisas consigo mesmo (quando se trata de gerenciar o / etc / sudoers). Um simples

echo '%wheel    ALL=(ALL)   ALL' >> /etc/sudoers

seria suficiente. Tudo o que o visudo faz é bloquear o arquivo contra edições simultâneas e garantir que o arquivo ainda seja analisado corretamente.


Eu uso o visudo -c para verificar o arquivo, caso algo esteja errado. (Embora não deva. Mas talvez, ao editar o sript, tenha digitado algum caractere, ou pior, inclua algum caractere especial não visível.) Mas concordo que sua solução de uma linha é suficiente.
weakish
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.