Linux als Mitglied einer Windows Domäne

Use cases

Benutzer || Gruppen des Realms zu Besitzern von Dateien oder Ordnern machen

Möchte man nun auf der Linux Maschine Benutzer oder Gruppen zu Besitzern von Dateien oder Ordnern machen geht man zunächst auf den Windows Server in die Eigenschaften, z.B. der Gruppe Domain Users, auf das Tab Unix Attributes und wählt unter NIS Domain unseren Arbeitsgruppennamen aus:

DomainUsers

Für die GID sollte sofort eine ID aus unserem definierten Zahlenbereich erscheinen. Mit OK bestätigen, dieser Schritt ist für jeden Benutzer bzw. Gruppe nur einmal notwendig.

Achtung!
Wurde dieser Schritt einmal gemacht wird das Mapping zwischen der UID bzw. GID und der SID für immer festgelegt und sollte auch so beibehalten werden. Änderungen sind zwar nachträglich, theoretisch möglich aber man sollte das vermeiden oder nur machen wenn man ganz genau weiß was man da tut. Die Nebeneffekte solcher Aktionen können erhebliche Nachwirkungen bereiten. Im Zweifelsfall sollte man lieber ein neues Mapping mit neuen Benutzer- oder Gruppennamen einrichten.

Anschließend können wir unsere konfigurierte Beispielgruppe auf der Linux Maschine verwenden:

me@myComputer:~$ mkdir myFolder
me@myComputer:~$ chown me:domain\ users myFolder
me@myComputer:~$ ls -l .
total 4,0K
drwxr-xr-x 1 me   domain users       196 Mai  5 19:17 myFolder

Man beachte das etwaige Spaces in Benutzer oder Gruppennamen unter Linux durch einen Backslash escape’d werden oder man setzt den Namen in Anführungszeichen. Sollte Winbind nicht laufen oder keine Verbindung zum Realm bestehen kann dieser Name nicht korrekt aufgelöst werden und die Linux Maschine fällt auf die Anzeige der GID zurück:

me@myComputer:~$ ls -l .
total 4,0K
drwxr-xr-x 1 me   10000              196 Mai  5 19:17 myFolder

Das ist aber behoben sobald eine Verbindung zum Realm wieder hergestellt werden kann.

Benutzer || Gruppen des Realms für Berechtigungen in Samba Freigaben verwenden

Bei der Verwendung von Freigaben auf der Linux Maschine möchte man manchmal auch Freigaben erstellen für welche bestimmte Gruppen des Realms eine Zugriffsberechtigung erhalten sollen. Hier ist die Syntax für Benutzer oder Gruppennamen zu beachten. Enthält der Name ein Space so setzt man diesen am Besten in Anführungszeichen. Gruppennamen unterscheiden sich bei Samba in besonderer Weise durch ein vorangestelltes @-Zeichen. Hat man beides also eine Gruppe in dessen Name auch Spaces enthalten sind muß man beides kombinieren in der Notation: @”GRUPPENNAME MIT SPACES”, in einer smb.conf stellt sich das z.B. so dar:

[myFolder]
	comment = myFolder is only for domain users!
	path = /home/me/myFolder
	create mask = 0664
	directory mask = 0775
	force group = @"domain users"
	write list = @"domain users"

Achtung!
Berechtigungen sind auf zwei Ebenen aktiv. Einmal die Berechtigung der Freigabe bei der man den Zugriff für Benutzer & Gruppen der Freigabe bestimmen kann und dann nochmal auf Dateiebene wo der Zugriff logischerweise z.B. für die gewünschte Gruppe ebenfalls erlaubt sein muß. Gewährt man nur in einer der beiden Ebenen (vgl. smb.conf & chmod) den Zugriff wird dieser natürlich fehlschlagen.

Benutzer des Realms als Login auf der Linux Maschine

Nun kann man noch einen Schritt weiter gehen und Benutzer des Realms auch dazu verwenden sich an der Linux Maschine anzumelden. Analog zu den Gruppen wäre zuerst der gleiche Konfigurationschritt für Benutzer durchzuführen, dazu geht man wieder in die Eigenschaften des betreffenden Benutzers in das Tab Unix Attributes:

DomainUserProps

