Alternative Formate | |
Samba als Primary Domain Controller
Diese Kurzanleitung beschreibt die schrittweise Installation von Samba als Primary Domain Controller (PDC), dabei wurde die Samba Version 3.0.7 verwendet. Weiterhin werden Eckpunkte zur Migration von bestehenden Benutzern beschrieben.
Inhalt (hide)
- 1. Kompilierung
- 2. Konfiguration
- 2.1 Domäne migrieren
- 2.2 Konfigurationsdatei bearbeiten
- 2.3 LDAP Manager Passwort setzen
- 2.4 Standard Domänen Benutzer und Gruppen erstellen
- 2.5 Samba starten
- 2.6 Domänen Benutzer erstellen
- 2.7 Domänen Benutzer löschen
- 2.8 Domänen Benutzer de-/aktivieren
- 2.9 Domänen Administrator erstellen
- 2.10 Workstation erstellen
- 2.11 Workstation löschen
- 3. Workstation in die Domäne bringen
1. Kompilierung
Damit alle benötigten Funktionen in Samba zur Verfügung stehen und um Fehlerquellen zu minimieren ist es an zuraten Samba aus den Quellen zu erzeugen. Alle dafür nötigen Schritte werden in diesem Kapitel beschrieben. Die für Samba benötigten externen Bibliotheken müssen vor der Kompilierung in der Installationsumgebung installiert worden sein.
Das Samba Quellenpaket wird in ein beliebiges Verzeichnis heruntergeladen
(bevorzugt wird das Verzeichnis /usr/src/
) und entpackt. Nun muss das
Quellenpaket an die Umgebung angepasst werden, dazu muss in das Verzeichnis
/usr/src/samba-3.0.7/source/
gewechselt werden. In diesem Verzeichnis
wird in der Befehlszeile die folgende Befehlsabfolge eingegeben und ausgeführt:
% ./configure --with-ldap --with-ldapsam --enable-cups=no --prefix=/usr/local/samba
Nachdem das Quellpaket an die Umgebung vollständig und ohne Fehler angepasst wurde, kann nun der Kompilierungsvorgang gestartet werden. Dieser wird durch den Befehl
% make
gestartet. Ist der Kompilierungsvorgang erfolgreich abgeschlossen kann Samba installiert werden, dieses erfolgt über den Befehl
% make install
Nun ist Samba installiert und kann konfiguriert werden.
2. Konfiguration
Die Konfiguration von Samba setzt einen laufenden LDAP-Server voraus. Damit Domänen Benutzer und Workstations erstellt und modifiziert werden können muss der LDAP-Manager und das zugehörige Passwort vorliegen. Weiterhin muss der LDAP-Server das Samba Schema geladen haben. Dieses ist für die gängigen LDAP-Server im Verzeichnis
/usr/src/samba-3.0.7/examples/LDAP/
zu finden. Für den Sun Directory Server ist das Samba Schema unter der URL
http://ppbwiki.rz-berlin.mpg.de/uploads/Main.SambaPDC/ldap_schema.txt
verfügbar, das mitgelieferte Schema wies einige Fehler auf. Daher sollte das angegebenen Schema benutzt werden, da sort alle Fehler korrigiert wurden. Ist das Schema korrekt vom LDAP-Server geladen worden so kann mit der Konfiguration des Samba-Servers begonnen werden.
2.1 Domäne migrieren
Soll eine bereits bestehende Microsoft Windows Domäne migrieren, so wird der SID-Prefix der Domäne benötigt. Da dieser nicht öffentlich zugänglich ist kann dieser mit dem Tool "hivedump" ermittelt werden. Dazu wird jedoch die Datei NTUSER.DAT eines Domänen Benutzers benötigt. Ist diese Datei verfügbar so kann mit der folgenden Befehlszeile der SID-Prefix extrahiert werden:
% hivedump --findfirstsid NTUSER.DAT owner S-1-5-21-
Nach der Ausführung kommt eine Zeile die dem Muster der folgenden Zeile ähnelt, dabei ist der Platzhalter <RID> eine nicht Vorzeichen behaftet Zahl aus dem integer Zahlenraum.
S-1-5-21-1073446153-1192918827-1877560073-<RID>
Der SID-Prefix währe in diesem Falle:
S-1-5-21-1073446153-1192918827-1877560073
Dies sollte nicht nur bei einem Profile durchgeführt werden, da sich der SID-Prefix unter umständen unterscheiden kann. Sollte dies der Fall sein so muss mit der folgenden Befehlszeile der gemeinsame SID-Prefix ermittelt werden, dabei sollten mehr als zwei Profile untersucht werden.
% hivedump --getallsids NTUSER.DAT
2.2 Konfigurationsdatei bearbeiten
Der erste Schritt ist die Bearbeitung der Konfigurationsdatei
% vi /usr/local/samba/lib/smb.conf
Sollte diese Datei bereits existieren ist anzuraten diese vollständig zu löschen. Die verwendete Konfiguration sollte die folgenden Einstellungen beinhalten:
[global] workgroup = PDC netbios name = PDC server string = PP&B PDC security = domain encrypt passwords = yes obey pam restrictions = no time server = yes passdb backend = ldapsam:ldap://belanna/ log level = 0 log file = /usr/local/samba/var/log.%m socket options = SO_KEEPALIVE load printers = No lm announce = No preferred master = Yes os level = 65 local master = Yes domain master = Yes domain logons = Yes hosts allow = 141.14. ldap admin dn = cn=Directory Manager ldap suffix = dc=ppb,dc=rz-berlin,dc=mpg,dc=de ldap group suffix = ou=groups ldap machine suffix = ou=hosts ldap user suffix = ou=people ldap port = 389 ldap delete dn = Yes ldap passwd sync = Yes ldap ssl = no
2.3 LDAP Manager Passwort setzen
Damit Samba auf die Daten in LDAP vollständig zu greifen kann muss das LDAP Passwort gesetzt werden. Dies erfolgt mit Hilfe des Programms:
% /usr/local/samba/bin/smbpasswd -w <LDAP-PASSWORT>
Als Parameter muss das Passwort angegeben werden. Bei erfolgreicher Ausführung wird die folgende Statusmeldung ausgegeben:
% /usr/local/samba/bin/smbpasswd -w <LDAP-PASSWORT> Setting stored password for "cn=Directory Manager" in secrets.tdb
Nun ist Samba vollständig konfiguriert nun müssen alle benötigten Elemente in LDAP erzeugt werden.
2.4 Standard Domänen Benutzer und Gruppen erstellen
Damit nun auch Workstations der Domäne beitreten können müssen zunächst der Benutzer "root" und die benötigten Gruppen angelegt werden. Dabei werden LDAP die Daten mit der folgenden Befehlszeile zugeführt:
% ldapadd -h belanna -D "cn=Directory Manager"
Die folgende Auflistung muss dem LDAP-Server zugeführt werden.
dn: uid=root,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de cn: root sn: root objectClass: inetOrgPerson objectClass: sambaSAMAccount objectClass: posixAccount objectClass: shadowAccount gidNumber: 512 uid: root uidNumber: 0 homeDirectory: /dev/null sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 sambaSID: S-1-5-21-1073446153-1192918827-1877560073-500 sambaPrimaryGroupSID: S-1-5-21-1073446153-1192918827-1877560073-512 sambaAcctFlags: [U] sambaLMPassword: XXX sambaNTPassword: XXX loginShell: /bin/false gecos: Domain Administrator dn: sambaDomainName=PDC,dc=ppb,dc=rz-berlin,dc=mpg,dc=de sambaSID: S-1-5-21-1073446153-1192918827-1877560073 sambaDomainName: PDC sambaAlgorithmicRidBase: 1000 objectClass: sambaDomain dn: cn=Domain Admins,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 512 cn: Domain Admins memberUid: Administrator description: Domain Administrators sambaSID: S-1-5-21-1073446153-1192918827-1877560073-512 sambaGroupType: 2 displayName: Domain Admins dn: cn=Domain Users,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 513 cn: Domain Users description: Domain Users sambaSID: S-1-5-21-1073446153-1192918827-1877560073-513 sambaGroupType: 2 displayName: Domain Users dn: cn=Domain Guests,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 514 cn: Domain Guests description: Domain Guests Users sambaSID: S-1-5-21-1073446153-1192918827-1877560073-514 sambaGroupType: 2 displayName: Domain Guests dn: cn=Print Operators,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 550 cn: Print Operators description: Domain Print Operators sambaSID: S-1-5-21-1073446153-1192918827-1877560073-550 sambaGroupType: 2 displayName: Print Operators dn: cn=Backup Operators,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 551 cn: Backup Operators description: Domain Backup Operators sambaSID: S-1-5-21-1073446153-1192918827-1877560073-551 sambaGroupType: 2 displayName: Backup Operators dn: cn=Replicator,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 552 cn: Replicator description: Domain Replicator sambaSID: S-1-5-21-1073446153-1192918827-1877560073-552 sambaGroupType: 2 displayName: Replicator dn: cn=Domain Computers,ou=groups,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: posixGroup objectClass: sambaGroupMapping gidNumber: 553 cn: Domain Computers description: Domain Computers sambaSID: S-1-5-21-1073446153-1192918827-1877560073-553 sambaGroupType: 2 displayName: Domain Computers
Nun muss dem Domänen Benutzer "root" das Passwort gesetzt werden, damit eine Workstation dieser Domäne beitreten kann. Das Domänen Passwort und Unix-Passwort können unterschiedlich gewählt werden. Das setzen des Passwortes erfolgt mit der Befehlszeile:
% /usr/local/samba/bin/smbpasswd root
2.5 Samba starten
An dieser Stelle kann der Samba Server gestartet werden. Dies erfolgt über die beiden folgenden Befehlszeilen:
% /usr/local/samba/sbin/smbd % /usr/local/samba/sbin/nmbd
2.6 Domänen Benutzer erstellen
Für die Erstellung normaler Domänen Benutzer dient die folgende Vorlage, in der lediglich alle Platzhalter durch die entsprechenden Werte ersetzt werden müssen. Für das übertragen an LDAP siehe Kapitel Standard Domaenen Benutzer und Gruppen erstellen.
dn: uid=<DOMAIN-USER>,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: top objectClass: account objectClass: sambaSamAccount uid: <DOMAIN-USER> sambaSID: S-1-5-21-1073446153-1192918827-1877560073-<RID> sambaPrimaryGroupSID: S-1-5-21-1073446153-1192918827-1877560073-513 sambaProfilePath: <PATH-PROFILE> sambaHomePath: <PATH-HOME> sambaHomeDrive: <DRIVE-HOME> sambaAcctFlags: [U] sambaPwdMustChange: 2147483647 sambaPwdLastSet: 1 sambaLMPassword: <PASSWORT-LM> sambaNTPassword: <PASSWORT-NT>
Bei der Wahl der SID muss darauf geachtet werden das diese nicht bereits vergeben worden ist (jede SID muss Einzigartig sein). Mit der folgenden Befehlszeile lässt sich prüfen ob die eine SID bereits vergeben worden ist.
% ldapsearch -h belanna -b dc=ppb,dc=rz-berlin,dc=mpg,dc=de sambaSID=S-1-5-21-1073446153-1192918827-1877560073-<RID>
Für die Erstellung der beiden Passwörter (NT und LM) wird das Tool "mkntpwd" benötigt. Diese gibt die beiden Passwörter auf der Standardausgabe aus. Die Parametrierung des Tools sieht wie folgt aus:
% mkntpwd <PASSWORT>
Die Ausgabe des Tools sieht wie folgt aus:
<PASSWORT-LM>:<PASSWORT-NT>
Dieses Tool ist in den Samba Quellen enthalten und ist unter
% /usr/src/samba-3.0.7/examples/LDAP/smbldap-tools/mkntpwd/
zu finden.
Bestehendes Domänen Benutzer migrieren
Ersetzt der Samba PDC eine Microsoft Windows PDC so können die Microsoft Windows NT-Profile ohne Einschränkungen übernommen werden, dabei hilft das Tool "hivedump". Dieses Tool kann aus der NTUSER.DAT die bestehende SID des Domänen Benutzers auslesen, diese wird dann als SID des neuen Domänen Benutzers eingetragen. Dabei ist wichtig das der SID-Prefix der beiden Domänen übereinstimmt. Die Parametrisierung und Ausgabe des Tools sieht wie folgt aus:
% hivedump --findfirstsid /home/frosch/profile/ntuser.dat owner S-1-5-21-1073446153-1192918827-1877560073 S-1-5-21-1073446153-1192918827-1877560073-1000
Die so erhaltende SID kann als SID des neuen Domänen Benutzers eingetragen werden, somit ist Windows 2000, XP in der Lage das NT-Profile korrekt zu öffnen.
Sollten die beiden Passwörter (LM und NT) des bisherigen Domänen Benutzers zur Verfügung stehen so können diese ohne Einschränkungen übernommen werden.
Beispiel
Anhand eines Beispieles für den Benutzer "frosch" soll die Vorgehensweise veranschaulicht werden.
% ldapsearch -h belanna -b dc=ppb,dc=rz-berlin,dc=mpg,dc=de sambaSID=S-1-5-21-1073446153-1192918827-1877560073-1000
Dabei dürfen keine Objekte gefunden werden. Sollte jedoch ein Objekt mit der gesuchten SID gefunden werden, muss eine andere SID gewählt werden. Wurde kein Objekt gefunden so können die beiden Passwörter (LM und NT) generiert werden, dazu wird das schon beschriebene Tool "mkntpwd" benutzt.
% mkntpwd testme A5E9D1D6E318223AAAD3B435B51404EE:7BFCAB36832E298C37439259C80F6C08
Mit den so gewonnen Werten wird die Vorlage komplettiert.
dn: uid=frosch,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: top objectClass: account objectClass: sambaSamAccount uid: frosch sambaSID: S-1-5-21-1073446153-1192918827-1877560073-1000 sambaPrimaryGroupSID: S-1-5-21-1073446153-1192918827-1877560073-513 sambaProfilePath: \\byers\homes\profile sambaHomePath: \\byers\homes sambaHomeDrive: R: sambaAcctFlags: [U] sambaPwdMustChange: 2147483647 sambaPwdLastSet: 1 sambaLMPassword: A5E9D1D6E318223AAAD3B435B51404EE sambaNTPassword: 7BFCAB36832E298C37439259C80F6C08
Für die Datenübertragung an den LDAP-Server siehe Kapitel Standard Domaenen Benutzer und Gruppen erstellen. Nun ist der Benutzer "frosch" eingerichtet und kann sich unter der Domäne einloggen.
2.7 Domänen Benutzer löschen
Um einen normalen Domänen Benutzer zu löschen, kann die folgende Befehlszeile genutzt werden. Die enthaltenden Platzhalter müssen durch die entsprechenden Werte ersetzt werden.
% ldapdelete -h belanna -D "cn=Directory Manager" uid=<DOMAIN-USER>,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de
2.8 Domänen Benutzer de-/aktivieren
Um einen Domänen Benutzer de- bzw. aktivieren zu können, müssen die in den Vorlagen enthaltenden Platzhalter durch die entsprechenden Werte ersetzt werden. Danach werden die Daten mit dem Tool
% ldapmodify -h belanna -D "cn=Directory Manager"
an den LDAP Server übertragen. Dieses Tool erwartet nach dem starten die Daten über die Standardeingabe, somit kann mit "Copy\&Paste" gearbeitet werden.
Die folgende Vorlage aktiviert einen Domänen Benutzer.
dn: uid=<DOMAIN-USER>,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de sambaAcctFlags: [U]
Die folgende Vorlage deaktiviert einen Domänen Benutzer.
dn: uid=<DOMAIN-USER>,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de sambaAcctFlags: [DU]
2.9 Domänen Administrator erstellen
Die Erstellung eines Domänen Administrator unterscheidet sich ausschließlich
in einem Punkt zur Erstellung eines Domänen Benutzers (siehe Kapitel
Domaenen Benutzer erstellen). Dieser Unterschied liegt in der sambaPrimaryGroupSID
,
diese hat beim Domänen Administratoren die RID 512. Daher wird ausschließlich
eine abgewandelte Vorlage genutzt, die im folgenden dargestellt ist. Da die
folgenden Schritte mit denen des Kapitels Domaenen Benutzer erstellen übereinstimmen wird
auf dieses Kapitel verwiesen, um die weiteren Schritte auszuführen.
dn: uid=<DOMAIN-ADMIN>,ou=people,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: top objectClass: account objectClass: sambaSamAccount uid: <DOMAIN-ADMIN> sambaSID: S-1-5-21-1073446153-1192918827-1877560073-<RID> sambaPrimaryGroupSID: S-1-5-21-1073446153-1192918827-1877560073-512 sambaProfilePath: <PATH-PROFILE> sambaHomePath: <PATH-HOME> sambaHomeDrive: <DRIVE-HOME> sambaAcctFlags: [U] sambaPwdMustChange: 2147483647 sambaPwdLastSet: 1 sambaLMPassword: <PASSWORT-LM> sambaNTPassword: <PASSWORT-NT>
2.10 Workstation erstellen
Damit eine Workstation der Domäne hinzugefügt werden kann muss zunächst diese in LDAP eingetragen werden. Dies erfolgt über die folgende Vorlage, die enthaltenden Platzhalter müssen durch die entsprechenden Werte ersetzt werden. Für das übertragen an LDAP siehe Kapitel Standard Domaenen Benutzer und Gruppen erstellen. Die SID muss, wie schon im Kapitel Domaenen Benutzer erstellen beschrieben, auf ihre nicht Existenz kontrolliert werden.
dn: uid=<DOMAIN-HOST>$,ou=hosts,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: top objectClass: account objectClass: sambaSamAccount sambaPwdLastSet: 0 sambaPwdMustChange: 2147483647 sambaPwdCanChange: 0 sambaSID: S-1-5-21-1073446153-1192918827-1877560073-<RID> sambaPrimaryGroupSID: S-1-5-21-1073446153-1192918827-1877560073-553 uid: <DOMAIN-HOST>$ sambaAcctFlags: [W]
Beispiel
Anhand eines Beispieles für die Workstation "mpimage" soll die Vorgehensweise verschaulicht werden. Zuna"chst wird die nicht Existenz der gewählten SID kontrolliert, dieses erfolgt mit der folgenden Befehlszeile:
% ldapsearch -h belanna -b dc=ppb,dc=rz-berlin,dc=mpg,dc=de sambaSID=S-1-5-21-1073446153-1192918827-1877560073-1001
Dabei dürfen keine Objekte gefunden werden. Sollte jedoch ein Objekt mit der gesuchten SID gefunden werden, muss eine andere SID gewählt werden. Wurde kein Objekt gefunden so kann die Vorlage mit den so gewonnen Werten komplettiert werden.
dn: uid=mpimage$,ou=hosts,dc=ppb,dc=rz-berlin,dc=mpg,dc=de objectClass: top objectClass: account objectClass: sambaSamAccount sambaPwdLastSet: 0 sambaPwdMustChange: 2147483647 sambaPwdCanChange: 0 sambaSID: S-1-5-21-1073446153-1192918827-1877560073-1001 sambaPrimaryGroupSID: S-1-5-21-1073446153-1192918827-1877560073-553 uid: mpimage$ sambaAcctFlags: [W]
Für die Datenübertragung an den LDAP-Server siehe Kapitel Standard Domaenen Benutzer und Gruppen erstellen.
2.11 Workstation löschen
Um eine Workstation aus der Domäne zu löschen, kann die folgende Befehlszeile genutzt werden. Die enthaltenden Platzhalter müssen durch die entsprechenden Werte ersetzt werden.
% ldapdelete -h belanna -D "cn=Directory Manager" uid=<DOMAIN-HOST>,ou=hosts,dc=ppb,dc=rz-berlin,dc=mpg,dc=de
3. Workstation in die Domäne bringen
Ein wichtiger Unterschied für beim beitreten einer Workstation zur Domäne liegt beim verwendeten Benutzer. Dabei wird bei der Samba Domäne nicht mehr der Benutzer "Administrator", sondern der Benutzer "root" benutzt.
3.1 Registry Änderungen
Um mit Windows 2000 oder XP einer Samba Domäne beitreten zu können muss der Registry Schlüssel geändert werden:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters "RequireSignOrSeal"=dword:00000000