Kapitel 12. Das Gruppen-Mapping zwischen MS Windows und UNIX

John H. Terpstra

Samba Team

Jean François Micouleau

Gerald (Jerry) Carter

Samba Team

Joachim Luft

Deutsche Übersetzung
German Samba-3-Docs-Translation Team

Inhaltsverzeichnis

Eigenschaften und Vorzüge
Diskussion
Wichtige administrative Informationen
Standardbezeichner für Benutzer, Gruppen und Beziehungen
Beispielkonfiguration
Konfigurationskripten
Beispiel für ein smb.conf-Skript zum Hinzufügen von Gruppen
Skript zum Konfigurieren von Gruppen-Mappings
Gängige Fehler
Das Hinzufügen von Gruppen schlägt fehl
Das Hinzufügen von MS Windows-Gruppen zu MS Windows-Gruppen schlägt fehl
Domänen Benutzer zu der Gruppe Hauptbenutzer hinzufügen

Mit der Einführung von Samba 3 wurden neue Gruppen-Mapping-Funktionen eingebaut, die Verbindungen zwischen Unix-Gruppen und Windows-Gruppen-SIDs ermöglichen. Das Unterkommando groupmap, das zum Kommando net gehört, wird für das Verbinden der Gruppen verwendet.

Die neuen Merkmale des Gruppen-Mappings ermöglichen es dem Administrator zu entscheiden, welche NT-Domänengruppen dem MS Windows-Client zugeordnet werden. Es werden nur jene NT-Domänengruppen in den Werkzeugen zur Bearbeitung von Domänen-Benutzern und -Gruppen angezeigt, die auf eine Unix-Gruppe gemappt wurden und nicht dem Standardwert (-1) zugeordnet wurden.

Warnung

Der Parameter domain admin group wurde aus Samba-3 entfernt und sollte nicht länger verwendet werden. In Samba-2.2.x-Versionen wurde dieser Parameter verwendet, um einer bestimmten Liste von Benutzern die Mitgliedschaft in der Domänen-Administratoren-Gruppe zu geben, die lokale Administrator- Rechte auf den Client Rechner vergibt (in Standard-Konfigurationen).

Eigenschaften und Vorzüge

Samba ermöglicht dem Administrator das Anlegen von MS Windows NT4/200x-Gruppenkonten, die auf beliebige UNIX/Linux-Gruppen gemappt werden können.

Gruppenkonten können mit den MS Windows 200x/XP Professional MMC-Tools verwaltet werden. In der Datei smb.conf können entsprechende Skripten verwendet werden, um mit diesen MMC-Tools automatisch UNIX/Linux-Konten anzulegen. Wenn diese Skripten nicht angegeben werden und der winbindd läuft, werden die Samba-Gruppenkonten den Parametern von idmap uid/idmap gid der smb.conf zugeordnet.

Abbildung 12.1. IDMAP: Auflösung der Gruppen-SID in eine GID

IDMAP: Auflösung der Gruppen-SID in eine GID

Abbildung 12.2. IDMAP: GID-Auflösung in eine passende SID

IDMAP: GID-Auflösung in eine passende SID

In beiden Fällen können, wenn winbindd nicht läuft, nur lokal auflösbare Gruppen erkannt werden (siehe auch IDMAP: Auflösung der Gruppen SID zur GID und IDMAP: GID Auflösung zu passender SID). Das Kommando net groupmap wird verwendet, um UNIX-Gruppen zu NT-SID-Mappings wie in IDMAP: Speichern von Gruppen-Mappings zu erstellen.

Abbildung 12.3. IDMAP: Speichern von Gruppen-Mappings

IDMAP: Speichern von Gruppen-Mappings

Administratoren sollten beachten, dass smb.conf Gruppen-Interface-Skripten direkt die UNIX/Linux-Systemwerkzeuge (die Shadow-Utilities groupadd, groupdel und groupmod) verwenden. Die resultierenden Gruppennamen können nur Zeichen enthalten, die auch die oben genannten Werkzeuge bearbeiten können. Wenn die Werkzeuge keine Großbuchstaben oder Leerzeichen erlauben, wird das Erstellen der Gruppe Domänen-Administratoren nicht möglich sein.

