winbindd — Name-Service-Switch-Daemon für die Auflösung von Namen von NT-Servern.
winbindd [-F] [-S] [-i] [-Y] [-d <Debugebene>] [-s <smb-Konfigdatei>] [-n]
Dieses Werkzeug ist Teil der Samba(7)-Suite.
winbindd ist ein Daemon, der einen Dienst für die „Name-Service-Switch“-Eigenschaft bietet, die in den meisten modernen C-Bibliotheken vorhanden ist. Mit Hilfe des Name Service Switch kann man Benutzer- und Systeminformationen aus verschiedenen Datenbankdiensten wie NIS oder DNS erhalten. Das genaue Verhalten kann in der Datei /etc/nsswitch.conf konfiguriert werden. Benutzer und Gruppen werden während der Auflösung in einen vom Samba-Administrator angegebenen Bereich von Benutzer- und Gruppen-IDs allokiert.
Der von winbindd angebotene Dienst wird 'winbind' genannt und mit ihm können Benutzer- und Gruppeninformationen von einem Windows NT-Server aufgelöst werden. Über ein entsprechendes PAM-Modul kann dieser Dienst auch Authentifikationsdienste anbieten.
Das Modul pam_winbind im Release 2.2.2 unterstützt nur die Modultypen auth und account. Letzteres führt einfach ein getpwnam() durch, um zu überprüfen, ob das System eine uid für den Benutzer bekommt. Falls die Bibliothek libnss_winbind korrekt installiert wurde, sollte das immer funktionieren.
Folgende nsswitch-Datenbanken werden vom winbindd-Dienst implementiert:
Diese Eigenschaft ist nur unter IRIX vorhanden. Traditionell werden Benutzerinformationen in der Datei hosts(5) gespeichert und von den gethostbyname(3)-Funktionen benutzt. Namen werden über den WINS-Server oder per Broadcast aufgelöst.
Benutzerinformationen, die traditionell in der Datei passwd(5) gespeichert sind und von den getpwent(3)-Funktionen benutzt werden.
Gruppeninformationen, die traditionell in der Datei group(5) gespeichert sind, und von den getgrent(3)-Funktionen benutzt werden.
Folgende einfache Konfiguration in der Datei /etc/nsswitch.conf kann z.B. dazu benutzt werden, Benutzer- und Gruppeninformationen zu Beginn von /etc/passwd und /etc/group und anschließend vom Windows NT-Server aufzulösen.
passwd: files winbind group: files winbind ## nur unter IRIX vorhanden; Linux-Benutzer sollten libnss_wins.so verwenden hosts: files dns winbind
Mit der folgenden einfachen Konfiguration in der Datei /etc/nsswitch.conf können zu Beginn die Hostnamen von /etc/hosts und anschließend vom WINS-Server aufgelöst werden.
hosts: files wins
Wenn angegeben bewirkt dieser Parameter, dass der winbindd-Hauptprozess nicht daemonisiert wird, d.h. eine Doppelteilung vornimmt und sich vom Terminal trennt. Kindprozesse werden weiterhin normal erzeugt, um jede Verbindungsanfrage zu bedienen, aber der Hauptprozess wird nicht beendet. Diese Arbeitsweise eignet sich bei der Ausführung von winbindd unter Prozessüberwachern wie supervise und svscan aus dem Paket daemontools von Daniel J. Bernstein oder unter dem AIX-Prozessmonitor.
Wenn angegeben bewirkt dieser Parameter, dass winbindd seine Logmeldungen auf die Standardausgabe statt in einer Datei ausgibt.
Gibt die Versionsnummer des Programms aus.
Die angegebene Datei enthält die Konfigurationdetails, die der Server benötigt. Die Information in dieser Datei ist zum Teil Server-spezifisch, z.B. welche printcap-Datei benutzt werden soll, enthält aber auch Beschreibungen aller Dienste, die der Server anbieten soll. Siehe smb.conf für weitere Informationen. Der Standardname der Konfigurationsdatei wird beim Kompilieren bestimmt.
Debug-Ebene ist ein Integer von 0 bis 10. Falls dieser Parameter nicht angegeben wird, ist der Vorgabewert dafür Null.
Je höher der Wert ist, desto mehr Details über die Serveraktivität werden in den Log-Dateien abgespeichert. Auf der Ebene 0 werden nur kritische Fehler und ernstzunehmende Warnungen geloggt. Ebene 1 ist eine vernünftige Ebene beim alltäglichen Betrieb - dabei wird eine kleine Informationsmenge über die ausgeführten Operationen erzeugt.
Die Ebenen höher als 1 erzeugen beachtliche Mengen von Logdaten, und sollten nur bei der Suche nach Problemen verwendet werden. Die Ebenen größer als 3 sind nur für Entwickler gedacht und erzeugen RIESIGE Mengen an Logdaten, von denen die meisten extrem kryptisch sind.
Beachten Sie, dass durch die Angabe dieses Parameters an dieser Stelle der Parameter log level in der Datei smb.conf überschrieben wird.
Dateiname für Log-/Debug-Dateien. Die Dateierweiterung ".client" wird angefügt. Die Log-Datei wird vom Client niemals entfernt.
Gibt eine Zusammenfassung der Kommandozeilenoptionen aus.
Sagt winbindd, dass er nicht zum Daemon werden darfund sich vom aktuellen Terminal abkoppeln soll. Diese Option wird von Entwicklern benutzt, wenn eine interaktive Fehlersuche mit winbindd notwendig ist. winbindd gibt seine Logdaten auch auf die Standardausgabe aus, als ob der Parameter -S angegeben wäre.
Deaktiviert das Caching, d.h. winbindd muss immer auf eine Antwort vom Domänencontroller warten, bevor es einem Client antworten kann, deswegen verlangsamt sich einiges. Die Ergebnisse werden allerdings genauer sein, da die Ergebnisse aus dem Cache eventuell nicht aktuell sind. Wenn der DC nicht antwortet, kann winbindd dadurch auch vorübergehend hängenbleiben.
Einzel-Daemonmodus, d.h. winbindd läuft als einzelner Prozess (die normale Arbeitsweise in Samba 2.2). Das Standardverhalten von winbindd ist, einen Kindprozess zu starten, der für die Aktualisierung abgelaufener Cacheeinträge verantwortlich ist.
Benutzern und Gruppen auf einem Windows NT-Server wird eine relative ID (rid) zugewiesen, die eindeutig ist in der Domäne, in der der Benutzer oder die Gruppe erzeugt wird. Um den Windows NT-Benutzer bzw. die -Gruppe in einen UNIX-Benutzer bzw. -Gruppe zu konvertieren, wird eine Abbildung von rids auf UNIX-Benutzer- bzw. Gruppen-IDs benötigt. Dies ist eine der Aufgaben, für die winbindd da ist.
Da winbindd-Benutzer und -Gruppen von einem Server aufgelöst werden, werden Benutzer- und Gruppen-IDs aus einem angegebenen Bereich allokiert. Dies geschieht nach dem Prinzip "Wer zuerst kommt, mahlt zuerst.", obwohl alle vorhandenen Benutzer und Gruppen gleich dann abgebildet werden, wenn ein Client einen Befehl ausführt, der die Benutzer oder Gruppen aufzählt. Die allokierten UNIX-IDs werden in einer Datenbankdatei unter dem Sperrenverzeichnis in Samba gespeichert und in Erinnerung behalten.
WARNUNG: Die Datenbank, die rids auf UNIX-IDs abbildet, ist der einzige Ort, wo die Benutzer- und Gruppenabbildungen von winbindd gespeichert werden. Wenn diese Datei gelöscht oder beschädigt wird, hat winbindd keine Möglichkeit mehr festzustellen, welche Benutzer- und Gruppen-IDs zu den Windows NT-Benutzer- und Gruppen-rids gehören.
Der winbindd-Daemon wird mit Hilfe der Konfigurationsparameter in der Datei smb.conf(5) konfiguriert. Alle Parameter sollten im Abschnitt [global] von smb.conf angegeben werden.
Um winbindd für die Suche nach Benutzern und Gruppen sowie für die Authentifikation von einem Domänencontroller einzurichten, können Sie eine Einstellung ähnlich der folgenden verwenden. Diese wurde auf einem RedHat 6.2 Linux-System getestet.
Setzen Sie Folgendes in /etc/nsswitch.conf:
passwd: files winbind group: files winbind
Ersetzen Sie in /etc/pam.d/* die auth-Zeilen mit etwas wie folgt:
auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_winbind.so auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
Beachten Sie vor allem die Verwendung der Schlüsselwörter sufficient und use_first_pass.
Ersetzen Sie nun die account-Zeilen hiermit:
account required /lib/security/pam_winbind.so
Der nächste Schritt besteht in einem Join der Domäne. Dazu verwenden Sie das Programm net wie folgt:
net join -S PDC -U Administrator
Der Benutzername nach dem -U kann ein beliebiger Domänenbenutzer sein, der Administratorrechte auf dem Rechner hat. Ersetzen Sie "PDC" mit dem Namen oder der IP Ihres PDC.
Als nächstes kopieren Sie libnss_winbind.so nach /lib und pam_winbind.so nach /lib/security. Dann muss ein symbolischer Link von /lib/libnss_winbind.so auf /lib/libnss_winbind.so.2 gemacht werden. Falls Sie eine ältere Version von glibc verwenden, dann sollte das Ziel des Links /lib/libnss_winbind.so.1 sein.
Richten Sie schließlich smb.conf(5) so ein, dass es Direktiven ähnlich zu folgenden enthält:
[global]
winbind separator = +
winbind cache time = 10
template shell = /bin/bash
template homedir = /home/%D/%U
idmap uid = 10000-20000
idmap gid = 10000-20000
workgroup = DOMAIN
security = domain
password server = *
Wenn Sie nun winbindd starten, sollten Sie feststellen, dass Ihre Benutzer- und Gruppendatenbank um Ihre NT-Benutzer und -Gruppen erweitert ist und dass Sie sich auf Ihrem UNIX-Rechner als Domänenbenutzer anmelden können, indem Sie als Benutzernamen die Syntax DOMAIN+Benutzer verwenden. Möglicherweise möchten Sie die Befehle getent passwd und getent group ausprobieren, um sich von der korrekten Arbeitsweise von winbindd zu überzeugen.
Die folgenden Bemerkungen sind hilfreich bei der Konfiguration und beim Betrieb von winbindd:
nmbd(8) muss auf dem lokalen Rechner laufen, damit winbindd funktioniert. winbindd fragt beim Hochfahren und bei Erhalt eines SIGHUP die Liste der vertrauten Domänen für den Windows NT-Server ab. Damit ein laufender winbindd also von neuen Vertrauensverhältnissen zwischen den Servern erfahren kann, muss man ihm ein SIGHUP-Signal schicken.
PAM kann sehr leicht fehlkonfiguriert werden. Sie sollten wissen, was Sie tun, wenn Sie die PAM-Konfigurationsdateien ändern. Man kann PAM so einstellen, dass man sich an seinem System nicht mehr anmelden kann.
Falls winbindd auf mehr als einem UNIX-Rechner läuft, dann werden die von winbindd allokierten Benutzer- und Gruppen-IDs im Allgemeinen nicht identisch sein. Dann sind die Benutzer- und Gruppen-IDs nur auf dem lokalen Rechner gültig.
Falls die Datei mit der Abbildung von Windows NT-RID auf UNIX-Benutzer- und Gruppen-IDs beschädigt oder zerstört wird, sind diese Abbildungen verloren.
Der winbindd-Daemon kann mit den folgenden Signalen manipuliert werden.
Lädt die Datei smb.conf(5) erneut und wendet alle Parameteränderungen bei der laufenden Version von winbindd an. Dieses Signal löscht außerdem gecachte Benutzer- und Gruppeninformationen. Die Liste der anderen Domänen, denen winbindd traut, wird ebenfalls neu geladen.
Das Signal SIGUSR2 bewirkt, dass winbindd Statusinformationen in die winbind-Logdatei schreibt, inklusive Informationen über die Anzahl der Benutzer- und Gruppen-IDs, die von winbindd allokiert sind.
Logdateien werden unter dem Dateinamen gespeichert, der im Parameter log file angegeben ist.
Name-Service-Switch-Konfigurationsdatei.
Die UNIX-Pipe, über die Clients mit dem Programm winbindd kommunizieren. Aus Sicherheitsgründen versucht der winbind-Client, sich nur dann mit dem winbindd-Daemon zu verbinden, wenn sowohl das Verzeichnis /tmp/.winbindd als auch die Datei /tmp/.winbindd/pipe root als Besitzer haben.
Die UNIX-Pipe, über die 'privilegierte' Clients mit dem Programm winbindd kommunizieren. Aus Sicherheitsgründen ist der Zugriff auf manche winbindd-Funktionen beschränkt, z.B. auf jene, die das Werkzeug ntlm_auth braucht. Standardmäßig erhalten nur die Benutzer der Gruppe 'root' diesen Zugriff, der Administrator kann jedoch die Gruppenrechte an $LOCKDIR/winbindd_privilaged ändern, um es Programmen wie 'squid' zu ermöglichen, ntlm_auth zu benutzen. Beachten Sie, dass der winbind-Client versucht, nur dann eine Verbindung mit dem winbindd-Daemon herzustellen, wenn sowohl das Verzeichnis $LOCKDIR/winbindd_privilaged als auch die Datei $LOCKDIR/winbindd_privilaged/pipe root als Besitzer haben.
Implementierung der Name-Service-Switch-Bibliothek.
Speicher für die Abbildung der Windows NT-rids auf UNIX-Benutzer-/Gruppen-IDs. Das Sperrenverzeichnis wird mit der Option --with-lockdir angegeben, wenn Samba kompiliert wird. Die Voreinstellung für dieses Verzeichnis lautet /usr/local/samba/var/locks.
Speicher für gecachte Benutzer- und Gruppeninformationen.
Diese Manpage ist korrekt für die Version 3.0 der Samba-Suite.
nsswitch.conf(5), samba(7), wbinfo(8), smb.conf(5)
Die originale Samba-Software und die zugehörigen Werkzeuge wurden von Andrew Tridgell geschrieben. Samba wird nun vom Samba-Team als ein Open-Source-Projekt entwickelt, ähnlich wie der Linux-Kernel.
wbinfo und winbindd wurden von Tim Potter geschrieben.
Die Umwandlung ins DocBook-Format wurde von Gerald Carter für Samba 2.2 durchgeführt. Die Umwandlung in DocBook für XML 4.2 wurde von Alexander Bokovoy für Samba 3.0 durchgeführt.