Nfs

通過 NFS 同步使用者

  • April 18, 2019

我正在實現一個 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,shadowgroup文件複製到/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

引用自:https://serverfault.com/questions/962323