Linux Client an Lion Server mit OpenDirectory

Hallo allerseits,

kann ein Linux-Rechner auf das OpenDirectory eines Lion Server (10.7.3) zugreifen, um Benutzer anzumelden?
Wie kann das auf dem Linux-Rechner (Debian oder Ubuntu) möglichst einfach eingestellt werden?

Vielen Dank für Eure Antworten.

Gruß
Sven

Scheint zu funktionieren: copiouscom.com/2009/12/using … rd-server/

Hallo Jörg,

herzlichen Dank für die Antwort.
Wie und wo und womit hast Du diese Seite gefunden!? :w00t:
Ich googele mir seit Tagen den Wolf mit allen möglichen Suchworten, aber diese Seite habe ich noch nicht in den Treffern gehabt. :confused: Mal sehen, ob sich Lion in dieser Beziehung OpenDirectory von Leopard unterscheidet und ob das auch mit neueren Ubuntu Versionen als 9.10 noch funktioniert.
Schade, gestern kam ich an dem Aprilscherz irgendwie nicht vorbei bis zu dieser Antwort, da hätte ich mir den gestrigen Tag nämlich anstatt mit Suchen mal mit Ausprobieren vertreiben können.

Gruß
Sven

lmgtfy.com/?q=open+directory+client+linux — so etwa der 4. Treffer von oben (sorry wegen der nicht-Erreichbarkeit der Foren - nächstes Jahr fällt der 1.4 nicht auf einen Sonntag. ;D

Kurzer Zwischenstand: In Verbindung mit weiteren Quellen mit zum Teil abweichenden Inhalt habe ich es in der Zwischenzeit hinbekommen, mit “getent” Benutzerdaten auf dem Linux-Rechner aus dem OpenDirectory auszulesen. Auch ein Kerberos-Ticket bekomme ich mit “kinit benutzername” ausgestellt. Aber trotz Anpassungen der “pam”-Dateien kann ich weder mit “su”, noch mit “ssh”, noch direkt an der Konsole eine Anmeldung ausführen. Auch “id benutzername” meint nur lakonisch, daß die Benutzer-ID unbekannt sei. Womöglich ist es nur noch eine Kleinigkeit bis zum Erfolg. Ich tüftele weiter…
Bei Erfolg schreibe ich die Schritte zusammen, vielleicht ist es ja von Interesse.
Gruß
Sven

Was hast Du denn als pam-Konfiguration geändert?

Hallo Jörg,

mittlerweile habe ich alle meine Fundstellen in den “/etc/pam.d/common-*”-Dateien einzeln ausprobiert und mangels Erfolg wieder verworfen. Auch in der “/etc/ldap.conf” habe ich die Eintragungen wieder rückgängig gemacht. Ganz entnervt habe ich dann nochmals ein sudo dpkg-reconfigure ldap-auth-config ausgeführt und anschließend meinen Augen nicht getraut. Danach konnte ich nämlich mittels su - benutzername einen LDAP- respektive OpenDirectory-Benutzer anmelden bzw. zu ihm “wechseln”. Ich bin der felsenfesten Überzeugung, daß ich das gestern auch schon des öfteren genau so gemacht hatte und eine Anmeldung funktionierte nicht! Nun gut, somit überlasse ich debconf gerne auch zukünftig die Konfiguration meiner “/etc/ldap.conf” und erspare mir manuelles Gewurschtel. :w00t:
Weil Linux zu Recht gemeckert hat, daß der Benutzer kein Benutzerverzeichnis habe, bin ich dann doch noch mal mit dem Editor der Datei “/etc/pam.d/common-session” zu Leibe gerückt und habe nach der Zeile session required pam_unix.so eine Zeile session required pam_mkhomedir.so skel=/etc/skel/ umask 0077 eingetragen. Fortan bekommt ein Benutzer auch sein Benutzerverzeichnis angelegt, so es noch nicht existiert. Um weiterem Ungemach aus dem Weg zu gehen, habe ich vorher aber im Linux Dateisystem einen Link sudo ln -s /home /Users gesetzt. Damit stimmt die Angabe der Benutzerverzeichnisse mit den Eintragungen von OpenDirectory überein.
Eine weitere wichtige Ergänzung in der Datei “/etc/ldap.conf” ist die kleinste Benutzernummer für PAM.

pam_min_uid 1001

Damit wird dem lokalen Linux-Benutzer mit der Benutzernummer 1.000 nicht der OpenDirectory-Benutzer mit der Benutzernummer 1.000 “diradmin” überlagert. Das gibt sonst feine Effekte beim Anwenden von “sudo” auf dem Linux-Rechner. :open_mouth:

Im Moment möchte ich den Rechner eigentlich nicht komplett neu aufzusetzen, um damit verifizieren zu können, daß es mit “sudo dpkg-reconfigure ldap-auth-config” und “sudo dpkg-reconfigure ldap-auth-client” reproduzierbare Ergebnisse gibt. Andererseits braucht man ja verläßliche Dokumentationen für die Zukunft. Wenn ich noch eine ungenutzte Festplatte finde, lege ich noch mal los.

Seltsamerweise kann ich in den “/etc/pam.d/common-*”-Dateien keine Einträge erkennen, die ich nicht auch manuell bereits ausprobiert hatte. Womöglich wurde aber irgendwo eine andere Reihenfolge gesetzt. Ich bin mir auch nicht sicher, ob der Eintrag pam_password md5 in der Datei “/etc/ldap.conf” von Anfang an gesetzt war. :blush:
Andererseits wurde mit “su” ja kein falsches oder fehlendes Kennwort angemosert, sondern nur lakonisch ausgegeben, daß die Benutzer-ID nicht vorhanden sei. Dies wiederum deutet auf einen nicht funktionierenden Zugriff auf die LDAP-Datenbank hin. Aber mit “getent” wurden sowohl Benutzer (“getent passwd”, “getent shadow”), als auch Gruppen (“getent group”) aus dem OpenDirectory ausgelesen… Sehr seltsam.

Soweit, so gut.
Augenscheinlich wird im Moment mit der (halbwegs funktionierenden) Konfiguration aber kein Kerberos genutzt, obwohl die krb5-Einträge in den PAM-Dateien vorhanden sind. Wenn ich mit einem OpenDirectory Benutzer angemeldet bin, listet “klist” keine Tickets auf.
Die Konfigurationen von debconf an Kerberos im Rahmen der Paketinstallation müßte noch greifen. Nicht daß ich das jetzt zwingend bräuchte. Aber wenn Lion Server schon Kerberos einrichtet und anbietet, wäre es interessant, das auch von den anderen Rechnern im LAN zu nutzen. Aber von Kerberos und seiner Anwendung habe ich keine Ahnung und weiß nicht wirklich, was ich da in den Konfigurationsdateien tue. :confused: Vielleicht ist es auch ganz gut, daß es einfach mit LDAP/OpenDirectory funktioniert, ohne eine weitere Baustelle mit einzubauen.

Zunächst einmal funktioniert die Anmeldung der Netzwerkbenutzer mit LDAP/OpenDirectory. Das ist ja wenigstens ein erster Schritt.

Gruß
Sven

Wow, tolle Anleitung - erstmal danke für’s Posten. Vielleicht bekommen wir daraus ja eine Anleitung für eine funktionierende Version gebastelt. :wink:

Hast Du irgendwo in der pam.d/common-account die Zeilen

account sufficient pam_unix.so account sufficient pam_krb5.so account required pam_deny.so
ausprobiert? Hier stehen noch einige andere common-*s, in denen man herumeditieren kann.

Nicht wirklich. 8) Habe mich gestern Abend nämlich nach der Anmeldung als für „sudo“ ausgesperrt vorgefunden. Ums Verecken hat er das Kennwort des lokalen Benutzers für „sudo“ nicht akzeptiert und mich auch als „diradmin“ im Prompt ausgewiesen. Da durfte ich erst mal mit einem Knoppix USB-Stift an dem Linux-Rechner herumtüfteln, um in der Konfigurationsdatei „/etc/nsswitch.conf“ den Zugriff auf LDAP zu unterbinden. Danach konnte ich mich wenigstens wieder lokal anmelden und „sudo“ ausführen. :smiling_imp:

