[[Vorlage(archiviert, )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [https://help.ubuntu.com/community/LDAPClientAuthentication] [:sudo: Befehle als Root ausführen] }}} Dieser Artikel beschreibt, wie sich Linux am [wikipedia:Active_Directory:Active Directory] authentifizieren kann. [[Inhaltsverzeichnis()]] = Voraussetzungen auf dem Active Directory Server = Wenn eine zentrale Authentifizierung aller Nutzer über Microsoft Active Directory Server erfolgen soll (ohne [:Archiv/Kerberos:] in diesem Fall) so wird dafür letztendlich das LDAP-Protokoll benutzt. Im Vergleich mit einer reinen LDAP Client Authentifizierung sind aber noch einige zusätzliche Arbeiten erforderlich. Zunächst muss am Active Directory die "SFU" (Services for Unix) und die Komponente "Server for NIS" installiert werden. Nach einem Neustart kann mit dem Windows-Tool '''adsiedit''' die Schema-Erweiterung überprüft werden. Für die Linux-Gruppen empfiehlt es sich, eine ``organizationalUnit`` als Container anzulegen. Jede Gruppe sollte dort als ``group`` angelegt werden. Dann wird auf dem letzten Reiter die NIS-Anmeldung aktiviert. Mit dem gleichen Windows Tool (adsiedit) werden die Linux-Nutzer verwaltet. Die Nutzer werden ausgewählt und deren Eigenschaften verändert. Es öffnet sich ein Fenster mit mehreren Reitern. Über dem Reiter ''"UNIX-Attribute"'' wird die NIS-Anmeldung aktiviert (NIS-Domäne ausgewählt). Weiterhin werden die Linux-Gruppen-Mitgliedschaften eingetragen (default-Gruppe und sekundäre Gruppen). Über den Reiter ''"Konto"'' wird für das Passwort die "reverse"-Speicherung vorgesehen. = Linux-Client = Als nächstes werden einige Hilfsmittel installiert [1], um den LDAP Zugriff auf Active Directory zu testen: {{{#!vorlage Paketinstallation ldap-utils openssl nscd, universe [4] portmap lat, universe, bis [:16.04:] libpam-foreground, universe, bis [:14.04:] }}} Nun sollte erst einmal ein Test erfolgen, ob der LDAP-Zugriff funktioniert: {{{#!vorlage Befehl ldapsearch -x -h -b '' \ -D '' -w Passwort '(cn=)' }}} Das System sollte eine erfolgreiche Antwort liefern. Mit '''lat''' steht ein graphisches Tool zur Arbeit mit der LDAP (Active Directory) Datenbasis bereit. == Installation der LDAP-Zugriffspakete == Bei der Installation [1] von {{{#!vorlage Paketinstallation libnss-ldap, universe }}} werden mehrere Angaben abgefragt: * URI (Uniform Resource Identifier) des LDAP-Servers * Basis-DN * LDAP-Version: 3 * Root-DN * Root-PW * es wird ein Hinweis für die Änderung der '''/etc/nsswitch.conf''' ausgegeben Das Ergebnis ist unter anderem eine Konfigurationsdatei: '''/etc/ldap.conf''', die manuell zu ergänzen ist (siehe unten). Bei der Installation [1] von {{{#!vorlage Paketinstallation libpam-ldap, universe }}} werden wieder mehrere Angaben abgefragt: * Lokalen root zum Datenbank-Administrator machen: Yes * Benötigt die LDAP-Datenbank eine Anmeldung?: Yes * Root-DN * Root Passwort * Bind-DN * Bind-Passwort Das Ergebnis ist auch die Konfigurationsdatei: '''/etc/ldap.conf'''. Nun muss noch die Konfigurationsdatei '''/etc/ldap.conf''' ergänzt werden, damit die Active Directory Attribute korrekt genutzt werden können: {{{ # ADS scope sub timelimit 5 bind_timelimit 5 idle_timelimit 3600 pam_login_attribute uid pam_login_attribute sAMAccountName pam_password ad nss_base_passwd nss_base_shadow ... nss_base_group nss_map_objectclass posixAccount user nss_map_objectclass shadowAccount user nss_map_attribute uid sAMAccountName nss_map_attribute uidNumber msSFU30UidNumber nss_map_attribute gidNumber msSFU30GidNumber nss_map_attribute cn sAMAccountName nss_map_attribute posixGroup memberOf nss_map_attribute userPassword msSFU30Password nss_map_attribute homeDirectory msSFU30HomeDirectory nss_map_attribute loginShell msSFU30LoginShell nss_map_attribute gecos name nss_map_objectclass posixGroup group nss_map_attribute uniqueMember member pam_filter objectclass=user ssl no bind_policy soft }}} {{{#!vorlage Hinweis Es können mehrere Zeilen der Art ``nss_base_password`` und ``nss_base_shadow`` angegeben werden! }}} == Vorbereiten des Zugriffs == Nun müssen noch drei Dateien am Ende wie folgt ergänzt [3] werden: '''/etc/passwd''' {{{ +:::::: }}} '''/etc/group''' {{{ +::: }}} '''/etc/nsswitch.conf''' {{{ passwd_compat: ldap group_compat: ldap shadow_compat: ldap }}} Eine Alternative ist in [https://help.ubuntu.com/community/LDAPClientAuthentication] beschrieben. Mit dem Kommando: '''sudo auth-client-config -t nss -p lac_ldap''' kann auch die Modifikation erfolgen, die allerdings anders ausfällt. Nicht jede Variante muss immer funktionieren. Danach sollten die Befehle: {{{#!vorlage Befehl getent passwd }}} * und {{{#!vorlage Befehl getent group }}} * gegebenenfals muss der Service nscd neu gestartet werden (mit '''service nscd restart'''), damit dies funktioniert. * neben den lokalen Nutzern und Gruppen die neuen ADS-Nutzer und -Gruppen anzeigen. Funktioniert dies nicht, so muss die Änderung in '''/etc/nsswitch.conf''' auskommentiert werden. Danach funktioniert wieder der normale Login. Dann kann der Fehler gesucht werden (möglicherweise Schreibfehler in den Konfigurationsdateien; siehe auch die Log-Dateien: '''/var/log/auth.log''', '''/var/log/syslog''', '''/var/log/messages'''!) {{{#!vorlage Warnung Achtung: Wenn der Befehl ``getent ...`` funktioniert, sollte man sich nicht mehr abmelden, bis auch das PAM angepasst und getestet ist. Wenn es nicht funktioniert, so sind unbedingt die Änderungen in '''/etc/nsswitch.conf''' auszukommentieren und es ist zu testen, ob in einem anderen Fenster die Anmeldung wieder funktioniert, bevor man sich abmeldet! Wenn die Ausgabe des Kommandos ``getent ...`` sehr zäh ist, so kann es sein, dass verschiedene Einträge in '''/etc/nsswitch.conf''' nicht dem Stand der Zugriffsmöglichkeiten entsprechen. Die Einträge für ``hosts`` und ``network`` sollten korrekt sein. Notfalls sind sie manuell anzupassen. }}} == Anpassung des PAM == Zunächst müssen folgende Pakete installiert sein: * libpam-cap * libpam-gnome-keyring Die Anpassungen fallen vergleichsmäßig gering aus. In den Konfigurationsfiles '''/etc/pam.d/common-auth''', '''/etc/pam.d/common-account'''. '''/etc/pam.d/common-session''' und '''/etc/pam.d/common-password''' ist in den Zeilen mit '''pam_ldap.so'''' der Parameter '''minimum_uid=10000''' zu ergänzen (10000 ersetzen durch Begin-UID der LDAP-Auth.). == Benutzung von useradd und groupadd == Die Linux-Kommandos `useradd` und `groupadd` werden gelegentlich beim Installieren von zusätzlichen Paketen aufgerufen. Dabei vergeben sie neue ''GID'' und ''UID''. Damit diese in einem Bereich außerhalb des von Active Directory verwalteten Bereichs bleiben, sollten zwei kleine Anpassungen in '''/etc/login.defs''' vorgenommen werden: '''/etc/login.defs''' {{{ # UID_MAX 60000 UID_MAX ... # GID_MAX 60000 GID_MAX }}} == Abschluss == Jetzt sollte der nscd neu gestartet werden mit dem Befehl: {{{#!vorlage Befehl sudo /etc/init.d/nscd restart }}} Schließlich kann man sich an einem anderen Fenster am Login-Prompt anmelden. Die Anmeldung sollte mit den System-Accounts, die nicht Bestandteil des Active Directories sind, genauso funktionieren wie mit den Active Directory-Accounts. Voraussetzung ist aber möglicherweise die Existenz des [:Homeverzeichnis:Homeverzeichnisses] des neuen Nutzers. {{{#!vorlage Warnung Nach mehreren Wochen problemlosen Betriebs mit der Authentifizierung kann es vorkommen, dass keine Authentifikation mehr möglich ist. Weiterarbeit ist nur nach einem Reboot möglich. Im Log-File '''/vat/log/auth.log''' wurde beim Authentifizieren ein Problem gemeldet: {{{ ... nscd: nss_ldap: reconnected to LDAP server ... ... sshd[...]: fatal: Privilege separation user sshd does not exist ... sshd[...]: fatal: Privilege separation user sshd does not exist ... sshd[...]: fatal: Privilege separation user sshd does not exist \}}} Fehlerursache kann hier ein Fehler im nscd sein. Nach der Deinstallation des nscd ist der Fehler nicht mehr aufgetreten. }}} {{{#!vorlage Hinweis Bei Ubuntu Precise (Unity) kam es vor, dass trotz vorhandenem Home-Verzeichnis eine grafische Anmeldung nicht möglich war. Nachdem sich an einer virtuellen Konsole einmal angemeldet wurde war die grafische Anmeldung allerdings auf wundersame Art und weise möglich. Womöglich muss auf diese Art und Weise der LDM überredet werden, den neuen Nutzer als Nutzer zu akzeptieren. }}} {{{#!vorlage Warnung Wenn die Anmeldung nicht funktioniert, muss man die Änderungen in der '''/etc/nsswitch.conf''' wieder unbedingt rückgängig machen, bevor man sich abmeldet! }}} {{{#!vorlage Warnung Bei größeren Zeitverzögerungen mit dem Authentifizieren muss die '''/etc/ldap.conf''' möglicherweise manuell angepasst werden. Sie sollte folgendermaßen beginnen: {{{ host base ldap_version 3 binddn bindpw port 389 scope sub \}}} }}} {{{#!vorlage Warnung Mit Gutsy wurde ein Skript '''/usr/sbin/nssldap-update-ignoreusers''' als Bestandteil des Paketes '''libnss-ldap''' neu eingeführt. Dies führt dazu, dass das Konfigurationsfile '''/etc/ldap.conf''' um eine Zeile `nss_initgroups_ignoreusers ...` erweitert wird. Dieser Vorgang wiederum kann zu erheblichen Verzögerungen beim Anmelden führen. In diesem Fall wird empfohlen, das Skript '''/usr/sbin/nssldap-update-ignoreusers''' durch eine Anweisung `exit 0` am Anfang auszuhebeln (und die Zeile aus '''/etc/ldap.conf''' zu entfernen). }}} {{{#!vorlage Warnung Bei manchen Systemen kann es dazu kommen, dass der Boot beim Mounten hängen bleibt. Dann kann folgendes Abhilfe schaffen: mit dem Kommando '''sysv-rc-conf''' (möglicherweise vorher '''apt-get install sysv-rc-conf''') kann '''networking''' im '''Service Level 1, 2, 3, 4, 5 aktiviert''' werden (und im '''Service Level 0 und 6 deaktiviert''' werden). }}} = Links = * [:Dienste:] - Dienste # tag: Netzwerk, System