Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
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 Active Directory Service. Die gesonderten Installationsschritte für diese Methode sind im Artikel besonders gekennzeichnet.
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.
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 |
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. Falls dies nicht funktionieren sollte, hilft eventuell der Artikel DNS Problembehebung weiter.
ping FQDN
FQDN steht hier für den Fully Qualified Domain Name des Domaincontrollers. (meinserver.example.com) Weitere Informationen zu FQDN unter FQDN.
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.
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.
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.
Nun müssen die benötigten Pakete installiert werden[1]:
krb5-user (universe)
libpam-krb5 (universe )
winbind
samba
smbclient
libnss-winbind
libpam-winbind
mit apturl
Paketliste zum Kopieren:
sudo apt-get install krb5-user libpam-krb5 winbind samba smbclient libnss-winbind libpam-winbind
sudo aptitude install krb5-user libpam-krb5 winbind samba smbclient libnss-winbind libpam-winbind
Die beiden Pakete krb5-user und libpam-krb5 sind nur bei der Installationsvariante mit ADS erforderlich.
Die beiden Pakete libnss-winbind und libpam-winbind müssen ab 14.04 LTS mit installiert werden, da sonst die "getent passwd"-Prüfung nur lokale Einträge liefert.
Es wird dringend empfohlen, vor jeder Änderung an den folgenden Konfigurationsdateien eine Sicherung davon anzulegen.
Dieser Schritt ist nur für die Variante mit ADS-Authentifizierung erforderlich. Siehe auch Kerberos.
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
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.
klist
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.
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.
[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
[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.
net rpc join -U Administrator
Nach jeder Änderung an der Samba-Konfiguration (und auch nach jeder PAM-Änderung) muss Winbind neu gestartet werden.
/etc/init.d/winbind restart
Nun sollte man der Domäne erfolgreich beigetreten sein. Der Computer sollte auf dem Server unter "Computers" auftauchen.
wbinfo -u
sollte eine Liste der Domainbenutzer ausgeben.
wbinfo -g
Sollte eine Liste der Domaingruppen ausgeben.
Sollte man die Meldung Error looking up domain groups
bekommen, startet man Winbind noch einmal neu.
Man öffnet die Datei /etc/nsswitch.conf in einem Editor und macht die folgenden Anpassungen:
passwd: compat winbind group: compat winbind shadow: compat
/etc/init.d/winbind restart
getent passwd
sollte nun ebenfalls die Domänenbenutzer ausgeben.
getent group
sollte nun ebenfalls die Domänengruppen ausgeben.
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
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. 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
/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.
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
Um einer Domain-Gruppe root-Rechte zu geben, muss diese in /etc/sudoers eingefügt werden:
%gruppenname ALL=(ALL:ALL) ALL
Die Gruppen- oder Benutzernamen immer in Kleinbuchstaben angeben, auch wenn im Domain-Controller eine gemischte Schreibweise verwendet wird (z.B. GruppenName
wird zu gruppenname
)!
Einhängen eines Netzlaufwerks mit den Rechten des entsprechenden Users.
libpam-mount (universe, [2] )
cifs-utils
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libpam-mount cifs-utils
sudo aptitude install libpam-mount cifs-utils
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:
1 2 3 4 5 | <pam_mount> <!-- ... --> <volume fstype="cifs" server="MEINSERVER" path="FREIGABE" mountpoint="/media/freigabe" options="iocharset=utf8,uid=xyz,dmask=0700" /> <!-- ... --> </pam_mount> |
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 <luserconf name=".pam_mount.conf.xml" />
aktiviert man, dass zusätzlich benutzerspezifisch die Datei $HOME/.pam_mount.conf.xml
eingelesen wird.
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 </pam_mount>
ergänzen:
<msg-authpw>password:</msg-authpw>
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.
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.
Der 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.
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 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
Befindet sich der Server als Mitglied in einem Active Directory, funktionieren nach einem Upgrade von Ubuntu 12.04 auf 14.04 die Freigaben auf dem Server nicht mehr, da sich der Samba-Server nicht mehr gegen den Domänen-Controller authentifizieren kann. Grund ist, dass Ubuntu beim Update 2 Pakete vergisst. Das Problem sollte sich leicht beheben lassen:
libnss-winbind (universe)
libpam-winbind (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libnss-winbind libpam-winbind
sudo aptitude install libnss-winbind libpam-winbind
Diese Revision wurde am 21. November 2016 14:21 von simon04 erstellt.