Ich denke schon. :wink:
Bin aber gerade „auf dem Sprung“, die Osterfeiertage und Familienbesuche warten… :w00t:
Daher nur „kurz“ soviel dazu:
Nachdem ich überall in den "common-" herumeditier*t habe und es immer noch nicht ging, habe ich dann mit Hilfe von Tante Gugelhupf einen Hinweis auf einen Unterschied der Pakete „libnss-ldap“ und „libnss-ladapd“ sowie „libpam-ldap“ und „libpam-ldapd“ gefunden. Die Pakete mit dem „d“ am Ende sind nicht, wie ich zuerst dachte, die „Daemon“-Pakete, sondern die mit den neueren Bibliotheken und daher für den Client zu empfehlen. Also einen „Neuanfang“ wagen.

Ich habe dann alle Konfigurationsdateien „/etc/ldap.conf“, „/etc/ldap/ldap.conf“ sowie „/etc/pam.d/common-*“ mit „mv“ aus dem Weg geschafft (die Datei „/etc/nsswitch.conf“ hat ja nach der Reparatur via Knoppix keinen Verweis mehr auf LDAP in den Direktiven „passwd“, „group“ und „shadow“) und einfach die folgenden Pakete mit „–reinstall“ neu installiert. Dabei werden dann die Konfigurationsskripte mit Bordmitteln ausgeführt.

