/etc/passwd
完全被搞砸了!所以我的问题如下:更好的方法是使用Ansible覆盖
/etc/passwd
。所以基本上我有一个/etc/passwd
的模板,并结合使用Jinja2和Ansible保管库来重写/etc/passwd
中的值(我目前正在使用sudoers
这样做,并且效果很好)?如果是这样,我是否需要对/etc/shadow
做任何事情还是在那儿安全?在不需要使用
/etc/passwd
的地方,Ansible是否足够聪明?例如,当我将用户bob
分配给UID 5001时,应该将其始终分配给5002。如果我要使用用户模块读取用户,并专门将5002分配给他的UID,这样做会更好吗? >如果需要更多信息,请告诉我。#1 楼
如果在一个地方跨多个服务器编辑关键的平面文件太吓人了。.我经常建议的一种方法是让系统用户驻留在/ etc / passwd文件中,并添加一个附加名称。 nss_db + pam_userdb用于需要登录的人员的服务切换(NSS)源。对于大型项目(大量用户通过PAM用户数据进行身份验证),这意味着LDAP;对于小型项目(很少有数百个此类用户),则为nss_db + pam_userdb 。
使用多个NSS和PAM用户源,您可以避免在人工用户帐户分发由于任何原因而失败时禁用服务器。服务(例如您的特权Ansible帐户)应始终仅取决于标准的/ etc / passwd文件。在某些情况下(例如您的情况),LDAP(甚至MySQL)可能会显得有些过时。
考虑一下旧的BDB支持的gems,它最初是为大型FTP文件分发服务器而设计的,其登录速度比/ etc文件要快,但在其他方面却几乎相同。它们存储相同的passwd并将分组平面文件的内容分组,但是被加载到(现在是非GPL)BerkeleyDB NOSQL键/值数据库文件中,该文件读取速度更快。为此,它只是存储用户/组身份验证/授权数据的额外地方。
NSS
https://en.wikipedia.org/wiki/Name_Service_Switch
https://www.systutorials.com/docs/linux/man/5-nsswitch.conf/
https://sourceforge.net/p/nssdb/home / Home /
PAM
https://en.wikipedia.org/wiki/Linux_PA
https://www.systutorials.com / docs / linux / man / 8-pam_userdb /
https://www.cyberciti.biz/tips/centos-redhat-vsftpd-ftp-with-virtual-users.html
步骤
使用nss_db Makefile在安全的服务器上收集密码,影子和组文件
构建nss密码和组db文件使用提供的nss_db
Makefile
从影子文件中提取用户和密码散列并构建PAM数据库文件
awk -F: '{print ;print}' shadow > users.txt # used like the vsftpd vusers.txt example
db_load -T -t hash -f users.txt pam-users.db
将文件分发到目标服务器上的适当位置
(也许/var/db/authdb/*.db)
设置目标服务器的pam.conf和nsswitch.conf文件以使用
这些数据库文件
步骤1-4是可重复的构建/部署过程。
为什么? ,通过更新/破坏用户auth / auth破坏服务的风险非常低。
用户身份验证将在没有外部网络依赖性(例如LDAP或MySQL等)的每台服务器上运行。
您可以将数据库文件视为服务器场上的不可变工件,即使您没有不可变服务器,也可以减少/防止用户身份验证雪花。
评论
对于3,stdin重定向是多余的,awk可以直接读取文件:awk -F:'{print $ 1; print $ 2}'shadow> users.txt就足够了
–滕西拜
17-10-24在7:53
我选择了这种语法@Tensibai,它仅对shell,命令是多余的。它传达了更多意图
–杰里米
17-10-24在14:58
随时对其进行编辑,起初我主要是为代码块进行编辑。 (我反对不必要的上下文更改,并在不需要的地方滥用流)
–滕西拜
17-10-24在15:16
不值得在我这头小题大做。谢谢您的关心!
–杰里米
17-10-25在18:19
评论
我会先尝试用户模块。您可能最终得到不在中央列表中的本地用户,这些本地用户不应被覆盖。替换/ etc / passwd会使那些用户迷路。我担心的一个问题是试图为现有用户组织UID,并确保他们的UID被正确覆盖并在我拥有的服务器群集中保持一致。.
Ansible用户管理文档中关于强制uid尚不清楚的是什么?
@Tensibai我从未说过我不清楚Ansible的文档。实际上,Ansible有据可查。我要问的是,是否为已创建的用户重新分配UID是否会有任何副作用,而我最好改写/ etc / passwd。但是我认为在这一点上,仅使用Ansible的用户模块覆盖UID就可以了。
更改用户uid不会更改文件所有权,因此,不管您要使用哪种解决方案,都会产生影响。