不更新用户密码

时间:2014-04-23 19:16:37

标签: vagrant puppet

Puppet没有为任何创建的用户设置密码。我尝试了几种方法,似乎没有一种方法可行,我的清单文件是:

方法1:sha1()/ md5()函数

user {'test1':
    ensure => present,
    password => sha1('vagrant'),
    shell => '/bin/bash',
}

user {'test2':
    ensure => present,
    password => md5('vagrant'),
    shell => '/bin/bash',
}

方法2:密码哈希

user {'test3':
    ensure => present,
    password => '$6$plwk1mgalbEBBF$ificPYixcMcaotnm8.aayRDa9GDgBp3OgbrFkkU1ZahT/BAf5JvIkR9WjJZNkhIVcsrFkGY/OAs5ZSMvd0Yl3/',
    shell => '/bin/bash',
}

/ etc / shadow未通过

更新
vagrant:$6$aqzOtgCM$OxgoM...Ta55l0:0:99999:7:::
test4:!:16183:0:99999:7:::
test3:!:16183:0:99999:7:::
test1:!:16183:0:99999:7:::
test2:!:16183:0:99999:7:::
  • 影子有一个"!"在我创建的用户的密码字段中标记
  • 如果我手动编辑影子文件并粘贴密码哈希,我可以成功ssh& su进入帐户。
  • 已查看managing a user password for linux in puppet

版本

  • Ubuntu:12.04(hashicorp / precise64)
  • Puppet:2.7.19
  • Vagrant:1.5.3

2 个答案:

答案 0 :(得分:1)

你遇到的问题是Puppet没有更新/ etc / shadow文件,但即使它正确地执行了这个操作,方法1仍然无法正常工作。 sha1()和md5()函数不会产生passwd / shadow兼容值,因为这不是它们的用途。生成加密密码比密码的简单散列更复杂。

方法2 工作,但由于它没有,你还有别的东西在继续。您是否尝试使用调试和/或详细模式应用清单?

我猜你错过了ruby-shadow包,Puppet需要管理这些文件。检查您的软件包提供商和/或gem以确保安装它。

答案 1 :(得分:1)

我今天也在ubuntu 12.04上遇到过这个问题。正如它在puppet docs中所说,并且由orev证实:

  

请注意,如果您想管理用户密码,则需要安装Ruby的影子密码库(通常称为ruby-libshadow)

我无法让libshadow-ruby1.8软件包运行,即使安装了评论中提到的最新的puppet版本(3.4.3和现在的3.5.1),所以我认为我' d发布对我有用的东西。我在一个新的hashicorp / precise64流浪盒上测试了它:

使用ruby-shadow gem - 它需要make所以也需要apt install build-essential

sudo apt-get install build-essential
sudo gem install ruby-shadow

然后以正确的方式为框mkpasswd创建一个密码,这是ubuntu 12.04中whois包的一部分

sudo apt-get install whois 

然后是木偶用户声明:

user { 'bob':
  ensure   => present,
  password => generate('/bin/sh', '-c', "mkpasswd -m sha-512 ${password} | tr -d '\n'"),
  ...
}