Es gibt verschiedene Lösungswege für solche Einschränkungen verschiedener Betriebsysteme. Eine Möglichkeit besteht darin, Skripten zu verwenden, die die Systemeinschränkungen kennen und dann nur die UNIX/Linux-Gruppen-ID (GID) an Samba zurückgeben. Dies ist ein dynamischer Workaround.

Ein anderer Lösungsansatz ist die manuelle Erstellung der UNIX/Linux- und MS Windows NT4/200x-Gruppen am Samba-Server und die Verwendung des Werkzeugs net groupmap, um die Gruppen zu „verbinden“.

Diskussion

Bei der Installation von MS Windows NT4/200x auf einem Computer erstellt das Installationsprogramm Benutzer und Gruppen, insbesondere die Administratoren-Gruppe. Diese Gruppe erhält die nötigen Rechte, um wichtige Systemaufgaben, wie die Änderung der Zeit und das Beenden von Programmen, auszuführen.

Der Benutzer Administrator ist Mitglied der Gruppe Administratoren. Dies vererbt die Gruppenrechte der Administratoren. Falls ein Benutzer joe erzeugt wird, der Mitglied der Gruppe Administratoren ist, so hat joe genau diesselben Rechte wie der Benutzer Administrator.

Wenn eine MS Windows NT/200x/XP-Maschine zum Domänenmitglied gemacht wird, so wird die Gruppe „Domänen-Administratoren“ des PDC zu der lokalen Gruppe Administratoren der Arbeitsstation hinzugefügt. Jedes Mitglied der Gruppe Domänen-Administratoren vererbt die Rechte der lokalen Gruppe Administratoren, wenn diese sich an der Arbeitsstation anmelden.

Die folgenden Schritte beschreiben, wie man Samba-PDC-Benutzer zu Mitgliedern der Gruppe Domänen-Administratoren macht.

  1. Erzeugen Sie eine UNIX-Gruppe (normalerweise in der Datei /etc/group); nennen wir sie domadm.

  2. Fügen Sie dieser Gruppe die Benutzer hinzu, die „Administrator“ sein müssen. Falls Sie zum Beispiel joe, john und mary Administrator sein lassen wollen, sieht Ihr Eintrag in /etc/group wie folgt aus:

    		domadm:x:502:joe,john,mary
    		

  3. Mappen Sie diese domadm-Gruppe auf die Gruppe „Domänen-Administratoren“, indem Sie den folgenden Befehl eingeben:

    	root# net groupmap add ntgroup=„Domänen Administratoren“ unixgroup=domadm
    	

    Die Anführungszeichen um „Domänen Administratoren“ sind notwendig, weil der Gruppenname ein Leerzeichen enthält. Stellen Sie zudem sicher, dass Sie keine Leerzeichen um das Gleichheitszeichen (=) übrig lassen.

Jetzt sind joe, john und mary Domänenadministratoren.

Es ist möglich, jede beliebige UNIX-Gruppe auf jede Windows NT4/200x-Gruppe zu mappen, genauso wie jede UNIX-Gruppe zu einer Windows-Domänengruppe zu machen. Wenn Sie beispielsweise eine UNIX-Gruppe (z.B. acct) in eine ACL auf einer lokalen Datei oder Drucker auf einer Domänen-Mitgliedsmaschine aufnehmen wollen, dann markieren Sie diese Gruppe als eine Domänengruppe auf dem Samba-PDC, indem Sie Folgendes eingeben:

root# net groupmap add rid=1000 ntgroup="Accounting" unixgroup=acct

Beachten Sie, dass der RID-Parameter ein unsigned 32-Bit-Integer ist, der normalerweise bei 1000 startet. Dieser RID darf sich jedoch nicht mit einem RID überschneiden, der einem Benutzer zugewiesen ist. Dies wird mit unterschiedlichen Verfahren überprüft, die von dem von Ihnen verwendeten passdb-Backend abhängen. Künftige Versionen der Werkzeuge nehmen die Überprüfung eventuell automatisch vor, aber derzeit ist dies Ihre Aufgabe.

