Adicione uma nova linha ao / etc / sudoers via ansible

1

Estou tentando adicionar uma nova linha ao arquivo /etc/sudoers via ansible. Mas isso não funciona qual é o problema, você poderia por favor ajudar?

Eu tentei o comando visudo -c para tornar o arquivo sudoers gravável.

exceto de

sudo echo "test ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers

todas as linhas funcionam.

Estes são arquivos sh que executei, nenhum deles funcionou.

 sudo adduser test
 sudo echo "******" | passwd --stdin test
 sudo cp /etc/sudoers /etc/sudoers_20180418
 sudo echo "test ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config20180418
 sudo sed -i 's/AllowUsers/AllowUsers test/g' /etc/ssh/sshd_config

arquivo .sh

 sudo adduser test
 sudo echo "******" | passwd --stdin test
 sudo cp /etc/sudoers /etc/sudoers_20180418
 visudo -c
 sudo echo "test ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config20180418
 sudo sed -i 's/AllowUsers/AllowUsers test/g' /etc/ssh/sshd_config
    
por 1010111100011 18.04.2018 / 09:39

2 respostas

1

O problema pode ser que a linha de comando

sudo echo "test ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers

redirecionará a saída do comando sudo , usando a identidade do usuário original para realizar o redirecionamento - e como você precisa de acesso root para gravar em /etc/sudoers , isso falhará. O comando echo é executado como root, mas não faz o redirecionamento - isso já foi configurado pelo shell que estava preparando a linha de comando sudo echo ... para execução. E como você está usando o sudo aqui, suspeito que o shell não está sendo executado como root.

Você pode reformular isso como:

echo "test ALL=(ALL)       NOPASSWD: ALL" | sudo tee -a /etc/sudoers >/dev/null

Nesta versão:

  • o comando echo é executado como o usuário original
  • o redirecionamento para / dev / null é executado como o usuário original
  • mas tee -a <filename> acrescenta uma cópia da entrada canalizada ao arquivo especificado como raiz, que é exatamente o que você precisa para acontecer.
por 18.04.2018 / 15:05
0

O RHEL possui o diretório /etc/sudoers.d , cujos arquivos estão incluídos como parte de /etc/sudoers . Considere adicionar um snippet de arquivo lá, em vez de editar /etc/sudoers em si:

echo "test ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ansible

Como alternativa, você pode descobrir que a Ansible tem recursos para gerenciar sudoers diretamente.

    
por 18.04.2018 / 12:29