Como adicionar programaticamente o secure_path no arquivo sudoers

6

Estou tentando criar um script de dados do usuário para uma instância do EC2 que cria o nó e npm do github e, em seguida, inicia um serviço. Para lubrificar essas rodas, preciso adicionar:

:/usr/local/bin

ao final da linha em / etc / sudoers que começa:

Defaults        secure_path="

link fala sobre usar o visudo para conseguir isso, mas eu deseja fazer isso programaticamente dentro dos dados do usuário do EC2.

link fala sobre a edição do sudoers arquivo, mas parece muito mais cozido para o que estou tentando alcançar.

Eu achei que seria fácil usar a linha e substituí-la, mas estou perplexo. Não só por causa dessa irritante virada invertida!

    
por belial 28.11.2016 / 12:37

2 respostas

3

Se você conseguir substituir o valor secure_path em vez de anexá-lo, poderá usar uma solução muito mais fácil. Normalmente, o sudo tem um diretório de configuração como /etc/sudoers.d , onde você pode descartar arquivos de configuração adicionais.

Basta criar um arquivo com o valor completo de secure_path :

Defaults secure_path="<default value>:/usr/local/bin"

Isto substitui o valor da configuração principal. Se o valor do caminho for o mesmo para todas as suas máquinas, isso pode ser facilmente implantado com scripts ou um pacote.

Isso tem a vantagem adicional de você não precisar verificar e possivelmente mesclar arquivos de configuração quando o pacote sudo for atualizado no futuro.

    
por 29.11.2016 / 14:00
2

assumindo que você sabe que a linha com o secure_path existe, um comando simples do sed para fazer isso

sed -i -e '/secure_path/ s[=.*[&:/usr/local/bin[' /etc/sudoers

ou um pouco mais sofisticado (mais verificação de sintaxe na entrada):

sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=:/usr/local/bin[' /etc/sudoers
    
por 29.11.2016 / 13:32

Tags