Wichtige administrative Informationen

Administrative Rechte sind in zwei spezifischen Formen notwendig:

  1. Für Samba-3-Domänencontroller und Domänen-Mitgliedsserver/Clients

  2. Um Windows-Arbeitsstationen, die Domänenmitglied sind, zu verwalten

Administrative Aufgaben auf UNIX/Linux-Systemen, wie das Hinzufügen von Benutzern oder Gruppen, setzen root-Level-Privilegien voraus. Das Hinzufügen eines Windows-Clients zu einer Samba-Domäne bringt das Hinzufügen eines Benutzerkontos für den Windows-Client mit sich.

Viele UNIX-Administratoren beantragen wiederholt beim Samba-Team, es zu ermöglichen, ohne root-Rechte Windows-Arbeitsstationen oder Benutzerkonten hinzuzufügen und zu löschen. Eine solche Anfrage verletzt jedes Verständnis von grundlegender UNIX-Systemsicherheit.

Es gibt keinen sicheren Weg, den Zugriff auf ein UNIX/Linux-System ohne root-Privilegien zur Verfügung zu stellen. Die Bereitstellung von root-Privilegien kann entweder durch Anmelden als root an der Domäne erfolgen, oder man kann bestimmten Benutzern erlauben, ein UNIX-Konto zu benutzen, das Mitglied der UNIX-Gruppe ist, für die GID=0 als primäre Gruppe in der Datenbank /etc/passwd definiert ist. Benutzer solcher Konten können Werkzeuge wie den NT 4-Domänen-Benutzermanager und den NT 4-Domänen-Servermanager verwenden, um Benutzer- und Gruppenkonten ebenso zu verwalten wie Domänen-Mitgliedsserver und Client-Konten. Diese Privilegienebene wird ebenfalls benötigt, um ACLs auf Freigabeebene zu verwalten.

Administrative Aufgaben auf einer Windows-Arbeitsstation, die Domänenmitglied ist, können durch jeden, der Mitglied der Gruppe Domänen Administratoren ist, durchgeführt werden. Diese Gruppe kann auf jede passende UNIX-Gruppe gemappt werden.

Standardbezeichner für Benutzer, Gruppen und Beziehungen

Beim ersten Installieren wird Microsoft Windows NT4/200x/XP mit einigen Benutzer-, Gruppen- und Alias-Einheiten vorkonfiguriert. Jede hat einen bekannten relativen Bezeichner (RID). Dieser muss für die weitergehende Integrität von Operationen eindeutig bleiben. Samba muss mit gewissen lebensnotwendigen Domänengruppen ausgestattet werden, die den entsprechenden RID-Wert verlangen. Wenn Samba-3 so konfiguriert wird, dass es tdbsam nutzt, werden die lebensnotwendigen Domänengruppen automatisch angelegt. Es ist dann die Verantwortung des LDAP-Administrators, die Standard-NT-Gruppen zu erzeugen (diese auszustatten).

Jede grundlegende Domänengruppe muss ihrer zugehörigen bekannten RID zugeordnet werden. Die Standard-Benutzer, Gruppen, Aliases und RIDs werden in der Tabelle Bekannte Standardbenutzer-RIDs angezeigt.

Anmerkung

Wenn das passdb backend LDAP (ldapsam) benutzt, ist der Administrator dafür verantwortlich, die notwendigen Domänengruppen zu erzeugen und diese ihrer jeweiligen RID zuzuweisen.

Es ist zulässig, jede Domänengruppe, die benötigt wird, zu erzeugen. Stellen Sie lediglich sicher, dass die notwendige (bekannt gegebene) Domänengruppe erzeugt worden ist und Ihrer Standard-RID zugewiesen worden ist. Andere Gruppen, die Sie anlegen, können Sie jeder beliebigen RID zuordnen, die Sie benutzen möchten.

