Archiv/Samba Client/ADAUTH

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Bearbeiten von Paketquellen

  3. Einen Editor öffnen

  4. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Ubuntu am Active Directory (Windows Server...
  2. Her mit den Benutzernamen
  3. Kerberos
  4. /home, sweet /home

Ubuntu am Active Directory (Windows Server 2003)

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.

Her mit den Benutzernamen

Zuerst muss man das Paket

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

Kerberos lässt sich über die Pakete

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.

/home, sweet /home

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

Hinweis:

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.