我开始使用傀儡来管理我们的RHEL服务器。此时,我尝试设置用户管理。我们在我们的校园中运行一个NIS环境,所以直到现在,我将行+testuser:添加到/etc/passwd文件中,该文件随后收到了NIS上的用户信息。我想要实现的是,我有一组管理员用户(admin1、admin2和admin3)可以登录到每台机器上,还有一组用户(user1、user2和user3)在每台机器上都是不同的。在passwd文件的末尾,我需要一个输入行+:/sbin/nologin使所有用户信息都可用,但不允许访问他们。
因此,一台机器上的/etc/passwd看起来就像
+admin1::::::
+admin2::::::
+admin3::::::
+user1::::::
+user2::::::
+::::::/sbin/nologin在另一台机器上
+admin1::::::
+admin2::::::
+admin3::::::
+user1::::::
+user3::::::
+::::::/sbin/nologin因为管理用户是静态的,但是不同系统的正常用户不同,所以我想在每个节点上声明模块中的管理用户和普通用户。
我的第一个问题是,如何编辑/etc/passwd文件以添加行。此外,重要的是排序是正确的,以便新词行在末尾。你知道如何以灵活的方式实现这一目标吗?
感谢并致以问候
发布于 2014-08-05 13:28:17
在stdlib - (https://forge.puppetlabs.com/puppetlabs/stdlib)的最新版本中有一个叫做'file_line‘的函数,它可以帮助您实现您的目标:
我还没有测试过这个,但是资源可能如下所示:
file_line { 'nis_admin_users':
path => '/etc/passwd',
line => '+::::::/sbin/nologin',
}但是,我不知道如何确保行位于底部,因为您提到了排序确实很重要。原始文件是否可能已经包含了类似的行?如果是这样的话,您可以使用名为“match”的file_line附加的可选参数,并创建一个regex进行匹配。
另一种方法是使用augues而不是-> http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas#Using+Puppet+with+Augeas。
https://serverfault.com/questions/618041
复制相似问题