Windows in eine SAMBA-Domäne eingliedern
Aus Tuxfutter
Um einen Windows-Rechner in eine Samba-v2.x-Domäne einzugliedern, sind – je nach Windows-Version – folgende Schritte notwendig:
Inhaltsverzeichnis |
[Bearbeiten] Linux
Zunächst muss auf dem Linux-Rechner der Samba-Server installiert werden. Dieser Server ist bei allen gängigen Distributionen beigelegt und muss nur konfiguriert werden.
Die Konfigurationsdatei ist in der Regel die /etc/samba/smb.conf (teilweise auch /etc/smb.conf) und aufgebaut wie eine Windows INI-Datei.
[Bearbeiten] Die global-Sektion
Zunächst wird in der globalen Sektion unter dem Eintrag [global] das generelle Verhalten des Samba-Servers eingestellt:
[global] workgroup = WORKGROUP hosts allow = 192.168. interfaces = 192.168.1.13/255.255.255.0 bind interfaces only = yes server string = Samba Server add user script = /usr/sbin/useradd -d /dev/null -g 108 -s /bin/false %u domain admin group = root printcap name = /etc/printcap printing = bsd load printers = yes log file = /var/log/sambalog max log size = 5000 security = user encrypt passwords = true socket options = TCP_NODELAY local master = yes os level = 254 domain master = yes preferred master = yes domain logons = yes logon script = logon.bat wins support = yes
Diese (verkürzte) Sektion definiert einen Samba-Server als primären Domänen Controller (PDC).
Das Schlüsselwort workgroup definiert die Arbeitsgruppe, aber auch die Windows-Domäne, in der dieser Server arbeiten soll. Im obigen Beispiel wurde „WORKGROUP“ gewählt, der Name kann natürlich den Anforderungen angepasst werden.
Aus Sicherheitsgründen wird per hosts allow, interfaces und bind interfaces only dafür gesorgt, dass nur Clients mit einer bestimmten IP-Adresse auf den Server zugreifen dürfen. Zudem wird der Server auf eine bestimmte Netzwerkschnittstelle gebunden (sehr nützlich, wenn der Linux-Server in mehreren Netzen vorhanden ist).
Der server string stellt nur eine kurze Beschreibung des Rechners dar. Diese wird in der Windows-Netzwerkumgebung angezeigt und hat nichts mit dem Rechnernamen zu tun.
Der Parameter add user script definiert das Anlegen eines neuen Benutzers auf Linux-Ebene, falls von Windows aus ein neuer Benutzer kreiert werden soll. Wer das darf (in der Regel nur der Benutzer root), wird mit dem Parameter domain admin group erklärt. Hier sind es also die Benutzer, die in der Gruppe root sind.
Werden den Clients auch Drucker bereitgestellt, benötigt Samba Angaben zum Drucksystem und welche Datei das Linux-Drucksystem konfiguriert. Dazu werden die Parameter load printers, printing und printcap name verwendet.
log file und max log size beziehen sich auf die Protokolldatei. Die Angaben in max log size sind in Kilobyte anzugeben (hier wurde ein recht kleine Datei gewählt).
Damit sich Benutzer anmelden können und um den Zugriff auf Freigaben über die Benutzerrechte zu steuern, wird die security auf „user“ eingestellt. Aus Sicherheitsgründen werden die Passwörter verschlüsselt akzeptiert, d.h. Windows muss die Passwörter verschlüsselt übertragen, deshalb sollte der Parameter encrypt passwords auf „true“ gesetzt sein.
Die Angabe „TCP_NODELAY“ bei der Angabe der socket options soll Samba noch eine Idee schneller machen. Der geneigte Administrator möge dies selbst ausprobieren.
Samba kann in seiner Aufgabe als PDC natürlich auch die Verwaltung der Namenslisten von im Netzwerk angemeldeten Clients übernehmen. Dazu wird unter local master, domain master und preferred master die Antwort „yes“ gegeben. Dazu wird er os level zusätzlich möglichst hoch gesetzt (254 ist der höchste Level, den ein Windows derzeit haben kann).
Dazu ist zu sagen, dass jede Windows-Version einen bestimmten OS-Level hat. Windows 95 hat ein sehr niedrigen Level, Windows 2000 einen recht hohen. Dies musste Microsoft einführen, da in einer Domäne der sogenannte Master Server, der für die Domain zuständig ist, ständig neu gewählt wird.
Die Wahl gestaltet sich folgendermaßen:
Jeder Windows-Rechner bekommt per Broadcast (Rundumaufruf im ganzen Netzwerk) den Aufruf, seinen OS-Level preiszugeben. Der Rechner mit dem höchsten Level übernimmt nach den eingehenden Antworten die Aufgabe des Master Servers. Befinden sich zwei gleichwertige Rechner im Netz, entscheidet die längere Laufzeit des Rechners. Stellt man also den Samba-Level entsprechend hoch ein, gewinnt der Samba-Server die Wahl auf jeden Fall (notfalls gewinnt er über die längere Laufzeit). Durch diese regelmäßigen Wahlen wird übrigens eine recht hohe Netzwerklast erzeugt, wenn sich entsprechend viele Windows-Rechner im Netzwerk angemeldet haben.
Zum Schluss wird dem Samba-Server mitgeteilt, dass er die Benutzeranmeldungen übernehmen soll und beim Einloggen ein DOS-Skript senden soll. Dafür zuständig sind die Paramter domain logons und logon script.
Soll der Samba-Server auch die Namen der angemeldeten Rechner verwalten, wird der Parameter wins support auf „yes“ gesetzt.
Nun müssen die Freigaben definiert werden:
[Bearbeiten] Freigaben
Um eine Freigabe zu erstellen, wird eine weitere Sektion mit dem Freigabenamen erstellt. Dieser Freigabenamen taucht dann bei den Clients in der Netzwerkumgebung auf.
Als Beispiel eine Freigabe mit dem Namen „software“, bei der jeder angemeldete Benutzer die Dateien verändern darf:
[software] comment = Public Stuff path = /samba/software public = yes writable = yes printable = no only guest = yes create mask = 0777
Der Kommentar ist nur eine kurze Erläuterung für die Benutzer.
Der Parameter path gibt an, welches Verzeichnis auf dem Samba-Server diese Freigabe darstellen soll.
Die Freigabe ist öffentlich, d.h. Benutzer können diese Freigabe sehen, sie ist auch beschreibbar. Wäre die Freigabe z.B. ein CD-ROM, würde dieser Parameter auf „no“ stehen.
Da die Freigabe kein Drucker ist, kann man über diese Freigabe auch nicht drucken.
Die Dateien, die von den Benutzern erzeugt werden, gehören auf dem Samba-Server dem Gastbenutzer, was durch den Parameter only guest = yes erzwungen wird. Dieser Gast ist meistens der Linux-Benutzer „nobody“, dies kann aber in der globalen Sektion eingestellt werden.
Die Dateirechte der erzeugten Dateien auf dem Linux-Rechner bekommen die Rechte 0777, d.h. sie sind für alle schreib-, les- und ausführbar (ausführbar zumindest für Benutzer, die sich auf dem Linux-Rechner eingeloggt haben).
Durch einen raschen Neustart des Samba-Dienstes wird diese Freigabe „aktiviert“.
[Bearbeiten] Benutzerverzeichnisse
Zusätzlich zu den normalen Freigaben, können natürlich auch die Benutzerverzeichnisse für den (geschützten) Zugriff freigegeben werden. Dazu gibt es die Freigabe homes:
[homes] comment = Home Directories browseable = no writable = yes create mask = 0755
[Bearbeiten] Betrachtung einzelner Windows-Versionen
Da es verschiedene Windows-Versionen gibt, ist verständlich und absehbar, dass diese sich bezogen auf eine Samba-Domänenaufnahme und die Zusammenarbeit mit Samba verschieden verhalten, daher hier eine kurze Übersicht, was es bei den verschiedenen Versionen zu beachten gibt:
[Bearbeiten] Windows 95
Windows 95 überträgt standardmäßig nur unverschlüsselte Passwörter. Dies kann man durch patchen der Registry mit einem Schlüssel ändern. Der Schlüssel befindet sich in der Sambadokumentation (idR unter /usr/share/doc/samba).
[Bearbeiten] Windows 98
Windows 98 kann problemlos, ohne irgendwelche Aktionen auf Samba-Seite, in die Domäne übernommen werden, indem man entsprechend den Konfigurationsdialog bei der Netzwerkkonfiguration durchläuft.
Windows 98 beherrscht verschlüsselte Passwörter, welche per Vorgabe sogar aktiv sind.
[Bearbeiten] Logon.bat
Windows kann, so fern dies in der global-Sektion aktiviert ist, Benutzerverzeichnisse einbinden. Dies wird z.B. mit der Datei „logon.bat“ erzielt, die folgendermaßen aussehen kann:
@Echo off net use U: /home net time \\athene /set /yes
In diesem Fall wird das Benutzerverzeichnis dem Laufwerkbuchstaben U zugeordnet. Und gleichzeitig die Uhrzeit des lokalen Rechners auf die des Server Athene eingestellt.
[Bearbeiten] Windows NT/2000
Möchte man Windows NT (hier spreche ich jetzt für alle NT-Varianten, also NT4, Windows 2000 und Windows XP Professional) in eine Samba-Domäne integrieren, so sind verschiedene Voraussetzungen zu schaffen:
- auf Sambaseite müssen zwingend verschlüsselte Passwörter aktiv sein
- auf dem Linux-System müssen sogenannte Maschinenkonten auf Unix-Benutzerebene angelegt werden, die den Namen der Workstation mit abschließendem $ besitzen. Beispiel: der Rechnername wäre winws01, daraus ergibt sich ein Benutzername auf Unix-Seite, der winws01$ lautet. (useradd -u 1001 -d /dev/null -s /bin/false winws01$)
- die Maschinenkonten müssen auf Sambaseite entsprechend mit der -m Option (bei Nutzung des smbpasswd) angelegt werden. (smbpasswd -am winws01$)
- es muss ein menschlicher Benutzer (also kein Maschinenkonto) mit der ID=0 (=root) im Samba angelegt werden, damit die Arbeitsstationen mit diesem Benutzer in die Domäne aufgenommen werden können.
Nachdem all diese Voraussetzungen geschaffen sind, wird im Netzwerkkonfigurationsdialog der Domänenbeitritt vollzogen, indem man entsprechend wie auch unter Windows vorgeht – einziger Unterschied: Man lässt den Haken bei „Arbeitsstationskonto erzeugen“ raus.
Nach einem Reboot sollte eine Domänenanmeldung problemlos möglich sein.
[Bearbeiten] Windows XP Professional
Bei Windows XP Professional ist zusätzlich darauf zu achten, dass die Übertragung des verschlüsselten Passwortes nicht verschlüsselt wird. Dies erfolgt dadurch, dass unter Systemsteuerung → Verwaltung → „Lokale Sicherheitsrichtlinie“ starten → Lokale Richtlinien → Sicherheitsoptionen → „Domänenmitglied: Daten des sicheren Kanals digital verschlüsseln oder signieren (immer)“ deaktiviert wird und anschließend über "Start" → "Ausführen"
gpupdate /force
aufgerufen wird, um die lokalen Gruppen- bzw. Sicherheitsrichtlinien zu aktualisieren. Ein Neustart des Systems ist bei dieser Einstellung nicht nötig.
Alternativ können die Einstellungen über eine Registry-Datei mit weiteren Optionen:
Windows Registry Editor Version 5.00 ; Windows XP Professional ; enable windows logon to samba server as domain controller (pdc) with roaming profile ; disable secure channel [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "requiresignorseal"=dword:00000000 "signsecurechannel"=dword:00000000 ; disable check for user ownership of Roaming Profile Folders [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System] "CompatibleRUPSecurity"=dword:00000001
geändert werden. Nach Einbringung dieser Datei in die Registrierung ist eine Neustart allerdings notwendig.
[Bearbeiten] Windows XP Home
Windows XP Home ist nicht in eine Samba-Domäne integrierbar, auch wenn es immer wieder gegenläufige Gerüchte gibt, dass dies doch Mittels irgendwelcher Spezialprogramme und Registry-Schlüssel funktionieren würde.
Es hat sich sogar herausgestellt, dass diese Spezialprogramme nichts ausrichteten, außer einen Trojaner auf dem System zu installieren, es also sozusagen sogar krimineller Natur sein konnte, diese Datei zu empfehlen.
Das einzige, was man als XP Home-Nutzer tun kann, ist, dass man lokale Benutzer anlegt, die exakt die gleichen Daten (Benutzername & Passwort) besitzen, wie das Benutzerkonto im Samba und anschließend die Freigaben als Netzwerklaufwerke benutzen.
Durch diese Aktion werden wenigstens Teilbereiche der Domänenfunktionalität genutzt, die wichtigsten, die die Domäne von der Arbeitsgruppe jedoch unterscheiden (nämlich zentrales Workstation- und Benutzerverwaltung) fallen weg.
Man kann allerdings auf SMB-Freigaben zugreifen, wenn man die Verbindung über die Eingabeaufforderung mit dem Kommando „net use“ herstellt (Details dazu auf der Microsoft-Seite)
Beispiel: Computer mit Windows XP Home (aktueller Patchlevel Juli 2007), Samba-Server 3.0.23 (openSUSE 10.2) auf dem Computer „video“ mit der Freigabe „Gemeinsam“, die für den Linux-Benutzer „andreas“ freigegeben ist.
Um das Netzwerklaufwerk W: zu verbinden, in der Eingabeaufforderung (Start → Alle Programme → Zubehör → Eingabeaufforderung) eintippen:
net use G: \\video\Gemeinsam * /user:andreas
[Bearbeiten] Windows Vista
[Bearbeiten] OS-Detection im Login-Skript
Betreibt man mehrere verschiedene Windows-Versionen in einer Samba-Domäne, ist es oftmals interessant zu wissen, an welcher Windows-Version der Benutzer angemeldet ist, um dann OS-spezifische Teile des Login-Skriptes abfahren zu können, denn oftmals verhalten sich verschiedene Windows-Versionen sehr unterschiedlich, was z.B. den Namen von Registry-Schlüssel etc. angeht.
Hier deshalb ein Beispielskript, mit dem man die gängigsten Windows-Versionen herausfinden kann und entsprechend im Skript separat behandeln kann:
:: detecting for xp VER | FIND "5.1.2600" > nul IF NOT ERRORLEVEL 1 GOTO XP VER | FIND "5.10.2600" > nul IF NOT ERRORLEVEL 1 GOTO XP :: detecting for 2000 VER | FIND "5.00." > nul IF NOT ERRORLEVEL 1 GOTO 2000 :: detecting for me final retail,oem and upgrade VER | FIND ".90." > nul IF NOT ERRORLEVEL 1 GOTO WINME :: detecting for all 98,98sp1,98se retail and oem VER | FIND ".10." > nul IF NOT ERRORLEVEL 1 GOTO WIN98 :: detecting for 95 final retail and oem VER | FIND "4.00.0950" > nul IF NOT ERRORLEVEL 1 GOTO WIN95 :: detecting for 95a osr1 final update VER | FIND "4.00.0951" > nul IF NOT ERRORLEVEL 1 GOTO WIN95 :: detecting for 95b osr2 final oem VER | FIND "4.00.1111" > nul IF NOT ERRORLEVEL 1 GOTO WIN95 :: detecting for 95b osr2.1 final update VER | FIND "4.03.1212" > nul IF NOT ERRORLEVEL 1 GOTO WIN95 :: detecting for 95b osr2.1 final oem VER | FIND "4.01.0971" > nul IF NOT ERRORLEVEL 1 GOTO WIN95 :: detecting for 95c osr2.5 final oem VER | FIND "4.03.1214" > nul IF NOT ERRORLEVEL 1 GOTO WIN95 :: detecting for nt VER | FIND "4.0" > nul IF NOT ERRORLEVEL 1 GOTO NT IF ERRORLEVEL 1 GOTO UNKNOWN
Nach diesem Block sind nun die einzelnen Sprungmarken anzulegen und mit entsprechend OS-abhängigem Code zu füllen.