Stellen Sie sicher, dass jede Domänengruppe auf eine UNIX-Systemgruppe gemappt wird. Dies ist der einzige Weg, um sicherzustellen, dass die Gruppe als eine NT-Domänengruppe verfügbar sein wird.

Tabelle 12.1. Bekannte Standardbenutzer-RIDs

Bekannte EinheitRIDTypNotwendig
Domänen-Administrator500BenutzerNein
Domänen-Gast501BenutzerNein
Domäne KRBTGT502BenutzerNein
Domänen-Administratoren512GruppeJa
Domänenbenutzer513GruppeJa
Domänengäste514GruppeJa
Domänencomputer515GruppeNein
Domänencontroller516GruppeNein
Domänen-Certificate-Administratoren517GruppeNein
Domänen-Schema-Administratoren518GruppeNein
Domänen-Enterprise-Administratoren519GruppeNein
Domänen-Policy-Administratoren520GruppeNein
Builtin-Administratoren544AliasNein
Builtin-Benutzer545AliasNein
Builtin-Gäste546AliasNein
Builtin-Hauptbenutzer547AliasNein
Builtin-Zugriffsoperator548AliasNein
Builtin-System-Operator549AliasNein
Builtin-Drucker-Operator550AliasNein
Builtin-Backup-Operator551AliasNein
Builtin-Replikator552AliasNein
Builtin-RAS-Server553AliasNein

Beispielkonfiguration

Sie können die verschiedenen Gruppen in der Mapping-Datenbank anzeigen lassen, indem Sie net groupmap list eingeben. Hier ist ein Beispiel:

root#  net groupmap list
Domänen Administratoren (S-1-5-21-2547222302-1596225915-2414751004-512) -> domadmin
Domänen Benutzer (S-1-5-21-2547222302-1596225915-2414751004-513) -> domuser
Domänen Gäste (S-1-5-21-2547222302-1596225915-2414751004-514) -> domguest

Ausführliche Details zu net groupmap finden Sie auf der net(8)-Manpage.

Konfigurationskripten

Jeder braucht Werkzeuge. Manche von uns erstellen ihre gern selbst, andere bevorzugen Werkzeuge aus der Konserve (z.B. solche, die von jemandem für bestimmte Zwecke vorbereitet wurden).

Beispiel für ein smb.conf-Skript zum Hinzufügen von Gruppen

smbgrpadd.sh ist ein Skript, um übereinstimmende Gruppennamen für die Nutzung durch das Samba-Gruppeninterface zu erstellen.

Beispiel 12.1. smbgrpadd.sh


#!/bin/bash

# Fügt die Gruppe unter Nutzung des normalen groupadd-Systemwerkzeugs hinzu.
groupadd smbtmpgrp00

thegid=`cat /etc/group | grep smbtmpgrp00 | cut -d ":" -f3`

# Jetzt den Namen für unser MS Windows-Netzwerk passend ändern.
cp /etc/group /etc/group.bak
cat /etc/group.bak | sed "s/smbtmpgrp00/$1/g" > /etc/group

# Melde uns die GID zurück.
echo $thegid
exit 0

Der smb.conf-Eintrag für obiges Skript kann etwas wie in dem folgenden Beispiel sein.

Beispiel 12.2. Konfiguration von smb.conf für das Skript zum Gruppenhinzufügen.

[global]
...
add group script = /Pfad_zum_Werkzeug/smbgrpadd.sh "%g"
...

Skript zum Konfigurieren von Gruppen-Mappings

In unserem Beispiel haben wir eine UNIX/Linux-Gruppe namens ntadmin erzeugt. Unser Skript wird die zusätzlichen Gruppen Orks, Elfen und Gnome anlegen. Es ist eine gute Idee, dieses Shellskript für eine spätere erneute Nutzung abzuspeichern, auch für den Fall, dass Sie später Ihre Mapping-Datenbank einmal neu anlegen müssen. Aus praktischen Gründen entscheiden wir uns, dieses Skript als eine Datei namens initGroups.sh zu speichern. Dieses Skript heißt in diesem Beispiel initGroups.sh.

Beispiel 12.3. Skript zum Setzen von Gruppen-Mappings

#!/bin/bash

