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?

fraco
fonte
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.

ℝaphink
fonte
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.

rodjek
fonte
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