Como posso ter uma senha definida apenas para marionetes ao criar um usuário?

9

Quero que o Puppet não gerencie uma senha (ou seja, redefina-a quando for alterada), mas defina a senha inicial quando o Puppet criar o usuário.

Eu estava pensando em fazer um notifypara um Execrecurso que define a senha, mas isso é acionado quando qualquer propriedade gerenciada pelo Puppet é modificada (por exemplo, associação ao grupo, diretório inicial etc.). Eu não quero isso.

Alguma ideia?

Belmin Fernandez
fonte

Respostas:

9

O Puppet em si não suporta "definir senha na criação do usuário, mas não o contrário".

Uma opção seria configurar uma fonte de autenticação externa, como LDAP.

Outra seria o seu notifypara uma Execideia, mas a fazer a Execum pouco mais esperto.

exec {
  "/usr/sbin/usermod -p '${password}' ${user}":
    onlyif => "/bin/egrep -q '^${user}:[*!]' /etc/shadow",
    require => User[$user];
}

Não testei isso, mas verificando se a senha não foi definida no Execrecurso, você deve obter o resultado que estava procurando. Eu acho que, dessa maneira, as coisas notify/ refreshonlynão são necessárias, mas provavelmente não machucariam.

freiheit
fonte
1
Eu já vi algumas máquinas sendo usadas !para não definir senha, nesse caso, egrep -q '^${user}:[*!]:' /etc/shadowfunciona melhor.
Leedm777
1
Para RHEL / Cent: egrep '^${username}:!!:.*:' /etc/shadow
rfelsburg
1
grep -Eq '^${user}:[*!]!?:' /etc/shadow"parece ser o mais portátil e não redefinirá os usuários com uma senha bloqueada.
CodeGnome 24/07