puppet 用户模块未使用哈希密码更新 /etc/shadow

puppet 用户模块未使用哈希密码更新 /etc/shadow

我正在使用 puppet 管理我的 ec2 应用程序实例,这也涉及用户管理。但最近我注意到一个错误,我无法使用通过 puppet 添加的任何用户名登录。在检查其中一个损坏的实例(在本例中我使用了密钥)后,我发现 /etc/shadow 密码字段(第二列)为空。即其中没有散列密码。我无法找出散列密码未随用户创建而更新的原因。因为我已在用户模块中提供了散列密码。相信我,我正在使用一个非常简单的 puppet“用户”模块,但由于某种原因,它没有为用户更新密码。

注意:该模块在我的本地机器(Centos 6.3)上运行良好

这是我的“user.pp”模块和日志:

1)附加user.pp。

2)Puppet运行日志:

mnotice: /Usertgrochowicz/ensure: created
mnotice: /Userjpollard/ensure: created
mnotice: /Userbottle/ensure: created
mnotice: /Userjburgar/ensure: created
mnotice: /Userrahul/ensure: created
mnotice: /Userjfenocchi/ensure: created
mnotice: /Userdwhite/ensure: created
mnotice: /Userbporter/ensure: created
mnotice: /Userasavarin/ensure: created
mnotice: /Userehalfin/ensure: created
mnotice: Finished catalog run in 1.69 seconds
mnotice: Finished catalog run in 0.21 seconds

3)创建文件 /etc/shadow 条目:

tgrochowicz:!!:15956:0:99999:7:::
jpollard:!!:15956:0:99999:7:::
bottle:!!:15956:0:99999:7:::
jburgar:!!:15956:0:99999:7:::
rahul:!!:15956:0:99999:7:::
jfenocchi:!!:15956:0:99999:7:::
dwhite:!!:15956:0:99999:7:::
bporter:!!:15956:0:99999:7:::
asavarin:!!:15956:0:99999:7:::
ehalfin:!!:15956:0:99999:7:::

4)操作系统版本和架构:

ec2-user@ip-10-100-38-78 ~$ uname -r
3.4.43-43.43.amzn1.x86_64
ec2-user@ip-10-100-38-78 ~$ uname -a
Linux ip-10-100-38-78 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon May 6 18:04:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

知道为什么该模块无法从我的 ec2 实例上的模块更新密码吗?


抱歉,我不知道这不是一个论坛。以下是我的问题的更新:

我同意……我忘了说 ruby​​-shadow 已经作为“用户”模块的先决条件安装。/etc/shadow 密码字段仍然为空。我不知道是什么阻止了 puppet……有什么想法吗?

以下是表明 ruby​​-shadow 已安装并启动的命令日志:

[root@ip-10-100-39-44 ~]# ruby -e "require 'puppet' ; puts Puppet.features.libshadow?"
true
[root@ip-10-100-39-44 ~]# rpm -qa | grep ruby-shadow
ruby-shadow-1.4.1-15.2.amzn1.x86_64

下面是 puppet 日志,显示在“用户”模块之前安装了“ruby-shadow”包:

[root@ip-10-100-39-44 ~]# less /var/log/messages 
*(/Stage[main]/Packages/Yumrepo[epel]/enabled) enabled changed '0' to '1'
Sep 20 03:08:50 ip-10-100-39-44 yum[2631]: Installed: ruby-shadow-1.4.1-15.2.amzn1.x86_64
Sep 20 03:08:51 ip-10-100-39-44 puppet-apply[2471]: (/Stage[main]/Packages/Package[ruby-shadow]/ensure) created*

*(/Stage[main]/Env::Sshd/Augeas[PasswordAuthentication]/returns) executed successfully
Sep 20 03:10:32 ip-10-100-39-44 puppet-apply[2471]: (/Stage[main]/Env::Sshd/Service[sshd]) Triggered 'refresh' from 1 events
Sep 20 03:10:38 ip-10-100-39-44 puppet-apply[2471]: (/Stage[main]//Exec[wait_for_5_sec]/returns) executed successfully
Sep 20 03:10:38 ip-10-100-39-44 puppet-apply[2471]: (/User[bporter]/ensure) created
Sep 20 03:10:38 ip-10-100-39-44 puppet-apply[2471]: (/User[asavarin]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[ehalfin]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[jpollard]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[bottle]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[jburgar]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[rahul]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[tgrochowicz]/ensure) created
Sep 20 03:10:40 ip-10-100-39-44 puppet-apply[2471]: (/User[jfenocchi]/ensure) created
Sep 20 03:10:40 ip-10-100-39-44 puppet-apply[2471]: (/User[dwhite]/ensure) created*

谢谢

答案1

Ruby(以及 Puppet)需要安装一个名为 ruby​​-shadow 的库,以便允许 ruby​​ 修改影子密码文件。

在 RHEL/CentOS 上,这是 ruby​​-shadow rpm。在其他平台上,它可能被称为 ruby​​-shadowlib。

Puppet 文档在用户类型在 provider->useradd 部分下。

您应该能够通过执行以下操作来验证您正在加载正确的东西:

ruby -e "require 'puppet' ; puts PUppet.features.libshadow?"

如果加载正确它应该返回 true。

相关内容