通過 NFS 同步使用者
我正在實現一個 Web 伺服器,其中配置和使用者文件通過 NFS (Amazon EFS) 共享,如下所述: https ://serverfault.com/a/933566/81774
作為我的 Apache 配置的一部分,我使用 mod_mpm_itk 以不同的使用者名執行網站。如何在伺服器之間同步使用者名,而無需將新使用者名烘焙到 Web 伺服器 AMI。
我假設我不能只是將 /etc/passwd 移動到 NFS,因為如果沒有安裝 NFS,伺服器將無法啟動?
根據評論更新:
似乎沒有辦法使用 nsswitch.conf 載入其他文件,只能根據此答案查詢其他服務:https ://unix.stackexchange.com/a/210587
附加服務的缺點是引入了額外的故障點。
當伺服器啟動時從 NFS 複製 /etc/passwd 並使用 pwck 重新讀取它是否是一個可行的選項,如此處所述https://unix.stackexchange.com/a/102336?
您可以嘗試使用
pam_extrausers
. 它使用單獨/etc/passwd
的使用者帳戶樣式列表,以補充標準身份驗證機制。等效文件是/var/lib/extrausers/passwd
、/var/lib/extrausers/shadow
和/var/lib/extrausers/group
。每當它的一個使用者帳戶被更新時,同步它會更安全,留下
/etc/passwd
每台伺服器管理的相關文件。在 Debian 派生系統上,軟體包名稱是
libnss-extrausers
.雖然這是一個
PAM
模組,但配置應用於/etc/nsswitch.conf
:passwd: compat extrausers group: compat extrausers shadow: compat extrausers
要在這些文件中創建條目,最好在您的主系統上以本地使用者的身份創建它們(標準實用程序都不能管理這些條目)。然後將這些條目從現有的
passwd
,shadow
和group
文件複製到/var/lib/extrausers
. 請記住修復權限shadow
以匹配系統之一。grep -E '^(user1|user2|user3):' /etc/passwd >/var/lib/extrausers/passwd grep -E '^(user1|user2|user3):' /etc/shadow >/var/lib/extrausers/shadow grep -Ew '(user1|user2|user3)' /etc/group >/var/lib/extrausers/group chmod u=rw,go=r /var/lib/extrausers/passwd /var/lib/extrausers/group chown root:shadow /var/lib/extrausers/shadow chmod u=rw,g=r,o= /var/lib/extrausers/shadow ls -l /var/lib/extrausers total 12 -rw-r--r-- 1 root root 21 Apr 18 15:36 group -rw-r--r-- 1 root root 49 Apr 18 15:37 passwd -rw-r----- 1 root shadow 123 Apr 18 15:37 shadow
您可以使用您喜歡的任何技術複製文件。我喜歡
rsync
根等價:for rhost in remote1 remote2 remote3 ... do rsync -avR /var/lib/extrausers/* "$rhost":/ done