sudo apt-get install --reinstall libnss-ldapd libpam-ldapd auth-client-config ldap-auth-client ldap-auth-config nslcd nscd

Anschließend werden durch das Installationsskript in Dialogen mit dem Benutzer die erforderlichen Zugangs- und Konfigurationsdaten abgefragt und es funktioniert die Anmeldung gegen OpenDirectory quasi „aus der Schachtel heraus“, allerdings noch immer nicht in Kombination mit Kerberos. Aber das soll mal außen vor bleiben.
Die einzige Ergänzung ist noch die Anpassung der „/etc/pam.d/common-session“ für das automatische Anlegen der Benutzerverzeichnisse.

session required pam_mkhomedir.so skel=/etc/skel/ umask 0077

Kein Zauber mit „pam_min_uid 1001“ o.ä. und das seltsame ist dabei noch, daß nach der erneuten Installation weder eine Datei „/etc/ldap.conf“ noch eine „/etc/ldap/ldap.conf“ existieren! Aber die Anmeldung gegen OpenDirectory klappt. Vielleicht freue ich mich auch nur wieder zu früh…

Zunächst: Schöne Ostern Euch allen!

Gruß
Sven

wow… dann Dir auch schöne Ostern — das größte Ei hast Du ja schon gefunden! ;))

Hallo,

passend zum heutigen Erscheinen von Ubuntu 12.04 LTS “Precise Pangolin” habe ich meine Aufzeichnungen herausgekramt und aktualisiert. In meinem LAN habe ich auf meinem :mini: der Einfachheit halber für OpenDirectory (noch) kein SSL eingeschaltet.

Ausgehend von einem frisch installierten Linux-System Ubuntu 12.04 LTS ist zunächst einmal in Vorbereitung auf ein Zusammenwirken der Nummernkreise für Benutzer- und Gruppennummern der gerade von dem Ubuntu Installationsprogramm angelegte erste Benutzer umzubauen. Um ein Sicherheitsnetz als Rückhalt zu haben, sollte in einem Terminalfenster eine Benutzerumgebung mit privilegierten Rechten eingeschaltet werden.

sudo su -

