Por que precisamos usar o visudo em vez de modificar diretamente o arquivo sudoers?

83

Entendo que, se você deseja modificar quem pode usar sudoe o que eles podem fazer com isso, você deve usar visudo. Eu sei que não devo modificar diretamente o arquivo / etc / sudoers.

O que visudoé que a modificação direta do arquivo não faz? O que pode dar errado?

Dason
fonte

Respostas:

104

visudoverifica a sintaxe do arquivo antes de realmente substituí-lo sudoers.

Se você usar um editor simples, altere a sintaxe e salve ... sudo(provavelmente) deixará de funcionar e, como /etc/sudoerssó é modificável root, você ficará paralisado (a menos que tenha outra maneira de obter raiz).

Além disso, garante que as edições sejam uma operação atômica. Esse bloqueio é importante se você precisar garantir que mais ninguém possa estragar suas alterações de configuração cuidadosamente consideradas. Para editar outros arquivos como root, /etc/sudoersexiste o sudoeditcomando que também protege contra esses conflitos de edição.

Esteira
fonte
3
Uau, nunca soube do sudoedit. Ele não funciona no OS X, por isso suponho que seja uma ferramenta GNU? De qualquer forma, informações legais aqui. Eu sempre editei manualmente e nunca tive problemas - agora entendo que foi apenas sorte e a ferramenta pode ajudar a evitar catástrofes. Obrigado!
Harv
2
@Harv. Não há GNU sudoe o OS X possui ferramentas GNU. Como o sudo foi criado pela primeira vez como um aplicativo de código aberto, provavelmente não há razão para serem muitas implementações. sudoe sudoeditsão o mesmo comando, sudose comporta como sudo -equando chamado como sudoedit. Acredito que o OS X esqueceu de adicionar o sudoedit -> sudolink, mas você ainda poderá usar sudo -eou chamar sudocom argv [0] configurado sudoeditpara obter o mesmo comportamento.
Stéphane Chazelas
Curiosamente, visudousa o nano por padrão.
Tim
3
@ Tim: O padrão "real" é vi, mas pode ser configurado para usar outra coisa. Portanto, o nano pode ser o padrão em sua distribuição / configuração. Veja a página do manual .
Mat
2
@ AngularInDepth.com, as consequências são bastante óbvias. Se você salvar um arquivo de sudoers inválidos, o sistema não poderá analisá-lo. Portanto, se eu fizer um sudo vim /etc/sudoerse estragar a sintaxe, não poderei sudo vim /etc/sudoerscorrigi-lo novamente. Efetivamente, toda a capacidade de elevar privilégios via sudo será perdida, pois o sistema não poderá analisar o arquivo.
Spencer D
23

Na página de manual do visudo:

visudo bloqueia o arquivo sudoers contra várias edições simultâneas, fornece verificações básicas de integridade e verifica se há erros de análise. Se o arquivo sudoers estiver sendo editado no momento, você receberá uma mensagem para tentar novamente mais tarde.

Verifique também esta resposta em serverfault .

amyassin
fonte