Назад | Перейти на главную страницу

Синхронизация пользователей через NFS

Я использую веб-сервер с конфигурацией и пользовательскими файлами, совместно используемыми через 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