У меня две машины, одинаковое оборудование (одна должна быть для резервного копирования), одинаковое программное обеспечение (красная шляпа 4). Мне нужно знать, как синхронизировать всех пользователей, использующих учетные записи ftp и электронной почты. Достаточно скопировать /etc/passw
и /etc/shadow
на другую машину, чтобы заставить это работать? Возможно, с помощью cron и использования rsync
?
Вы можете использовать rsync, если две установки действительно идентичный, например: no uid отличается, и вы не планируете когда-либо создавать уникальных пользователей для сервера резервного копирования (обратите внимание, что это подразумевает не установку программного обеспечения, которому нужен собственный uid). В большинстве случаев это не рекомендуемое решение (это может быть NIS или LDAP), но оно должно работать.
Несколько более гибким решением было бы использование сценария, который копирует информацию для каждого пользователя (пароль, группы, тень) только тогда, когда это необходимо (пользователь новый или был изменен). Вы можете сделать это с помощью сценария оболочки с помощью diff или используя что-то вроде perl или python. Сообщите мне, если вы заинтересованы в этом решении и вам нужна помощь. Таким образом, вы также можете легко избежать необходимости разделять системные учетные записи (включая root) между системами, что может быть неуместным.
Вы уверены, что ваши ftp и почтовые демоны используют исключительно пользователей системы? Иногда они используют собственные пользовательские базы данных.
РЕДАКТИРОВАТЬ:
На главном сервере (этот фрагмент взят из ответа на Простая односторонняя синхронизация списка паролей пользователей между серверами):
awk -F: '($3>=500) && ($3!=65534)' /etc/passwd > passwd.prod
awk -F: '($3>=500) && ($3!=65534)' /etc/group > group.prod
awk -F: '($3>=500) && ($3!=65534) {print $1}' /etc/passwd | grep -f - /etc/shadow > shadow.prod
Затем перенесите файлы * .prod на сервер резервного копирования (я предполагаю, что у вас уже есть аутентификация с открытым ключом) и сделайте следующее:
awk -F: '($3<500)' /etc/passwd > passwd.new &&
cat passwd.prod >> passwd.new &&
cppw passwd.new
awk -F: '($3<500)' /etc/group > group.new &&
cat group.prod >> group.new &&
cpgr passwd.new
awk -F: '($3<500) {print $1}' /etc/passwd | grep -f - /etc/shadow > shadow.new &&
cat shadow.prod >> shadow.new &&
cppw -s shadow.new
Это должно сохранить системные учетные записи на резервном сервере неизменными, но заменять обычную информацию пользователя при каждом запуске. Вы могли бы сделать это более эффективно (поиск измененных учетных записей пользователей, а затем изменение только этих строк с помощью sed), но таким образом легче использовать cppw и cpgr, которые используют блокировку. ПРИМЕЧАНИЕ: если вы все же используете это, сначала закомментируйте строки cppw и cpgr, чтобы вы могли проверить файлы * .new.
Да, если машины действительно сопоставимы, достаточно просто скопировать эти файлы. Однако программное обеспечение и службы, которые вы установили и запустили на машине резервного копирования, скорее всего, будут небольшой частью тех, что находятся на другой машине. Было бы целесообразно копировать только пользователей выше того порога uid #, который использует ваш дистрибутив, чтобы отличать пользователей системы / программного обеспечения от обычных пользователей.