Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
In diesem Artikel geht es darum, Ubuntu gegen andere Sachen als die klassischen Dateien /etc/passwd, /etc/groups und /etc/shadow zu authentifizieren, z.B. falls man sich in einem Windowsnetzwerk befindet, in dem zur Authentifikation das Active Directory benutzt wird.
Vereinfacht gesehen besteht das Active Directory aus einem LDAP-Server, der für die Benutzernamen angezapft werden kann, und einen Kerberos-Server, gegen den man sich dann mit den Namen aus dem LDAP authentifizieren kann. Auf dem oder den Domänencontrollern müssen für diese Vorgehensweise die MS Services For Unix 3.5 installiert sein. Beim Anlegen eines Benutzers hat man dann einen neuen Reiter, mit dem Login-Informationen für Ubuntu eingegeben werden können.
Zuerst muss man das Paket
libnss-ldap (universe, [2])
installieren [1]. Danach die Konfigurationsdatei /etc/libnss-ldap.conf (ab Hardy /etc/ldap.conf) mit Root-Rechten editieren [3]. Hier macht man dem Name Service Switch die neuen Benutzer bekannt:
host ldap1.w2k3domaene.de ldap2.w2k3domaene.de # Bei Bedarf werden mehrere Domaenencontroller # via Leerzeichen getrennt. base dc=w2k3domaene,dc=de ldap_version 3 binddn cn=LDAP,cn=Users,dc=w2k3domaene,dc=de # Benutzer zum Auselesen des Active Directory bindpw LDAPs_Passwort # Hab mir einen extra zu diesem Zweck angelegt nss_base_passwd cn=Users,dc=w2k3domaene,dc=de?one nss_base_shadow cn=Users,dc=w2k3domaene,dc=de?one nss_base_group cn=Users,dc=w2k3domaene,dc=de?one nss_map_objectclass posixAccount User nss_map_objectclass shadowAccount User nss_map_objectclass posixGroup Group nss_map_attribute uid msSFU30Name nss_map_attribute uniqueMember msSFU30PosixMember #nss_map_attribute userPassword msSFU30Password nss_map_attribute homeDirectory msSFU30HomeDirectory nss_map_attribute loginShell msSFU30LoginShell nss_map_attribute uidNumber msSFU30UidNumber nss_map_attribute gidNumber msSFU30GidNumber pam_login_attribute msSFU30Name pam_filter objectclass=User pam_password ad
Das Passwortmapping wird nicht benutzt, weil die Authentifizierung über Kerberos ablaufen soll.
Damit der Name Service Switch die Namen auch für das Anmelden kennt, muss die /etc/nsswitch.conf wie folgt angepasst werden (Bug: mit neueren GDM-Versionen muss ldap an zweiter Stelle stehen!):
passwd: compat ldap # Bei passwd und group müssen nun Einträge für LDAP stehen group: compat ldap shadow: compat hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Damit sind dem Ubuntusystem die Namen aus dem Active Directory bekannt und sie kommen für eine Anmeldung in Frage. Die Dienste müssen nun noch neu gestartete werden:
sudo /etc/init.d/nscd restart sudo /etc/init.d/portmap restart sudo /etc/init.d/libnss-ldap restart
Im Terminal [4] kann man mittels
getent passwd
bzw.
getent group
überprüfen, ob die Namen aus dem Active Directory bekannt sind. Jedoch fehlt noch die Einstellung für die Authentifizierung über...
Kerberos lässt sich über die Pakete
libpam-krb5 (universe [2])
krb5-user (universe)
installieren [1].
krb5-user wird zur eigentlichen Authentifizierung nicht gebraucht, liefert aber mit kinit und klist Werkzeuge, mit denen man den Erhalt des Tickets überprüfen kann. Die Kerberoskonfigurationsdatei /etc/krb5.conf muss dann wie folgt aussehen (Editor mit Root-Rechten, [3]):
[libdefaults] default_realm = W2K3DOMAENE.DE krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true [realms] W2K3DOMAENE.DE = { kdc = ldap1.w2k3domaene.de kdc = ldap2.w2k3domaene.de admin_server = ldap1.w2k3domaene.de }
Im Terminal [4] mittels
kinit user
kann man nun überprüfen, ob man ein Ticket bekommt.
klist
listet alle gelösten Tickets.
Hiermit ist der Grundstein für die Authentifizierung mittels PAM gelegt. Nun müssen die PAM-Konfigurationsdateien im /etc/pam.d in Angriff genommen werden [3].
/etc/pam.d/common-auth:
auth sufficient pam_krb5.so auth required pam_unix.so nullok_secure use_first_pass
/etc/pam.d/common-account:
account sufficient pam_krb5.so account required pam_unix.so
/etc/pam.d/common-password:
password sufficient pam_krb5.so nullok obscure min=4 max=8 md5 password required pam_unix.so nullok obscure min=4 max=8 md5
/etc/pam.d/common-session:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 #vorher, sonst kein homedir bei 1st login session sufficient pam_krb5.so # Wichtig fuer gdm session required pam_unix.so
use_first_pass bei common_auth bedeutet, dass auch für die zweite Authentifizierungsmethode dasselbe Passwort wie für die erste benutzt wird. pam_mkhomedir.so in common-session bewirkt, dass das Homeverzeichnis eines Benutzers, wenn es denn noch nicht existiert, angelegt wird.
Am einfachsten werden mit libpam-mount die Homeverzeichnisse via SMB unter $HOME/Dokumente eingebunden, weil SMB keine Links, Sockets, etc. kann und somit nicht direkt als $HOME dienen kann.
Naheliegender ist jedoch folgendes: der NFS-Server aus den MS Services for Unix 3.5. Bei Ordnereigenschaften hat man einen Reiter mehr für NFS-Freigaben. Dort muss man den Ordner freigeben und die erlaubten Maschinen deklarieren. Danach kann die Freigabe eingebunden werden und man kann Homeverzeichnisse automatisch anlegen lassen, wenn auf Windowsseite allow Root-Access gesetzt ist.
Der Eintrag in /etc/fstab ist wie folgt [4]:
fileserver.w2k3domaene.de:/users /home nfs auto,rw,soft,udp,nolock,rsize=32768,wsize=32768 0 0
Wenn für den NFS-Server die Windowseigene Rechtevererbung eingeschaltet ist (was ich aus administrativen Zwecken will), werden alle Dateien mit x-Flag angelegt. Ich hab da noch keine Abhilfe gefunden.
Diese Revision wurde am 17. November 2013 20:50 von frustschieber erstellt.