Co dzieje się z uwierzytelnianiem użytkownika LDAP i udostępnianiem katalogu domowego NFS, gdy nie ma go w sieci?

9

Obecnie mam w domu kilka urządzeń, które są mieszanką stacjonarnych komputerów stacjonarnych i laptopów. Staje się dla mnie niemożliwy do zarządzania i niepraktyczne dla wszystkich, aby mieć lokalne katalogi domowe, ustawienia i zabezpieczenia, dlatego rozważam użycie LDAP do wspólnego zarządzania użytkownikami i NFS dla wspólnych katalogów domowych.

Co się stanie, gdy jeden z laptopów wyruszy w drogę? Sieć domowa jest nieosiągalna, więc czy autoryzacja zakończy się niepowodzeniem i wróci do lokalnej pamięci? Czy po powrocie laptopa istnieje sposób na zsynchronizowanie pamięci domowej z serwerem NFS?

Jim
źródło

Odpowiedzi:

6

Ani NFS, ani LDAP nie obsługują operacji rozłączenia: tzn. Gdy laptop nie może uzyskać dostępu do serwerów, nie będzie mógł uzyskać dostępu do żadnych katalogów podłączonych do NFS, ani nie będzie mógł wyszukiwać użytkowników. Zasadniczo utknie.

Kilka obejść może być następujące.

Zamiast mouting katalogów domowych poprzez NFS, można zachować katalogów lokalnych zastosowania objętego unisono , aby zsynchronizować je z jednego na serwerze centralnym. Możesz uruchomić unisona z crona, strzeżonego przez test, który przerywa działanie, jeśli serwer jest nieosiągalny. Ten post na AskUbuntu i ten drugi zawierają dyskusję na temat synchronizacji i kilka przydatnych sugestii.

Jeśli chodzi o problem z uwierzytelnianiem / autoryzacją użytkowników, rozwiązania dotyczą wykorzystania libnss-dbźródła informacji dla użytkownika:

  • Zainstaluj libnss-db, a następnie skonfiguruj, /etc/nsswitch.confaby wyszukać dbźródło oprócz zwykłych files:

    passwd: pliki db grupa: pliki db cień: pliki db

    Te dbpliki źródłowe znajdują się w /var/lib/misc ( /var/lib/misc/passwd.dbitd.). Następnie możesz zachować kopię główną tych plików na centralnym serwerze i zsynchronizować klientów z rsync+ cron. Wady: nie ma gotowych skryptów zarządzania do zarządzania plikami db na serwerze (o których wiem), a ponadto ponosisz opóźnienie synchronizacji i musisz skonfigurować sposób rsyncpołączenia z serwerem głównym.

  • nss-updatedbI libpam-ccredspakiety zapewniają sposób czystszy to ustawić: ze nss-updatedbmożna odtworzyć lokalnie passwd.dbi group.db, podczas gdy shadowinformacja jest zarządzany przez libpam-ccreds. Instrukcje dotyczące konfiguracji można znaleźć w READMEplikach dołączonych do pakietów.

Riccardo Murri
źródło
@Jorge: wielkie dzięki za tę sugestię! Zaktualizowałem tekst odpowiedzi.
Riccardo Murri
2

Akta

Jeśli chodzi o pliki, wybrałbym synchronizację sieciową dla popularnych plików (powiedzmy Ubuntu One lub Dropbox ), a następnie udostępniłem folder dla większych plików (może Muzyka, Zdjęcia, Wideo i ISO Ubuntu). Może to być montaż NFS, który, gdy zawiedzie, nie ma większego znaczenia, udział Samby lub prawdopodobnie jedna z wielu innych technologii.

LDAP

Awaria LDAP zdecydowanie powoduje problemy. Wszelkich rodzajów kont systemowych, których normalnie nie znasz, nie można przetłumaczyć (nazwa <-> numer identyfikacyjny), a system będzie w najlepszym wypadku wielokrotnie zawieszał się na minutę, czekając na odpowiedź z serwera LDAP przed wracając do systemu lokalnego. Lub system może się po prostu zablokować i całkowicie zawieść.

Jest na to kilka sposobów . Możesz skonfigurować kopię lokalną i zsynchronizować ją na różne sposoby - zobacz inne odpowiedzi na to pytanie i powiązane pytanie. Możesz także powiedzieć LDAP, aby nie pobierał użytkowników systemu z katalogu LDAP, ale z plików lokalnych. Na naszych serwerach umieściliśmy następujące na końcu naszegoldap.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

Chcesz się upewnić, że wszyscy użytkownicy systemu znajdują się na tej liście. Nawet wtedy prawdopodobnie nie wystarczy do korzystania z laptopa.

Ze strony podręcznika 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.

Zasadniczo więc LDAP udaje, że nie zna tych użytkowników, nawet nie kontaktując się z głównym serwerem, więc NSS opiera się na lokalnych użytkownikach i system działa dobrze.

Ostatnim pomysłem jest to, że jeśli chcesz poświęcić czas na naukę LDAP, możesz zamiast tego nauczyć się podstawowej marionetki i użyć jej, aby utrzymać wszystkich użytkowników na tym samym poziomie we wszystkich systemach - zobacz na przykład ten przepis na marionetkę . Puppet pozwoli ci również zrobić wiele innych rzeczy - instalowanie wspólnych pakietów, wspólne konfigurowanie różnych aspektów ...

Hamish Downer
źródło