[[Vorlage(archiviert, )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Samba_Server/samba-logo.png, align=left)]] Dieser Artikel beschreibt, wie man Ubuntu an einer Windows-Domäne anmeldet, um die Benutzer am "Active Directory" zu authentifizieren. Weitere Informationen zu Samba findet man im Artikel [:Samba:]. Zusätzlich zur Domänen-Authentifizierung können bei der Anmeldung auch benutzerspezifische Netzwerkfreigaben verbunden werden. Diese Freigaben werden dann mit dem Domänen-Benutzer und dessen Rechten angesprochen. Bisher wurde dies mit Windows 2003 Domänen Controllern getestet (Enterprise und Small Business). Außerdem ist es möglich, Ubuntu auch ohne ADS zu authentifizieren. Der Hauptunterschied ist, dass hierzu kein Kerberos notwendig ist. ADS ist der [wikipedia:Active_Directory_Service:Active Directory Service]. Die gesonderten Installationsschritte für diese Methode sind im Artikel besonders gekennzeichnet. = Vorteile/Funktionsweise Winbind = Winbind vereint die UNIX- und Windows NT-Konten-Verwaltung, indem es einer UNIX-Maschine erlaubt, ein vollwertiges Mitglied einer NT-Domäne zu werden. Als Endergebnis wird, immer wenn ein Programm auf der UNIX-Maschine das Betriebssystem nach einem Benutzer- oder Gruppen-Namen fragt, die Anfrage an den NT-Domänencontroller weitergegeben, der diese Namensabfrage durchführt. Weil Winbind sich auf einem sehr tiefgreifenden Level ins Betriebssystem einhängt, ist diese Umleitung zum NT-Domänencontroller völlig transparent. Die Benutzer auf der UNIX-Maschine können dann NT-Benutzer- und NT-Gruppen-Namen so verwenden, als ob sie „native“ UNIX-Namen wären. Sie können mit ''chown'' Eigentümer von Dateien werden, so dass die Dateien NT-Domänen-Benutzern gehören, oder sich sogar auf einer UNIX-Maschine anmelden und eine UNIX-X-Window-Session als Domänen-Benutzer ausführen. Das einzige sichtbare Anzeichen, dass Winbind verwendet wird, ist, dass Benutzer- und Gruppen-Namen die Form DOMÄNE\benutzer und DOMÄNE\gruppe annehmen. Das ist notwendig, da Winbind auf diese Weise erkennt, wann eine Umleitung zum Domänencontroller erforderlich ist und auf welche Domäne sich diese Anfrage bezieht. Zusätzlich bietet Winbind einen Authentifikationsdienst, der sich ins PAM-System (Pluggable Authentication Modules) einhängt, um allen PAM-fähigen Applikationen die Authentifizierung über eine NT-Domäne anzubieten. Diese Fähigkeit löst das Problem der Synchronisation von Passwörtern zwischen Systemen, da alle Passwörter nur an einem Platz gespeichert werden - auf dem Domänencontroller. = Vor der Installation = == Bezeichnungen == || ''meinserver'' || Name des Servers, der Domaincontroller ist || || ''IPADRESSE'' || IP-Adresse des Server, der Domaincontroller ist || || ''example.com'' || Domäne || || ''EXAMPLE'' || alternative Workgroup || || ''UBUNTU'' || Rechnername des Ubuntu Client PC's || == Testen der Verbindung == Zuerst sollte man testen, ob eine Verbindung zum Server hergestellt werden kann. Dazu öffnet man ein Terminal[2] und verwendet den Befehl `ping`. Dies sollte etwa so aussehen. {{{#!vorlage Befehl ping FQDN }}} FQDN steht hier für den Fully Qualified Domain Name des Domaincontrollers. (meinserver.example.com) Weitere Informationen zu FQDN unter [wikipedia:Domain#Fully_Qualified_Domain_Name_.28FQDN.29:FQDN]. == Zeit synchronisieren == Anschließend sollte man sicherstellen, dass, die Zeit auf dem Client und auf dem Server nicht mehr als 2 Minuten abweicht. Andernfalls werden Fehler wie zum Beispiel {{{ kinit(v5): Clock skew too great while getting initial credentials }}} beim Verbinden auftreten. Beachten sollte man auch das Ubuntu eventuell automatisch wieder eine andere Zeit aus dem Internet holt. = Installation = == Beschreibung == Soll Ubuntu ein Mitglied einer Windows Domäne werden, dann wird hierzu Kerberos benötigt. Soll Ubuntu ohne ADS an die Domäne angebunden werden, dann wird Kerberos nicht benötigt. Die entsprechenden Installationsschritte können also ausgelassen werden. == Installationsvorbereitungen == === Hosts ändern === Man öffnet die Datei '''/etc/hosts''' mit einem Editor[3]. Dann fügt man folgende Zeile ein: {{{ 127.0.0.1 ubuntu.example.com localhost ubuntu IPADRESSE meinserver.example.com meinserver }}} Dies ist wichtig, da sonst beim Anmelden Probleme auftreten können. Unter Umständen kann man sich auch gar nicht mehr an der grafischen Oberfläche anmelden. == Installation == === Pakete installieren === Nun müssen die benötigten Pakete installiert werden[1]: {{{#!vorlage Paketinstallation krb5-user, universe libpam-krb5, universe winbind samba smbclient libnss-winbind libpam-winbind }}} {{{#!vorlage Hinweis Die beiden Pakete '''krb5-user''' und '''libpam-krb5''' sind nur bei der Installationsvariante mit ADS erforderlich. }}} == Konfiguration == {{{#!vorlage Warnung Es wird dringend empfohlen, vor jeder Änderung an den folgenden Konfigurationsdateien eine Sicherung davon anzulegen. }}} === Kerberos einrichten === {{{#!vorlage Hinweis Dieser Schritt ist nur für die Variante mit ADS-Authentifizierung erforderlich. }}} Zuerst wird der Kerberos-Authentifizierungsdienst auf dem Kerberos-Server des Windows-Domänencontrollers eingestellt. Dazu die Datei '''/etc/krb5.conf''' mit einem Editor öffnen. Neue Kerberos-Konfiguration: {{{ [logging] default = FILE:/var/log/krb5.log [libdefaults] ticket_lifetime = 24000 clock_skew = 300 default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = meinserver:88 admin_server = meinserver:464 default_domain = EXAMPLE.COM } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM }}} ==== Testen ==== {{{#!vorlage Befehl kinit Administrator@EXAMPLE.COM Password for Administrator@EXAMPLE.COM: **** }}} Wobei `Administrator` auch jeder andere User sein kann, der Domänen-Admin ist. War nun alles erfolgreich, dann gibt `klist` ein Ticket aus. {{{#!vorlage Befehl klist }}} ==== Ausgabe ==== {{{ Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Administrator@EXAMPLE.COM Valid starting Expires Service principal 12/20/06 12:10:43 12/20/06 18:50:43 krbtgt/EXAMPLE.COM@EXAMPLE.COM Kerberos 4 ticket cache: /tmp/tkt1000 klist: You have no tickets cached }}} Damit ist die Installation von Kerberos abgeschlossen. === Der Domäne beitreten === Dazu muss zuerst eine neue Samba-Konfiguration ('''/etc/samba/smb.conf''') erstellt werden. Natürlich sollte man sich vorher wieder eine Sicherung der Originaldatei anlegen. Die neue Samba-Konfiguration ('''/etc/samba/smb.conf''') erstellt man mit einem Editor. Je nachdem, welche Domäne verwendet wird, nach einem der folgenden Beispiele. ==== Samba-Konfiguration für Active-Directory-Domänen ==== {{{ [global] security = ads realm = EXAMPLE.COM password server = IPADRESSE #IP des Domain Controllers workgroup = EXAMPLE idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes winbind cache time = 10 winbind use default domain = yes template homedir = /home/%U template shell = /bin/bash client use spnego = yes client ntlmv2 auth = yes encrypt passwords = yes restrict anonymous = 2 domain master = no local master = no preferred master = no os level = 0 }}} ==== Ohne ADS Authentifizierung ==== {{{ [global] workgroup = EXAMPLE idmap uid = 10000-20000 idmap gid = 10000-20000 template shell = /bin/bash template homedir = /home/%U winbind enum users = yes winbind enum groups = yes winbind cache time = 10 winbind separator = + winbind use default domain = yes security = domain password server = * encrypt passwords = yes domain master = no local master = no preferred master = no os level = 0 }}} Jetzt tritt man der Domäne bei, bevor man winbind neu startet, da es sonst nicht hoch fährt. ==== Active Directory Domäne beitreten ==== {{{#!vorlage Befehl net ads join -U Administrator }}} ==== Domäne ohne ADS beitreten ==== {{{#!vorlage Befehl net rpc join -U Administrator }}} Nach jeder Änderung an der Samba-Konfiguration (und auch nach jeder PAM-Änderung) muss Winbind neu gestartet werden. {{{#!vorlage Befehl /etc/init.d/winbind restart }}} Nun sollte man der Domäne erfolgreich beigetreten sein. Der Computer sollte auf dem Server unter "Computers" auftauchen. ==== Testen ==== {{{#!vorlage Befehl wbinfo -u }}} sollte eine Liste der Domainbenutzer ausgeben. {{{#!vorlage Befehl wbinfo -g }}} Sollte eine Liste der Domaingruppen ausgeben. {{{#!vorlage Hinweis Sollte man die Meldung `Error looking up domain groups` bekommen, startet man Winbind noch einmal neu. }}} === Konfiguration der Authentication === Man öffnet die Datei '''/etc/nsswitch.conf''' in einem Editor und macht die folgenden Anpassungen: {{{ passwd: compat winbind group: compat winbind shadow: compat }}} ==== Testen ==== {{{#!vorlage Befehl /etc/init.d/winbind restart }}} {{{#!vorlage Befehl getent passwd }}} sollte nun ebenfalls die Domänenbenutzer ausgeben. {{{#!vorlage Befehl getent group }}} sollte nun ebenfalls die Domänengruppen ausgeben. === PAM Konfiguration === Die Pluggable Authentication Modules (PAM) sind eine Softwarebibliothek, die eine allgemeine Programmierschnittstelle (API) für Authentifizierungsdienste zur Verfügung stellt. PAM muss nun an eine Authentifizierung mit Winbind angepasst werden. Die entsprechenden PAM-Konfigurationsdateien befinden sich alle im Verzeichnis '''/etc/pam.d/'''. Benutzer, die mithilfe einer Active Directory bzw. Windows NT Domäne verwaltet werden, sind nicht in den Linuxgruppen, welche Ubuntu verwendet. Diese Gruppen sind jedoch wichtig, um zum Beipiel auf USB-Geräte oder die Soundkarte (Lautstärke) zuzugreifen. Um diesen Benutzern die richtigen Gruppen zuzuweisen, wird `pam_group` benötigt. Damit werden die Windows-User in die entsprechenden Linuxgruppen aufgenommen. '''group.conf''' ('''/etc/security/group.conf'''): {{{ * ; * ; * ; Al0000-2400 ; floppy, audio, cdrom, video, usb, plugdev, users }}} {{{#!vorlage Hinweis Eine manuelle Änderung der PAM-Konfiguration (Dateien in '''/etc/pam.d/''') ist nicht mehr notwendig, sondern findet automatisiert bei der Installation statt. Lediglich das Erstellen der Home-Ordner muss nachträglich mit `pam-auth-update` aktiviert werden. }}} '''common-account''' ('''/etc/pam.d/common-account'''): {{{ account sufficient pam_winbind.so account required pam_unix.so }}} '''common-auth''' ('''/etc/pam.d/common-auth'''): {{{ auth required pam_group.so use_first_pass auth sufficient pam_winbind.so auth sufficient pam_unix.so nullok_secure use_first_pass auth required pam_deny.so }}} '''common-session''' ('''/etc/pam.d/common-session'''): {{{ session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel session optional pam_foreground.so }}} '''sudo''' ('''/etc/pam.d/sudo'''): {{{ auth sufficient pam_winbind.so auth sufficient pam_unix.so use_first_pass auth required pam_deny.so @include common-account }}} ==== Testen ==== {{{#!vorlage Befehl /etc/init.d/winbind stop /etc/init.d/samba restart /etc/init.d/winbind start }}} Nun sollte man sich mit einem Domänenbenutzer anmelden können. Da es bei Fehlern an der obrigen Konfiguration vorkommen kann, dass man sich gar nicht mehr anmelden kann, ist es am besten, man testet die Anmeldung per [:SSH:] und meldet sich vorsichtshalber nicht ab. Wenn auf dem Client ein SSH-Server installiert ist, sollte es nun möglich sein, sich auf diesen mit einem Domänen-Benutzer anzumelden. Näheres dazu findet man im Artikel [:SSH:]. ==== GUI-Login ==== Um sich in neueren Ubuntu-Versionen mit einem Domain-Account über die GUI anmelden zu können, muss zunächst die Eingabe eines beliebigen Benutzernamens freigeschaltet werden. Hierzu in '''/usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf''' die Konfiguration anpassen: {{{ [SeatDefaults] greeter-session=unity-greeter allow-guest=false greeter-show-remote-login=false greeter-show-manual-login=true greeter-hide-users=true }}} === root-Rechte === Um einer Domain-Gruppe root-Rechte zu geben, muss diese in '''/etc/sudoers''' eingefügt werden: {{{ %gruppenname ALL=(ALL:ALL) ALL }}} {{{#!vorlage Hinweis Die Gruppen- oder Benutzernamen immer in Kleinbuchstaben angeben, auch wenn im Domain-Controller eine gemischte Schreibweise verwendet wird (z.B. `GruppenName` wird zu `gruppenname`)! }}} == Optionale Erweiterungen == === PAM Mount === Einhängen eines Netzlaufwerks mit den Rechten des entsprechenden Users. ==== Pakete installieren ==== {{{#!vorlage Paketinstallation libpam-mount, universe, [2] cifs-utils }}} ==== PAM Konfiguration erweitern ==== {{{#!vorlage Hinweis Ab Ubuntu 14.04 ist eine manuelle Änderung der PAM-Konfiguration (Dateien in '''/etc/pam.d/''') nicht mehr notwendig, sondern findet automatisiert bei der Installation statt. }}} '''common-auth''' ('''/etc/pam.d/common-auth'''): {{{ auth required pam_mount.so auth sufficient pam_unix.so nullok_secure use_first_pass auth required pam_group.so use_first_pass auth sufficient pam_winbind.so use_first_pass auth required pam_deny.so }}} '''common-session''' ('''/etc/pam.d/common-session'''): {{{ session required pam_unix.so session required pam_mkhomedir.so umask=0022 skel=/etc/skel session optional pam_foreground.so session optional pam_mount.so }}} Die pam_mount-Konfiguration befindet sich in '''/etc/security/pam_mount.conf.xml'''. Mögliche Einträge sind mittels `man 5 pam_mount.conf` ersichtlich; es stehen insbesondere die Variablen `%(USER)`, `%(DOMAIN_NAME)`, `%(DOMAIN_USER)` zur Verfügung. Die Konfiguration sieht folgendermaßen aus: {{{#!code xml }}} Dabei ist zu beachten: || ``//meinserver/freigabe`` || kann eingehängt werden || || ``//meinserver/freigabe/unterverzeichnis`` || kann NICHT eingehängt werden || Es ist also nicht möglich, Unterverzeichnisse von Freigaben zu verbinden. Mit dem Eintrag `` aktiviert man, dass zusätzlich benutzerspezifisch die Datei `$HOME/.pam_mount.conf.xml` eingelesen wird. ==== Passwort-Text bei GUI-Login ändern ==== Nach der oben beschriebenen Änderung der '''/etc/pam.d/common-auth''' erscheint beim GUI-Login im Passwortfeld der Text `pam_mount password:`. Um wieder `password:` (oder jeden beliebigen anderen Text) anzuzeigen in '''/etc/security/pam_mount.conf.xml''' folgende Zeile vor `` ergänzen: {{{ password: }}} = Problemlösungen = == no logon servers == Sollte diese Meldung beim Anmelden eines Domänenbenutzers auftauchen, muss wahrscheinlich die Startreihenfolge von Winbind und Samba modifziert werden. Dazu müssen alle Dateien mit dem Namen '''S20winbind''' und '''S20samba''' in den Ordnern '''/etc/rc2.d, rc3.d, rc4.d, rc5.d''' in '''S45winbind''' und '''S45samba''' umbenannt werden. {{{#!vorlage Befehl mv /etc/rc2.d/S20winbind /etc/rc2.d/S45winbind mv /etc/rc3.d/S20winbind /etc/rc3.d/S45winbind mv /etc/rc4.d/S20winbind /etc/rc4.d/S45winbind mv /etc/rc5.d/S20winbind /etc/rc5.d/S45winbind mv /etc/rc2.d/S20samba /etc/rc2.d/S45samba mv /etc/rc3.d/S20samba /etc/rc3.d/S45samba mv /etc/rc4.d/S20samba /etc/rc4.d/S45samba mv /etc/rc5.d/S20samba /etc/rc5.d/S45samba }}} Dadurch wird Samba und Winbind in der Bootreihenfolge etwas nach hinten verschoben. Bei selbigem Problem ab Ubuntu '''16.10''' kann es helfen die Zeile in '''/etc/systemd/system/multi-user.target.wants/winbind.service''' anzupassen: {{{ After=network.target nmbd.target }}} zu {{{ After=network-online.target }}} == Die TLD der Domain ist .local (example.local) == Der Befehl {{{#!vorlage Befehl ping FQDN }}} endet mit: {{{ ping: unknown host meinserver.example.local }}} Das Problem lässt sich damit begründen, dass die TDL ".local" standardisiert via mDNS (Multicast-DNS) aufgelöst wird. Um dieses Verhalten abzuschalten, muss man in der Datei '''/etc/nsswitch.conf''' die Zeile {{{ hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 }}} in {{{ hosts: files dns mdns4 }}} geändert werden. == Namensauflösung == Für alle, die Probleme bei der Namensauflösung von Hostnamen in einem Windowsnetzwerk haben, kann der folgende Tipp hilfreich sein. Da es sich um ein gerade bei Einsteigern recht häufiges Problem handelt, sollte man aber auch weitere [:Samba_Client_GNOME#Probleme-und-Loesungen:Problemlösungen] in Betracht ziehen. Man editiert die Datei '''/etc/nsswitch.conf''' mit Root-Rechten und ergänzt diese um `wins`: {{{ hosts: files wins dns }}} = Links = * [http://samba.org/samba/ Die englischsprachige Hauptseite des Samba-Teams] {en} * [ubuntu_doc:community/ActiveDirectoryWinbindHowto:ActiveDirectoryWinbindHowto] {en} ## * [http://gertranssmb3.berlios.de/output/winbind.html Winbind Dokumentation] {de} * [http://www.64-bit.de/dokumentationen/netzwerk/b/003/winbind.html Winbind-Dokumentation] {de} * [http://ubuntuforums.org/showthread.php?t=5409 HOWTO: NT Domain Authentifizierung] {en} * [wikipedia:Active_Directory: Beschreibung Active Directory und FQDN] * [wikipedia:Active_Directory_Service:Beschreibung ADS] # tag: System, Netzwerk