Dieses Terminalfenster wird nicht für den weiteren Installationsvorgang verwendet, sondern dient nur als Notfall-Terminal, falls mit dem Zusammenwirken aus PAM, NSS, LDAP und Kerberos etwas durch einen Tippfehler “in die Hose” gehen sollte.
In einem weiteren Terminalfenster wird der Benutzer nun umgebaut. Mit einem Editor und privilegierten Rechten sind in den Dateien “/etc/passwd” und “/etc/group” die Benutzer- und Gruppennummern des ersten Benutzers von “1000” auf “501” zu ändern. Sicherheitshalber werden auch in diesem Terminalfenster die privilegierten Rechte vorübergehend eingeschaltet.

sudo su -

Mit

nano /etc/passwd

die Zeile

benutzername:x:1000:1000:Der Erste,,,:/home/benutzername:/bin/bash

in

benutzername:x:501:501:Der Erste,,,:/home/benutzername:/bin/bash

ändern.

Entsprechend in der Datei “/etc/group”

roth:x:1000:

in

roth:x:501:

Das Benutzerverzeichnis ist noch auf die neuen Benutzer- und Gruppennummern umzustellen.

chown -R 501:501 /home/benutzerverzeichnis

Nach dieser Umstellung können aus Sicherheitsgründen die dauerhaft eingeschalteten privilegierten Rechte wieder zurückgegeben werden.

exit

Die Benutzerverzeichnisse werden von Linux-Systemen in “/home/” angelegt, während Mac OS X an dieser Stelle “/Users/” verwendet. Für ein problemloses Zusammenarbeiten mit Netzwerkbenutzern aus OpenDirectory wird der Einfachheit halber auf dem Linux-Rechner ein Link von “/home/” auf “/Users/” gelegt. Auf die korrekte Groß-/Kleinschreibung ist zu achten!

sudo ln -s /home /Users

Die für den Zugriff auf die Benutzer- und Gruppeninformationen aus OpenDirectory erforderlichen Pakete können mit der Paketverwaltung in einem Schritt installiert und grundlegend eingerichtet werden.

sudo apt-get install libnss-ldapd libpam-ldapd auth-client-config ldap-auth-client ldap-auth-config nslcd nscd heimdal-clients libpam-heimdal heimdal-kcm kstartDie folgenden zusätzlichen Pakete werden installiert: krb5-config ldap-utils libhdb9-heimdal libkadm5clnt7-heimdal libkadm5srv8-heimdal libkafs0-heimdal libotp0-heimdal libsl0-heimdal Vorgeschlagene Pakete: heimdal-docs Die folgenden NEUEN Pakete werden installiert: auth-client-config heimdal-clients heimdal-kcm krb5-config kstart ldap-auth-client ldap-auth-config ldap-utils libhdb9-heimdal libkadm5clnt7-heimdal libkadm5srv8-heimdal libkafs0-heimdal libnss-ldapd libotp0-heimdal libpam-heimdal libpam-ldapd libsl0-heimdal nscd nslcd 0 aktualisiert, 19 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 1.250 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 4.030 kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren [J/n]? J
Im Rahmen der Installation werden bereits die für den Zugriff auf OpenDirectory erforderlichen Einstellungen für LDAP und Kerberos abgefragt. Es ist darauf zu achten, daß in den URI für LDAP nicht das Protokoll “ldap***i***”, sondern “ldap” eingetragen wird.

Konfiguriere nslcd URI des LDAP-Servers: ldap://ldaprechnername.domain.tld/

Suchbasis des LDAP-Servers: dc=ldaprechnername,dc=domain,dc=tld

Konfiguriere libnss-ldapd Namensauflösungsdienste, die eingerichtet werden sollen: ] aliases ] ethers *] group ] hosts ] netgroup ] networks *] passwd ] protocols ] rpc ] services *] shadow

[code]Konfiguriere ldap-auth-config
LDAP server Uniform Resource Identifier:
ldap://ldaprechnername.domain.tld/

