Я использую веб-сервер с конфигурацией и пользовательскими файлами, совместно используемыми через NFS (Amazon EFS), как описано здесь: https://serverfault.com/a/933566/81774
В рамках моей конфигурации Apache я запускаю веб-сайты под разными именами пользователей, используя mod_mpm_itk. Как я могу синхронизировать имена пользователей между серверами без необходимости запекать новые имена пользователей в AMI веб-сервера.
Я предполагаю, что не могу просто переместить / etc / passwd в NFS, так как сервер не загружается без подключения NFS?
Обновление на основе комментариев:
Кажется, не существует способа загрузить дополнительные файлы с помощью nsswitch.conf, только для запроса дополнительных служб в соответствии с этим ответом: https://unix.stackexchange.com/a/210587
Обратной стороной дополнительной услуги является введение дополнительных точек отказа.
Можно ли скопировать / etc / passwd из NFS при запуске сервера и перечитать его с помощью pwck, как описано здесь https://unix.stackexchange.com/a/102336 ?
Если вы не хотите вводить дополнительные точки отказа, вам необходимо создать пользователей локально. На самом деле это очень хорошая идея.
Хотя вы можете скопировать файл passwd, я бы порекомендовал локальный доступный playbook или автономный манифест марионетки, который может создавать пользователей локально, если они отсутствуют. Вы можете сохранить игру на NFS.
Вы можете попробовать использовать 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