Was passiert mit der LDAP-Benutzerauthentifizierung und den NFS-Ausgangsverzeichnisfreigaben außerhalb des Netzwerks?

9

Derzeit habe ich mehrere Computer im Heimnetzwerk, die eine Mischung aus statischen Desktops und Laptops sind. Es wird für mich unüberschaubar und für alle unpraktisch, über lokale Home-Verzeichnisse, Einstellungen und Sicherheit zu verfügen. Daher erwäge ich, LDAP für die allgemeine Benutzerverwaltung und NFS für gemeinsam genutzte Home-Verzeichnisse zu verwenden.

Was passiert, wenn einer der Laptops unterwegs ist? Das Heimnetzwerk ist nicht erreichbar. Wird die Authentifizierung fehlschlagen und auf den lokalen Speicher zurückgreifen? Gibt es bei der Rückkehr des Laptops eine Möglichkeit, den Heimspeicher erneut mit dem NFS-Server zu synchronisieren?

Jim
quelle

Antworten:

6

Weder NFS noch LDAP unterstützen den getrennten Betrieb: Wenn der Laptop die Server nicht erreichen kann, kann er weder auf NFS-gemountete Verzeichnisse zugreifen noch Benutzersuchen durchführen. Grundsätzlich wird es stecken bleiben.

Einige Problemumgehungen können die folgenden sein.

Anstatt Home-Verzeichnisse über NFS zu mouten, können Sie lokale Verzeichnisse unisono verwenden , um sie mit denen auf dem zentralen Server zu synchronisieren. Sie können unisono von cron aus ausführen, geschützt durch einen Test, der den Betrieb abbricht, wenn der Server nicht erreichbar ist. Dieser Beitrag auf AskUbuntu und dieser andere enthalten eine Diskussion zum Thema Synchronisation und einige nützliche Vorschläge.

In Bezug auf das Problem der Benutzerauthentifizierung / -autorisierung drehen sich die Lösungen um die Verwendung von libnss-dbals Quelle für Benutzerinformationen:

  • Installieren libnss-dbund konfigurieren Sie dann /etc/nsswitch.conf, um dbzusätzlich zum regulären Quellcode nachzuschlagen files:

    passwd: files db group: files db shadow: files db

    Die dbQuelldateien befinden sich in /var/lib/misc ( /var/lib/misc/passwd.dbusw.). Sie können dann eine Masterkopie dieser Dateien auf Ihrem zentralen Server aufbewahren und die Clients mit rsync+ synchronisieren cron. Nachteile: Es gibt keine vorgefertigten Verwaltungsskripte zum Verwalten der Datenbankdateien auf dem Server (von denen ich weiß). Außerdem tritt eine Synchronisationsverzögerung auf und Sie müssen eine Möglichkeit einrichten, eine rsyncVerbindung zum Master-Server herzustellen.

  • Die Pakete nss-updatedbund libpam-ccredsbieten eine sauberere Möglichkeit, dies einzurichten: Mit können nss-updatedbSie das passwd.dbund lokal neu erstellen group.db, während die shadowInformationen von verwaltet werden libpam-ccreds. Anweisungen zum Einrichten finden Sie in den READMEDateien, die den Paketen beiliegen.

Riccardo Murri
quelle
@Jorge: Vielen Dank für diesen Vorschlag! Ich habe den Antworttext aktualisiert.
Riccardo Murri
2

Dateien

Bei Dateien würde ich eine netzbasierte Synchronisierung für gängige Dateien (z. B. Ubuntu One oder Dropbox ) durchführen und dann einen freigegebenen Ordner für größere Dateien (z. B. Musik-, Foto-, Video- und Ubuntu-ISOs) haben. Dies kann ein NFS-Mount sein, der bei einem Ausfall keine große Rolle spielt, oder eine Samba-Freigabe oder wahrscheinlich eine von mehreren anderen Technologien.

LDAP

Ein LDAP-Fehler verursacht definitiv Probleme. Alle Arten von Systemkonten, von denen Sie normalerweise nichts wissen, können nicht übersetzt werden (Name <-> ID-Nummer), und das System bleibt bestenfalls eine Minute lang wiederholt hängen, während Sie zuvor auf eine Antwort vom LDAP-Server warten Zurückgreifen auf das lokale System. Oder das System blockiert einfach und fällt vollständig aus.

Es gibt einige Möglichkeiten, dies zu umgehen . Sie können eine lokale Kopie einrichten und auf verschiedene Arten synchronisieren. Weitere Antworten auf diese Frage und die verknüpfte Frage finden Sie hier. Sie können LDAP auch anweisen, die Systembenutzer nicht aus dem LDAP-Verzeichnis, sondern aus lokalen Dateien abzurufen. Auf unseren Servern haben wir Folgendes am Ende unsererldap.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

Sie möchten sicherstellen, dass sich alle Systembenutzer in dieser Liste befinden. Selbst dann ist es wahrscheinlich nicht genug für den Laptop-Gebrauch.

Von der Manpage 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.

Im Grunde genommen gibt LDAP vor, diese Benutzer nicht zu kennen, ohne den Masterserver zu kontaktieren. Daher greift der NSS auf die lokalen Benutzer zurück und das System funktioniert einwandfrei.

Eine letzte Idee ist, dass Sie, wenn Sie bereit sind, Zeit mit dem Erlernen von LDAP zu verbringen, stattdessen eine grundlegende Puppe lernen und diese verwenden können, um alle Benutzer auf allen Systemen gleich zu halten - siehe beispielsweise dieses Puppenrezept . Mit Puppet können Sie auch viele andere Dinge tun - gemeinsame Pakete installieren, verschiedene Aspekte einrichten ...

Hamish Downer
quelle