如何让Vagrant/Puppet正确添加Linux密码?
我正在尝试使用Vagrant创建一个Ubuntu虚拟机。我的主机是Windows7,我的basebox是precise64。 如果我按照建议的方式在Puppet中添加用户,如下所示:如何让Vagrant/Puppet正确添加Linux密码?,vagrant,puppet,Vagrant,Puppet,我正在尝试使用Vagrant创建一个Ubuntu虚拟机。我的主机是Windows7,我的basebox是precise64。 如果我按照建议的方式在Puppet中添加用户,如下所示: user { "johnboy": ensure => present, managehome => true, password => '$6$ev8faya2$M2pB3YQRpKUJMnJx6LnsyTbDdi.umsEEZttD01pk8ZSfMGrVmln
user { "johnboy":
ensure => present,
managehome => true,
password => '$6$ev8faya2$M2pB3YQRpKUJMnJx6LnsyTbDdi.umsEEZttD01pk8ZSfMGrVmlnjoVhIHyuqYt3.yaG1SZjaoSxB39nNgFKb//',
groups => ["admin"],
shell => "/bin/bash";
}
在vagrant设置了我的框并且散列不在/etc/passwd中之后,我登录
如果我没有设置资源类型,而是像这样使用exec和usermod
user { "johnboy":
ensure => present,
managehome => true,
groups => ["admin"],
shell => "/bin/bash";
}
exec { 'set password':
command => "usermod -p '$6$ev8faya2$M2pB3YQRpKUJMnJx6LnsyTbDdi.umsEEZttD01pk8ZSfMGrVmlnjoVhIHyuqYt3.yaG1SZjaoSxB39nNgFKb//' johnboy",
require => User[johnboy];
}
我在/etc/passwd中只得到了散列的一部分
johnboy:.umsEEZttD01pk8ZSfMGrVmlnjoVhIHyuqYt3.yaG1SZjaoSxB39nNgFKb//:16101:0:99999:7:::
有些页面建议安装ruby shadow,因此我尝试了以下方法:
gem install ruby-shadow
但是,安装失败,可能是因为我没有安装Ruby。Vagrant是一个100MB的下载。管理密码的gem真的不包括在内吗
如何让Vagrant/Puppet正确设置密码?这是因为它存储在/etc/shadow文件中。这是出于安全原因,因为它只能由root/super用户访问 像这样避开散列中的美元符号,它应该会起作用
exec { 'set password':
command => "usermod -p '\$6\$ev8faya2\$M2pB3YQRpKUJMnJx6LnsyTbDdi.umsEEZttD01pk8ZSfMGrVmlnjoVhIHyuqYt3.yaG1SZjaoSxB39nNgFKb//' johnboy",
require => User[johnboy];
}
流浪汉的规定就像根一样,不是吗?这并不能解释当我放入hash并运行usermod时,其中只有一半进入/etc/passwd。在密码中转义$符号,如\$,这是必需的,因为您将命令包装在双引号中,因此允许变量插值