Distinguished name of the search base:
dc=ldaprechnername,dc=domain,dc=tld

LDAP version to use:
3

Make local root Database admin:
Nein

Does the LDAP database require login?
Nein[/code]

[code]Konfiguration der Kerberos-Authentisierung
Voreingestellter Realm für Kerberos Version 5:
LDAPRECHNERNAME.DOMAIN.TLD

Kerberos-Server für Ihren Realm:
ldaprechner.domain.tld

Administrations-Server für Ihren Kerberos-Realm:
ldaprechner.domain.tld[/code]

Damit sind die Grundlagen bereits gelegt und ein Zugriff auf OpenDirectory funktioniert schon “aus der Schachtel heraus”. Das kann mit “getent” geprüft werden.

getent passwd

Nach den lokalen Systembenutzern und dem lokal angelegten (einsortierten) Benutzer werden die Netzwerkbenutzer aus OpenDirectory aufgelistet.
Auch ein Anmelden funktioniert bereits für einen Netzwerkbenutzer.

su - netzwerkbenutzername

Password: Kein Verzeichnis, Anmeldung mit HOME=/
Auch ein Kerberos-Ticket wurde ausgestellt:

klist

[code]Credentials cache: FILE:/tmp/krb5cc_1025_P3VbcN
Principal: netzwerkbenutzername@LDAPRECHNERNAME.DOMAIN.TLD

Issued Expires Principal
Apr 27 18:36:55 2012 Apr 28 04:36:57 2012 krbtgt/LDAPRECHNERNAME.DOMAIN.TLD
@LDAPRECHNERNAME.DOMAIN.TLD[/code]

Es fehlt aber noch die automatische Erstellung der Benutzerverzeichnisse durch PAM. Um nicht manuell in den Konfigurationsdateien herumzudoktern, werden die Mechanismen von PAM und den Konfigurationswerkzeugen genutzt. Daher wird eine entsprechende Konfigurationsdatei für das Modul “pam_mkhomedir” angelegt.

sudo editor /usr/share/pam-configs/pam_mkhomedir

Name: Aktivieren von mkhomedir Default: yes Priority: 900 Session-Type: Additional Session: required pam_mkhomedir.so umask=0077 skel=/etc/skel
Des Weiteren kann auch gleich das PAM-Modul “pam_groups” eingebaut werden.

sudo editor /usr/share/pam-configs/pam_groups

Name: Aktivieren von /etc/security/group.conf Default: yes Priority: 900 Auth-Type: Primary Auth: required pam_group.so use_first_pass
Diese Konfigurationsdateien werden mit “pam-auth-update” in die PAM-Konfiguration eingebaut.

sudo pam-auth-update

PAM-Konfiguration Zu aktivierende PAM-Profile: *] Cracklib password strength checking *] Aktivieren von mkhomedir *] Aktivieren von /etc/security/group.conf *] Kerberos authentication *] Unix authentication *] LDAP Authentication *] GNOME Keyring Daemon - Login keyring management *] ConsoleKit Session Management *] Inheritable Capabilities Management

Das war alles.
War doch gar nicht so schwer. :wink:

Gruß
Sven

1 „Gefällt mir“

:yeah:

@apfelei: Für diese wirklich herausragende Anleitung bedanke ich mich. Endlich hab ich es gepackt ^^ Naja…einige Änderungen habe ich auch vorgenommen, die zu meiner Konfi passten. Bin ja auch kein Anfänger mehr :wink:

Schönen Gruß!

Hallo,

prima, daß es Dir geholfen hat. :wink:

Hat das schon jemand hinbekommen, daß die Anmeldedaten auf dem Ubuntu-Client zwischengespeichert werden können?
Wenn der Ubuntu-Client ein mobiler Rechner (Notebook) ist, besteht nicht immer eine Verbindung zum Mac OS X Lion Server, um für eine Anmeldung am Ubuntu-System die Anmeldedaten abzufragen (“online”).

Gruß
Sven