Und setzt die NIS Domain und zusätzlich die Shell und den Home Path. Zwar bietet Samba Möglichkeiten den Home Path per Skript automatisch zu erzeugen aber zu Testzwecken machen wir das hier mal von Hand:

me@myComputer:~$ sudo mkdir /home/IamAdomainUser
me@myComputer:~$ sudo chown IamAdomainUser:domain\ user /home/IamAdomainUser

Möchte man ein beim ersten Login eines Benutzers automatisch den Home-Ordner erzeugen fügt man der /etc/pam.d/common-session Datei folgendes als ersten aktiven Eintrag hinzu:

...
session required    pam_mkhomedir.so umask=0077 skel=/etc/skel
# here are the per-package modules (the "Primary" block)
...
# end of pam-auth-update config

Achtung!
Die beide Kommentare markieren den Anfang und das Ende des Konfigurationsblocks der von pam-auth-update verwaltet wird. Sollten Änderungen innerhalb des Blocks gemacht werden gehen diese wieder nach einem Aufruf des Kommandos verloren!

Nachdem wir die Beispielgruppe Domain Users und unseren Beispielbenutzer IamAdomainUser im snakeoil.org Realm per NIS unserer Linux Maschine bekannt gemacht haben sollten wir diese nun auch per getent Aufruf in der Liste der lokalen Linux Benutzer & Gruppen zu sehen bekommen.

me@myComputer:~$ getent passwd
...
IamAdomainUser:*:10103:10000:test user:/home/IamAdomainUser:/bin/bash

Tauchen die Benutzer auf können sich diese nun z.B. per SSH oder sogar via XDMCP anmelden:

you@AnotherComputer:~$ ssh IamAdomainUser@myComputer.snakeoil.org
Welcome to SnakeOil
you@myComputer's password: *********

Analog dazu müßte man doch die Gruppen in gleicher Weise auflisten können?
Im Prinzip ja … aber

me@myComputer:~$ getent group
...
me@myComputer:~$ # Gruppen bleiben unsichtbar scheinen aber dennoch da zu sein z.B.
me@myComputer:~$ ls -l .
total 4,0K
drwxr-xr-x 1 me   domain users       196 Mai  5 19:17 myFolder

Wie im Aftermath erwähnt kann es bei einigen Samba Versionen durch einen Bug dazu kommen das diese Einträge nicht angezeigt werden das muß aber nicht zwangweise bedeuten das diese nicht da wären denn beim setzen von Dateiberechtigungen konnte man sehen das Winbind auch Gruppennamen richtig anzeigt daher ist eher davon auszugehen das getent Domäneneinträge bei der Gruppenauflistung offenbar ignoriert.

Logins über SSH ohne Passwort (Single-SignOn)

Wenn ein Host, der ebenfalls Mitglied der Domäne ist, den SSH Dienst anbietet so läßt sich für Benutzer der Domäne auch ein passwortloses Anmelden ermöglichen insofern sie über Winbind bzw. Kerberos im Realm bereits authentifiziert sind. Auf dem entsprechenden Host, der den SSH Dienst anbietet, aktiviert man in /etc/ssh/sshd_config folgende Zeilen:

...
# Kerberos options
KerberosAuthentication yes
#KerberosGetAFSToken no
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
...

Allerdings wird auf diese Weise allen Benutzern der Domäne eine passwortlose Anmeldung gestattet was u.U. etwas riskant sein könnte im Hinblick auf etwaige Gast-Konten. Wer zusätzlich pam_mkhomedir.so konfiguriert hat, erzeugt vorher sogar noch ein Home-Environment für Benutzer die u.U. gar nicht in der Lage sein sollen sich anzumelden. Daher ist es hier empfehlenswert den Zugriff auf bestimmte Gruppen zu beschränken zumindest für den SSH Dienst, dazu kann man in /etc/ssh/sshd_config mit der AllowGroups MYGROUP1 MYGROUP2 … Anweisung nur solchen Gruppen Zugriff gewähren die in der Lage sein sollen eine Anmeldung durchzuführen denkbar wäre hier u.A. einer Gruppe der Domäne (z.B. Domain Users) den Zugriff zu gestatten.

Quellen:
http://ubuntuforums.org/showthread.php?t=2152487

Leave a Reply