Что происходит с аутентификацией пользователей LDAP и общими папками домашнего каталога NFS, когда они находятся вне сети?

9

В настоящее время у меня есть несколько компьютеров в домашней сети, которые представляют собой смесь статических настольных компьютеров и ноутбуков. Это становится неуправляемым для меня и непрактичным для всех из них иметь локальные домашние каталоги, настройки и безопасность, поэтому я рассматриваю возможность использования LDAP для общего управления пользователями и NFS для общих домашних каталогов.

Что происходит, когда один из ноутбуков в дороге? Домашняя сеть недоступна, поэтому произойдет ли сбой аутентификации и откатится к локальному хранилищу? Кроме того, когда ноутбук возвращается, есть ли способ повторно синхронизировать домашнее хранилище с сервером NFS?

Джим
источник

Ответы:

6

Ни NFS, ни LDAP не поддерживают отключенную работу: т. Е. Когда ноутбук не может получить доступ к серверам, он не сможет получить доступ к каталогам, смонтированным в NFS, и не сможет выполнять поиск пользователей. В основном, это будет зависать.

Пара обходных путей может быть следующим.

Вместо того, чтобы монтировать домашние каталоги через NFS, вы можете использовать локальные каталоги в унисон для синхронизации с каталогами на центральном сервере. Вы можете запустить unison из cron, защищая тест, который прерывает работу, если сервер недоступен. Этот пост на AskUbuntu и этот другой содержит обсуждение по теме синхронизации и некоторые полезные предложения.

Что касается проблемы аутентификации / авторизации пользователя, решения вращаются вокруг использования libnss-dbисточника информации для пользователя:

  • Установите libnss-db, затем настройте /etc/nsswitch.confпоиск dbисточника в дополнение к обычному files:

    passwd: файлы db group: файлы db shadow: файлы db

    В dbисходные файлы расположены в /var/lib/misc ( и /var/lib/misc/passwd.dbт.д.). Затем вы можете сохранить главную копию этих файлов на центральном сервере и синхронизировать клиентов с rsync+ cron. Недостатки: нет готовых сценариев управления для управления файлами db на сервере (о которых я знаю), плюс у вас возникает задержка синхронизации и вам нужно настроить способ rsyncподключения к главному серверу.

  • nss-updatedbИ libpam-ccredsпакеты обеспечивают более чистый способ установить это: с nss-updatedbвы можете воссоздать локально passwd.dbи group.db, в то время как shadowинформация управляется libpam-ccreds. Инструкции по их настройке можно найти в READMEфайлах, прилагаемых к пакетам.

Риккардо Мурри
источник
@Jorge: большое спасибо за это предложение! Я обновил текст ответа.
Риккардо Мурри
2

файлы

Что касается файлов, я бы пошел на сетевую синхронизацию для общих файлов (скажем, Ubuntu One или Dropbox ), а затем иметь общую папку для больших файлов (например, музыка, фотографии, видео и Ubuntu ISO). Это может быть монтирование NFS, которое при сбое не имеет большого значения, или общий ресурс Samba, или, возможно, одна из ряда других технологий.

LDAP

Сбой LDAP определенно вызывает проблемы. Все виды системных учетных записей, о которых вы обычно не знаете, не могут быть переведены (имя <-> идентификатор), и система, в лучшем случае, будет несколько раз зависать в течение минуты, ожидая ответа от сервера LDAP, прежде чем отступая к локальной системе. Или система может просто заблокироваться и полностью выйти из строя.

Есть несколько способов обойти это . Вы можете настроить локальную копию и синхронизировать ее различными способами - см. Другие ответы на этот вопрос и связанный вопрос. Вы также можете указать LDAP не получать системных пользователей из каталога LDAP, а из локальных файлов. На наших серверах мы поместили следующее в конце нашегоldap.conf

# We need to ensure that various things can work without LDAP being available
# for example: booting, ssh in as root, apache ...
nss_initgroups_ignoreusers avahi,avahi-autoipd,backup,bin,daemon,dhcp,dhcpd,games,gdm,gnats,haldaemon,hplip,irc,klog,libuuid,list,lp,mail,man,messagebus,munin,mysql,nbd,news,ntp,nut,polkituser,proxy,pulse,root,sshd,statd,sync,sys,syslog,uucp,www-data

Вы хотели бы убедиться, что все пользователи системы находятся в этом списке. Даже тогда это, вероятно, недостаточно для использования ноутбука.

Со страницы руководства nss_ldap

nss_initgroups_ignoreusers <user1,user2,...,userN>
          This option directs the nss_ldap implementation of initgroups(3)
          to return NSS_STATUS_NOTFOUND if called with a listed  users  as
          its argument.

Таким образом, LDAP делает вид, что не знает этих пользователей, даже не связываясь с главным сервером, поэтому NSS использует локальных пользователей, и система работает нормально.

Одна последняя идея заключается в том, что если вы хотите потратить время на изучение LDAP, вы можете вместо этого выучить некоторую базовую куклу и использовать ее, чтобы сохранить всех ваших пользователей одинаковыми во всех системах - см., Например, этот рецепт кукол . Puppet позволит вам сделать много других вещей - установить общие пакеты, настроить различные аспекты ...

Хэмиш Даунер
источник