一千萬個為什麽

搜索

接近用戶使用Ansible添加和編輯



我將附加到一個基本上將用戶組織到AWS Linux服務器集群中的小型項目。分配給服務器的用戶具有不同的UIDS和可能不同的GUID。我希望能夠使用Ansible來解決這個問題並更好地組織用戶。我可以讓Ansible在測試環境中運行,但有一件事讓我感到緊張,因為/etc/passwd 完全搞砸了!所以我的問題如下:

  1. 更好的方法是使用Ansible覆蓋/etc/passwd 。所以基本上我有一個/etc/passwd 模板,並使用Jinja2和Ansible庫的組合來重寫/etc/passwd 中的值(我目前正在這樣做 sudoers ,它工作得很好)?如果是這種情況,我是否需要對/etc/shadow 做任何事情,或者我在那裏安全嗎?
  2. Ansible足夠聰明,我不需要使用/etc/passwd ?例如,當他應該一致地分配5002時,我將用戶 bob 分配給UID 5001。如果我要使用users模塊讀取用戶,並將5002專門分配給他的UID,那會更好嗎?

如果您需要更多信息,請告訴我。

轉載註明原文: 接近用戶使用Ansible添加和編輯

一共有 1 個回答:

如果在一個地方跨多臺服務器編輯重要的平面文件太可怕了..

我經常建議的一種方法是讓系統用戶駐留在/ etc/passwd文件中,並為需要登錄的人員添加一個額外的名稱服務交換機(NSS)源。對於大型項目(大量用戶使用PAM進行身份驗證用戶數據),這意味著LDAP,對於小型用戶(少數可以是數百個這樣的用戶),NSS_db + PAM_userdb。

通過為用戶提供多個NSS和PAM源,您可以避免在任何原因導致人員用戶帳戶分發失敗時禁用服務器。服務(例如您的特權Ansible帳戶)應該始終僅取決於標準的/ etc/passwd文件。對於某些情況(比如你的),LDAP(甚至是MySQL)可能是矯枉過正的。

考慮舊的BDB支持的gem,最初設計的(對於大型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/提示/ CentOS的,紅帽-的vsftpd-FTP-與虛users.html

腳步

  1. collect your passwd, shadow, and group files on a secure server with the NSS_db Makefile
  2. build the NSS passwd and group db files using the provided NSS_db Makefile
  3. extract the users and password hashes from shadow file and build PAM db file

    awk -F: '{print $1;print$2}' shadow > users.txt # used like the vsftpd vusers.txt example
    
    db_load -T -t hash -f users.txt PAM-users.db
    
  4. distribute the files to somewhere appropriate on your target servers (maybe /var/db/authdb/*.db)

  5. set up the target servers' PAM.conf and NSSwitch.conf files to use these db files

  6. 腳步 1-4 are the repeatable build/deploy process.

為什麽?

  • 完成pam/nss配置後,您有可能會破壞服務 通過更新/破壞用戶auth/auth是非常低的。
  • 用戶身份驗證可在每臺服務器上運行,而不需要像LDAP或MySQL等外部網絡依賴。
  • 即使您無法擁有不可變的服務器,您也可以將數據庫文件視為服務器場上的不可變工件,以減少/阻止用戶認證雪花。