2014-01-31 32 views
0

我想用Vagrant创建一个Ubuntu VM。我的主机是Windows7,我的basebox是精确的64。 如果我添加在木偶用户这样的推荐方法:如何获得流浪/木偶正确添加Linux密码?

user { "johnboy": 
    ensure => present, 
    managehome => true, 
    password => '$6$ev8faya2$M2pB3YQRpKUJMnJx6LnsyTbDdi.umsEEZttD01pk8ZSfMGrVmlnjoVhIHyuqYt3.yaG1SZjaoSxB39nNgFKb//', 
    groups => ["admin"], 
    shell => "/bin/bash"; 
} 

我登录无业游民已置备我的箱子和哈希是不是在/ 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::: 

结束与哈希只有部分设置有些建议安装红宝石的影子,所以我尝试这样做:

gem install ruby-shadow 

但是,安装失败,可能BEC因为我没有安装Ruby。 Vagrant是一个100 MB的下载。管理密码的宝石是否真的不包括在内?

如何让Vagrant/Puppet正确设置密码?

回答

1

这是因为它存储在/ etc/shadow文件中。这是出于安全原因,因为它只能由root/super用户访问。

像这样逃离美元符号,它应该工作。

exec { 'set password': 
    command => "usermod -p '\$6\$ev8faya2\$M2pB3YQRpKUJMnJx6LnsyTbDdi.umsEEZttD01pk8ZSfMGrVmlnjoVhIHyuqYt3.yaG1SZjaoSxB39nNgFKb//' johnboy", 
    require => User[johnboy]; 
} 
+0

作为根的流浪者规定不是吗?这并不能解释我在何时放入哈希并运行usermod,只有一半数据在/ etc/passwd中。 – opticyclic

+1

转义密码中的$符号像\ $,这是必要的,因为您用双引号将命令封装并允许可变插值 – cocheese