Programaticamente usa visudo para editar sudoers?

5

Eu tenho um arquivo sudoers armazenado em nosso repositório svn. Eu quero svn export it para /etc/sudoers , mas não posso fazê-lo porque o sudo detecta que ele não foi editado pelo visudo e lança erros de sintaxe. O que exatamente visudo -f faz e posso fazer o seguinte:

cd /tmp && svn export <URL>/sudoers &&  visudo < /tmp/sudoers

sem intervenção manual?

    
por dperry1973 13.06.2013 / 23:46

2 respostas

9

Provavelmente não é porque não foi editado pelo visudo, é porque teve erros de sintaxe. Além disso, verifique as permissões. É perfeitamente correto editar /etc/sudoers sem usar visudo . visudo está lá apenas para garantir acesso exclusivo e verificar a sintaxe antes de se comprometer com o arquivo real. Dito isto, para responder à sua pergunta, você pode fazer:

VISUAL="cp /tmp/sudoers" visudo

visudo chama seu editor preferido com /etc/sudoers.tmp , verifica a sintaxe no novo conteúdo do arquivo depois que o editor retornou e se compromete com /etc/sudoers quando estiver satisfeito. Ao definir seu editor preferido como cp /tmp/sudoers , você está realmente dizendo para fazer cp /tmp/sudoers /etc/sudoers.tmp .

(armazenar o arquivo sudoers temp em um diretório gravável do mundo como /tmp soa perigoso para mim)

    
por 14.06.2013 / 00:00
4

Eu edito e implanta sudoers o tempo todo. Certifique-se de fazer o seguinte:

  • Use visudo -c f <filename> para verificar a sintaxe antes de fazer check-in no svn.
  • Ao implantar, verifique se as permissões são 0440 e pertencem a root:root (ou root:wheel em derivados BSD).

Se o seu host que você usa para fazer check-in executar um SO diferente daquele que você está implementando, você também deve executar visudo -c -f <filename> no sistema de destino antes de copiá-lo para o lugar.

    
por 14.06.2013 / 07:11