Управление паролями и пользователями с помощью puppet

В этой записи поговорим об управлении пользователями и их паролями с помощью puppet. Однако, прежде чем говорит о puppet, немного поговорим о shadow passwords.

Shadow passwords используется по умолчанию в большинстве современных дистрибутивах Linux. При этом информация о паролях пользователей вместо /etc/passwd хранится в
/etc/shadow в формате:

[username]:[password]:[lastpasswdchanged]:[minimum days]:[maximum days]:[warn]:[inactive]:[expire]

Пароль в срою очередь тоже является составным полем:

$[encryption algorithm]$[salt value]$[strong encrypted password]

В деле безопасной принудительной смены паролей пользователей нам поможет утилита mkpasswd:

 mkpasswd -m sha-512 -S Np1jEa3F Qwerty
$6$Np1jEa3F$dNUm9FqKIYVEp3HQ8c3dLYVbe1JWZG2DS2mebi5TNxs5pcbfNS4TS.SqqO/pAvdhNOGy3HYVLa2CJJqisGcpB0

А теперь вернемся к puppet. Пример манифеста выглядит следующим образом:

 user { 'rascal':
  ensure     => 'present',
  comment    => "User",
  home       => "/home/rascal",
  shell      => "/bin/bash",
  uid        => 512,
  gid        => 100,
  managehome => 'true',
  password   => "$6$Np1jEa3F$dNUm9FqKIYVEp3HQ8c3dLYVbe1JWZG2DS2mebi5TNxs5pcbfNS4TS.SqqO/pAvdhNOGy3HYVLa2CJJqisGcpB0",
  groups     => ['sudo', 'audio'],
 }