Samba 3.x mit tdbsam und "Usermanager for Domains"
Siehe auch Wiki FAQ und Impressum.
Details | |
---|---|
Bereich: | Software |
Kategorie: | System |
Gruppe: | Linux |
Betriebssystem: | Linux |
Zeitaufwand: | Hoch |
Anforderung: | Mäßig |
Samba als PDC in der Version 3.x
Kontenmangement mit dem MS-Tool „Usermanager for Domains“
Ziel soll sein, einen Samba-PDC einzurichten, welcher neben den homes und profiles eine netlogon-share sowie Daten hält. Die Authentifizierung erfolgt über das tdbsam-Backend, die gesamte Kontenverwaltung über das kostenlose MS-Tool „Usermanager for Domains“ (www.microsoft.com)
welches es auch „nicht-Linux-kundigen“ Administratoren erlaubt, Benutzer und Gruppen von einer NT- oder XP-Workstation aus zu modifizieren.
Dieses kleine Tutorial will kein Tiefenwissen vermitteln, sondern anhand eines schnellen Erfolges zum Experimentieren und Weiterlernen anregen.
Ich arbeite zwar mit SuSe SLES 9 / SP3 doch gilt das Folgende auch für die Versionen SuSe 9 und 10. Unter der Anpassung der Pfade sollte das Gesagte aber auch für andere Distributionen gelten.
OK. Neu in Samba 3.x ist das sog. Groupmapping, welches beinhaltet, dass globale Domänengruppen auf lokale Unixgruppen abgebildet – gemappt - werden . Jeder, der schon einmal mit der Verwaltung einer MS-Domäne zu tun hatte, kennt sie: die Domänenadministratoren, -benutzer und –gäste. Genauso die lokalen Gruppen wie Druckoperatoren, Hauptbenutzer, Sicherungsoperatoren usw., welche nach der Installation von Microsoft Workstation oder Server bereits angelegt sind. Es handelt sich hier um sog. Built-in-Groups von denen drei für eine Domäne unerlässlich sind: das sind die Domain Admins mit der rid 512, die Domain Users, rid 513, sowie die Domain Guests mit der rid 514.
Ebenso notwendig ist das Vorhandensein einer SID, ( S-1-5-21..... ), welche der Domäne eindeutig zugeordnet sein muss.
Nach der Installation von Samba 3.x wird ein solche SID erzeugt, welche die einzurichtende Domäne eindeutig identifiziert. Wir erhalten diese SID mit dem Befehl
-
net groupmap list
System Operators (S-1-5-32-549) -> -1 Replicators (S-1-5-32-552) -> -1 Guests (S-1-5-32-546) -> -1 Domain Users (S-1-5-21-3732367786-856876144-3282938955-513) -> -1 Domain Admins (S-1-5-21-3732367786-856876144-3282938955-512) -> -1 Power Users (S-1-5-32-547) -> -1 Domain Guests (S-1-5-21-3732367786-856876144-3282938955-514) -> -1 Print Operators (S-1-5-32-550) -> -1 Administrators (S-1-5-32-544) -> -1 Account Operators (S-1-5-32-548) -> -1 Backup Operators (S-1-5-32-551) -> -1 Users (S-1-5-32-545) -> -1
Und da sind sie, unsere MS Built.in-Groups. An dieser Stelle müssen nun die lebensnotwendigen Gruppen (rid 512-514) auf vorhandene Unixgruppen gemappt werden, um sie für die Administration von einem Windows-Client aus zugänglich zu machen. Hier können Standard Unixgruppen (ntadmin, users, guests) oder eigene verwendet werden. Der Befehl zum mappen lautet:
-
net groupmap modify ntgroup=[Gruppenname] unixgroup=[Gruppenname]
Wenn wir also Die MS-Domänengruppe Domain Admins auf die Unixgruppe ntadmin abbilden möchten, so wäre das:
-
net groupmap modify ntgroup=“Domain Admins“ unixgroup=ntadmin
Diesen Schritt wiederholen wir für die Domain Users und Domain Guests und erhalten mit
-
net groupmap list
System Operators (S-1-5-32-549) -> -1 Replicators (S-1-5-32-552) -> -1 Guests (S-1-5-32-546) -> -1 Domain Users (S-1-5-21-3732367786-856876144-3282938955-513) -> users Domain Admins (S-1-5-21-3732367786-856876144-3282938955-512) -> ntadmin Power Users (S-1-5-32-547) -> -1 Domain Guests (S-1-5-21-3732367786-856876144-3282938955-514) -> nobody Print Operators (S-1-5-32-550) -> -1 Administrators (S-1-5-32-544) -> -1 Account Operators (S-1-5-32-548) -> -1 Backup Operators (S-1-5-32-551) -> -1 Users (S-1-5-32-545) -> -1
Wie bereits erwähnt, sind alle anderen Built-in-Groups zur Einrichtung einer Domäne nicht erforderlich. Der Parameter modify wird hier verwendet, da die zu mappenden NT-Gruppen bereits existieren. Sollte mal der Fall eintreten, ein Mapping vollständig an der Linuxconsole eingeben zu müssen, ist dies natürlich auch möglich. Als Erstes wird hierzu mit
groupadd[Gruppenname] eine lokale Unixgruppe erstellt. Dann erfolgt das Mapping mit
net groupmap add unixgroup=[Gruppenname] ntgroup=[Gruppenname] type=domain
Also: groupadd testgruppe
Net groupmap add unixgroup=testgruppe ntgroup=testgruppe type=domain
Unser net groupmap list würde nun ergeben:
System Operators (S-1-5-32-549) -> -1 Replicators (S-1-5-32-552) -> -1 Guests (S-1-5-32-546) -> -1 testgruppe (S-1-5-21-3700398112-441439466-3868696347-3003) -> testgruppe Power Users (S-1-5-32-547) -> -1 Print Operators (S-1-5-32-550) -> -1 Administrators (S-1-5-32-544) -> -1 Domain Users (S-1-5-21-3700398112-441439466-3868696347-513) -> users Domain Admins (S-1-5-21-3700398112-441439466-3868696347-512) -> ntadmin Account Operators (S-1-5-32-548) -> -1 Domain Guests (S-1-5-21-3700398112-441439466-3868696347-514) -> nobody Backup Operators (S-1-5-32-551) -> -1 Users (S-1-5-32-545) -> -1
Bevor wir zur smb.conf kommen und die beiden Deamons nmb und smb erstmalig starten, ist noch ein Schritt notwendig. Da später das Anlegen von Benutzern über das Script useradd erfolgt, ist es erforderlich, die Standardeinstellungen für neu erstellte Benutzer zu ändern.
Dazu starten wir yast/Sicherheit und Benutzer/Benutzer bearbeiten und anlegen und wählen dann Optionen für Experten/Standardeinstellung für neue Benutzer.
Die Standardgruppe sollte die sein, auf welche die NT-Gruppe Domain users gemappt ist.
Die sekundären Gruppen (uucp, dailout etc) sollten entfern werden; Microsoft kennt diese Gruppen nicht und quittiert das mit entsprechenden Fehlermeldungen.
Die Standard Shell sollte auf /bin/false gesetzt werden – ein Windowsbenutzer benötigt keine shell.
Der Pfad für das home-Verzeichnis sollte an dieser Stelle, falls nötig, angepasst werden.
So weit, so gut; kommen wir zur smb.conf:
[global] workgroup = tuxdom # Name der Domäne netbios name = pegasus # Netbiosname des PDC server string = samba_pdc # Kommentar security = user # Benutzername/Passwort erforderlich domain master = yes # dient als Hauptbrowser f. Netbiosn. domain logons = yes # Server ist Authentifizierungsserver passdb backend = tdbsam # neben smbpasswd, winbindd, oder ldap # ein weiterer Authentifizierungsmecha. add user script = /usr/sbin/useradd "%u" -m add machine script = /usr/sbin/useradd -s /bin/false "%u" -g machines add group script = /usr/sbin/groupadd "%g" add user to group script = /usr/sbin/groupmod -A "%u" "%g" delete user from group script = /usr/sbin/groupmod -R "%u" "%g" delete group script = /usr/sbin/groupdel "%g" delete user script = /usr/sbin/userdel "%u" set primary group script = /usr/sbin/usermod -g "%g" "%u" wins support = yes # Server bietet WINS-Support logon path = \\%L\profiles\%U # Profilverzeichnis logon script = ntlogon.cmd # loginscript logon drive = P: # Laufwerksbuchstabe, auf den home # gemappt wird
Der Usermanager for Domains benutzt die ersten sieben Zeilen zur vollständigen Verwaltung von Benutzern und Gruppen. Zur Bedeutung der einzelnen Parameter sei auf die Manpages verwiesen. Bitte beachten, dass die Gruppe machines noch angelegt werden muss.
Nun die drei Systemfreigaben:
[netlogon] path = /local/samba/netlogon read only = yes browseable = no [profiles] path = /local/samba/profiles read only = no browseable = no create mask =700 directory mask = 700 [homes] path = /local/samba/homes/%S valid users = %S read only = no browseable = no read only = no create mask = 700 directory mask = 700
Nun müssen wir noch mit smbpasswd –a root
den Benutzer root und Samba einander bekannt machen sowie mit rcnmb start und rcsmb start samba starten (bitte nicht vergessen, diese Deamons später automatisch starten zu lassen).
An der Konsole des Servers geben wir nun testparm , ein Script zur logischen und syntaktischen Überprüfung der smb.conf, ein. Das Ergebnis sollte so aussehen:
Load smb config file from [Pfad zur smb.conf] Processing section „[netlogon]“ Processing section „[profiles]“ Processing section „[homes]“ Loaded services file OK Server role ROLE_DOMAIN_PDC
Wenn wir soweit sind, ist es an der Zeit, einen Windows-Client der Domäne anzuschließen.
Dies wird wie gewohnt durch einen Wechsel aus der Arbeitsgruppe in die Domäne tuxdom erledigt. Der hierzu berechtigte Benutzer ist natürlich root mit seinem samba-Passwort.
Achso: in Grunde gibt es nur einen „echten“ Domänenadmin, und das ist root. Zwar ist es möglich, durch username map = file in der [global] Sektion auch Claudia und Peter auf root zu mappen, jedoch habe ich es bisher noch nicht fertig gebracht, dass diese Benutzer ein von root abweichendes Kennwort benutzen können.
Nach erfolgtem Domänenanschluß rufen wir den Usermanager auf und setzten zuerst die Primary Group des Benutzers root auf Domain Admins. Dies deshalb, da die Windows-Clients mit der Primary Group root ( in dieser ist der Benutzer root per default) nichts anfangen können. Danach nehmen wir die globale Gruppe Domain Admins in die lokale Gruppe Administratoren auf.
So, nun Benutzer,Gruppen und einige Maschinenkonten anlegen; Mitgliedschaften zuweisen und sehen, ob alles funktioniert.