net groupmap modify ntgroup="Domänen Administratoren" unixgroup=ntadmin
net groupmap modify ntgroup="Domänen Benutzer" unixgroup=users
net groupmap modify ntgroup="Domänen Gäste" unixgroup=nobody

groupadd Orks
groupadd Elfen
groupadd Gnome

net groupmap add ntgroup="Orks"   unixgroup=Orks   type=d
net groupmap add ntgroup="Elfen"  unixgroup=Elfen  type=d
net groupmap add ntgroup="Gnome"  unixgroup=Gnome  type=d

Natürlich wird vorausgesetzt, dass der Administrator dies für lokale Zwecke anpasst. Für Informationen zur Nutzung des Werkzeugs net groupmap sehen Sie bitte in der Manpage nach.

Gängige Fehler

Zurzeit gibt es eine Menge kleiner Überraschungen für den unachtsamen Administrator. In gewisser Weise ist es erforderlich, dass jeder Schritt automatisierter Kontrollskripten sorgfältig manuell getestet wird, bevor diese in der Praxis verwendet werden.

Das Hinzufügen von Gruppen schlägt fehl

Dies ist ein häufiges Problem, wenn groupadd direkt von dem Samba-Interface-Skript für add group script (Parameter in der Datei smb.conf) aufgerufen wurde.

Der häufigste Grund für diesen Fehler ist der Versuch, ein MS Windows-Gruppenkonto hinzuzufügen, das entweder ein großgeschriebenes Zeichen und/oder ein Leerzeichen enthält.

Es gibt drei mögliche Workarounds. Erstens: Benutzen Sie nur Gruppennamen, die mit den Einschränkungen des UNIX/Linux-Systemwerkzeugs groupadd zurechtkommen. Der zweite betrifft die Benutzung des Skripts, welches weiter oben in diesem Kapitel erwähnt wurde, und der dritte ist die Option, ein UNIX/Linux-Gruppenkonto manuell anzulegen, das zu dem MS Windows-Gruppennamen passt; dann benutzen Sie den oben beschriebenen Ablauf, um diese Gruppe auf eine MS Windows-Gruppe zu mappen.

Das Hinzufügen von MS Windows-Gruppen zu MS Windows-Gruppen schlägt fehl

Samba-3 unterstützt keine verschachtelten Gruppen aus der MS Windows-Kontrollumgebung.

Domänen Benutzer zu der Gruppe Hauptbenutzer hinzufügen

Was muss ich machen, um Domänenbenutzer zu der Hauptbenutzer-Gruppe hinzuzufügen?

Die Hauptbenutzer-Gruppe ist eine Gruppe, die lokal auf jeder Windows 200x/XP Professional-Arbeitsstation vorhanden ist. Sie können die Domänen-Benutzergruppe nicht automatisch zu der Hauptbenutzer-Gruppe hinzufügen. Dazu müssen Sie sich auf jeder Arbeitsstation als der lokale Arbeitsstations-Administrator und anmelden und folgende Prozedur abarbeiten:

  1. Klicken Sie auf Start -> Systemsteuerung -> Benutzer und Kennwörter.

  2. Klicken Sie auf die Registerkarte Erweitert.

  3. Klicken Sie auf den Button Erweitert.

  4. Klicken Sie auf Gruppen.

  5. Doppelklicken Sie auf Hauptbenutzer. Dies lässt das Feld zum Hinzufügen von Benutzern und Gruppen zu der lokalen Gruppe Hauptbenutzer erscheinen.

  6. Klicken Sie auf den Button Hinzufügen.

  7. Wählen Sie die Domäne aus, von der Sie die Gruppe Domänen Benutzer hinzufügen.

  8. Doppelklicken Sie auf die Gruppe Domänen Benutzer.

  9. Klicken Sie auf den Button Ok. Falls während dieses Prozesses eine Anmeldebox erscheint, denken Sie bitte daran, die Anmeldung als Domäne\Benutzername durchzuführen. Für die Domäne MITTELERDE und den Benutzer root geben Sie beispielsweise MITTELERDE\root ein.