Aus Linux-Magazin 05/2006

Samba 4 - die ersten Eindrücke

© photocase.com

Von Samba 4 existiert seit Ende Januar nur eine erste Technical Preview. Doch lässt der Quellcode der Neuimplementation schon ahnen, dass es keine Trippelschrittchen sind, die die Entwicklung macht.

Sambas Hauptaufgabe bleibt über alle Versionen gleich: freigegebene Windows-Ressourcen Unix-artigen Betriebssystemen bereitzustellen und umgekehrt [1]. Dumm nur, dass die Basis beweglich ist: Microsoft, in der Herausgabe von Spezifikationen nicht eben Weltmeister, entwickelt seine Protokolle von Windows-Version zu -Version weiter. Die Open-Source-Entwickler halten dagegen, indem sie Verbindungen mit Tools wie Ethereal mitschneiden [2].

Das hat in der Vergangenheit gut funktioniert, wie die vielen Samba-Server auf der Welt beweisen. Mit Windows 2000 legte Microsoft eins drauf und setzte als Trend einen objektbasierten Verzeichnisdienst in die Server-Landschaft: Active Directory Service (ADS, [3]).

Anders als sonst griff der Softwareriese dabei in die Kiste mit der Aufschrift “Etablierte Standards”: Die Entwickler koppelten eine LDAP-Benutzerdatenbank mit Kerberos 5 als Authentifizierungsmechanismus. Zur Namensauflösung setzen sie auf DNS. Der Umstand, dass ADS sich weitgehend an echte Standards hält, gestattet Linux ein hohes Maß an Interoperabilität dank freier Implementierungen wie OpenLDAP und Kerberos-Versionen des MIT oder von Heimdal [4].

Entschlackungskur

Die Funktionalität eines Samba-Directory-Servers analog zu Microsofts Active Directory zu erlangen ist ein zentrales Anliegen von Samba 4, das seit Ende Januar in einer sehr frühen Version vorliegt. Das Team wählte dafür den radikalen Schritt einer Neuimplementierung der meisten Routinen. Ziel ist, Samba 4 ohne den Workaround-bedingten Ballast der früheren Versionen aufzusetzen. Folglich entfallen auch diverse Optionen, die in Samba 3 unverzichtbar sind.

Bereits Samba 3 bietet die Möglichkeit, eine Installation als Domain Member Server in einer Windows-2000/2003-Domäne zu betreiben. Technisch hantiert der Member-Server zur Authentifizierung mit Kerberos-Tickets: Sowohl Server als auch Clients (mit Tools wie »smbmount«) tauschen ihre Tickets aus und praktizieren so ein Domänen-weites Single-Sign-On zwischen Linux und Windows. Den Betrieb als Primary Domain Controller oder Backup Domain Controller (PDC, BDC) beherrscht Samba 3 trotz Kerberos aber nur im Windows-NT-Style.

Mit eigenem Kerberos ist erstmals Samba 4 in der Lage, die Funktion eines Domänen-Controllers im aktuellen Microsoft-Style auszuüben (siehe unten). Die Kerberos-Implementierung geht auf die Heimdal-Variante zurück, an ihr hat sinnigerweise auch Heimdal-Entwickler Love Astrand mitgearbeitet. Später soll es auch möglich sein, externe Kerberos-Bibliotheken zu betreiben.

Ein Samba-3-Manko ist die fehlende Replikation von Benutzerdaten mit Samba-eigenen Datenbanken (siehe Kasten “Samba4WINS”). Einen pfiffigen Umweg, OpenLDAP als Datenbank-Backend zu betreiben, wählt [5]. Da OpenLDAP seine Datenbank an andere Server seiner Art replizieren kann, schoben die Samba-3-Entwickler das Thema damals zur Seite. Dabei ist die Konfiguration eines OpenLDAP-Servers alles andere als trivial. Das Samba-4-Team um Andrew Tridgell tritt die Flucht nach vorn an und implementiert mit der LDB gleich ein eigenes LDAP-Backend.

Samba4WINS

Der Windows Internet Naming Service (WINS) ist ein Relikt aus NT-4-Zeiten. Gleichwohl verwenden auch neuere Windows-Systeme das WINS-Protokoll für die Auflösung von Netbios-Namen. Beim Mappen einer Freigabe findet dieser nach den ersten Backslashes beziehungsweise Slashes Verwendung. Auch Samba unterstützt Netbios seit langem, da es den interoperablen Serverbetrieb erledigt. Mit Samba 4 ändert sich daran wenig.

Es besteht aus den Firmen Sernet, Computacenter und Fujitsu Siemens Computers sowie dem Linux Solutions Group e.V. Samba4WINS soll künftig nahtlos in Samba 4 integriert werden. Für Samba ab Version 3.0.21 lässt sich die Software hinzukompilieren und als eigenständiger Prozess betreiben.

Ein wichtiger Grund für eine eigene LDAP-Implementierung ist die bessere Replikation. Beispielsweise sollen sich Passwortänderungen sofort zwischen allen beteiligten Rechnern herumsprechen, um keinen Freiraum für Replikationsinkonsistenzen zu bieten. Dem Vernehmen nach wird sich Samba 4 bei Bedarf aber weiterhin an OpenLDAP-Server anbinden, insbesondere um in Samba-3-betriebenen Serverlandschaften eine Heimstatt zu bieten.

CIFS, NTFS- und Posix-ACLs

Samba will nicht nur in heterogenen Umgebungen tanzen, sondern auch in die Domäne von NFS – Datenaustausch zwischen Unix- und Linux-Systemen – einbrechen, auch als Konkurrent für das noch nicht vollständig entwickelte NFS 4. Dies Bemühen lässt sich in den CIFS-Kernelmodulen erkennen, die von Version zu Version mehr Erweiterungen enthalten. Ein Beispiel sind die CIFS-Experimental-Features, die seit Version 2.6.16 auch Kerberos unterstützen. Es war ein großes Manko gegenüber Windows SMB, bei dem das Mounten von Freigaben durch Anhängen der Option »-o krb« via Single-Sign-On erlaubt ist.

Schon länger kann Samba bei der Zugriffsrechteverwaltung Posix-ACLs auf NTFS-ACLs abbilden und umgekehrt. Version 4 geht auch hier neue Wege und legt NT-ACLs nicht mehr im Posix-Dateisystem ab, sondern führt dafür ein virtuelles Dateisystem ein: NTVFS, das NTFS-Attribute eins zu eins speichert. Es ist sogar in der Lage, ACLs innerhalb von NTFS-Datenströmen vollständig nachzubilden. Alternate Data Streams (ADS) sind eine Funktion in NTFS-Dateisystemen, die zu einer Datei unsichtbar weitere Daten speichert. Ein verwandtes Thema sind Gruppenrichtlinien, zu denen bisher nicht bekannt ist, wie sie einen Platz in Samba 4 finden.

Primary Domain Controller zum Probieren

Nach dem Entpacken der Quellen von Samba 4.0.0tp1, zu erhalten unter [7], findet sich im Projektbaum die Datei »howto.txt« mit einigen nützlichen Informationen für den Betrieb. Nach dem Kompilieren ist das Initialisieren der Datenbasis nötig. Das erledigt das Tool »provision«, das die LDAP-Datenbank, die Registry und vorgefertigte Einträge für den Zugriff auf die LDB- und Kerberos-Dienste für einen DNS-Server anlegt (siehe Abbildung 1). Die Einträge für den DNS-Server muss der Admin per Hand in die jeweilige Zone einpflegen. Provisions Windows-Pendant ist »dcpromo«.

Abbildung 1: Das Tool Provision initialisiert die Datenbasis Sambas. Ein Provision ist auch mit Swat möglich.

Abbildung 1: Das Tool Provision initialisiert die Datenbasis Sambas. Ein Provision ist auch mit Swat möglich.

Provision erzeugt ebenfalls eine minimal konfigurierte »smb.conf«. Wer dem Configure-Skript als Prefix »/usr« mitgibt, findet die Konfigurationsdatei unter »/usr/lib«. Zur besseren Überwachung lässt sich der Samba-Daemon mit »smbd -i -M single« in einen interaktiven Modus schalten, der Meldungen auf Stdout ausgibt. Samba 4 arbeitet in drei Prozessmodi: als einzelner Prozess (single), als threaded- oder als mehrprozessige Variante. Ist der Daemon aktiv und ein Beispiel-Share eingerichtet, spuckt »testparm« Listing 1 aus.

Listing 1: Testparm-Ausgabe
»smb.conf«

01 # Global parameters
02 [global]
03      server role = pdc
04      workgroup = TESTDOMAIN
05      realm = TESTDOMAIN.ORG
06      netbios name = LINUX
07      log level = 2
08      registry:hkey_users = hku.ldb
09      registry:hkey_local_machine = hklm.ldb
10      comment =
11      path =
12      ntvfs handler = unixuid, default
13      read only = Yes
14      hosts allow =
15      hosts deny =
16      max connections = -1
17      strict sync = No
18      case insensitive filesystem = No
19      max print jobs = 1000
20      printable = No
21      printer name =
22      map system = No
23      map hidden = No
24      map archive = Yes
25      browseable = Yes
26      csc policy = manual
27      strict locking = Yes
28      copy =
29      include =
30      available = Yes
31      volume =
32      fstype = NTFS
33      msdfs root = No
34 
35 [data]
36      path = /export/data
37      read only = No
38      hosts allow =
39      hosts deny =
40 
41 [IPC$]
42      comment = IPC Service (Samba 4.0.0tp1)
43      path = /tmp
44      ntvfs handler = default
45      hosts allow =
46      hosts deny =
47      browseable = No
48      fstype = IPC
49 
50 [ADMIN$]
51      comment = DISK Service (Samba 4.0.0tp1)
52      path = /tmp
53      hosts allow =
54      hosts deny =
55      browseable = No
56      fstype = DISK

Laut Samba-Team ist die Version 4.0.0tp1 so weit, die Funktion eines PDC zu übernehmen. Nach dem erfolgreichen Einfügen der DNS-Einträge, spricht nichts dagegen, eine Windows-Maschine in die Samba-Domäne zu hängen – im Test war dies ein Windows 2003 Server als Member-Server. Nach Angabe der Domäne und dem Wunsch, in diese zu wechseln, macht das Windows 2003 auch ohne Probleme (siehe Abbildung 2).

Abbildung 2: Die erfolgreiche Anmeldung von Windows 2003 Server als Member-Server in einer Samba-4-Domäne.

Abbildung 2: Die erfolgreiche Anmeldung von Windows 2003 Server als Member-Server in einer Samba-4-Domäne.

Gehobenes Management

Verändert, wegen Kerberos und LDAP erweitert und im Bedienkomfort verbessert hat sich das Systemmanagement. Swat – bekannt, aber selten eingesetzt – erlebt eine Wiederbelebung: Die Browser-basierte Bedienkonsole ist integraler Bestandteil der Samba-Suite. Sobald der Samba-Daemon läuft, bildet ein kompakter Embedded-Webserver von Appweb [8] die Basis für Swat. Damit entfällt das früher nötige Swat-Setup, es ist sofort nach dem Starten des Daemon über einen Browser erreichbar.

Einiges fehlt Swat noch, um eine vollwertige Verwaltung zu sein. Um zu sehen, was Samba 4 als PDC kann, reicht es aber allemal. Anfänglicher Benutzer ist der Administrator, der sich an den Windows-Clients anmeldet. Swat bietet aber die Möglichkeit, einen weiteren Benutzer hinzuzufügen.

Meldestelle einrichten

Eine alternative Variante wäre, dies über die zahlreichen Konsolen-Tools zu erledigen; in diesem Fall mit »ldbadd«. Allerdings verlangt »ldbadd« einen LDIF-kodierten Benutzer. Da Swat das ebenso erledigt, zeigt Abbildung 3, wie man einen neuen Benutzer der Domäne hinzufügt. Bei der ersten Anmeldung jedes Benutzers verlangen Sambas Registry-Einstellungen, das Passwort zu ändern. Passwort-Richtlinien lassen sich (noch) nicht mit Swat einstellen.

Abbildung 3: Mit Swat lässt sich ein LDIF-kodierter Benutzer Domänen-weit einrichten, mit einem der Konsolentools von Samba ginge das natürlich ebenso gut.

Abbildung 3: Mit Swat lässt sich ein LDIF-kodierter Benutzer Domänen-weit einrichten, mit einem der Konsolentools von Samba ginge das natürlich ebenso gut.

Wenn die Anmeldung funktioniert, ist der Benutzer auch in der Samba-LDB-Datenbank gespeichert. Wer diese Einträge prüfen oder verändern möchte, greift auf »ldbedit« oder »ldbsearch« zurück. Das erste Tool öffnet im favorisierten Editor die Datenbank, in der ein Benutzer nach einem Eintrag suchen und diesen verändern kann. Die Arbeit mit »ldbsearch« zeigt Abbildung 4.

Abbildung 4: Das Samba-Konsolentool »ldbsearch« findet einen Benutzer.

Abbildung 4: Das Samba-Konsolentool »ldbsearch« findet einen Benutzer.

Schon Samba 3 besaß die sehr nützliche Möglichkeit, einen Windows-NT-Server samt Domäne freundlich zu übernehmen, Samba 4 vermag das natürlich auch. (Zusätzlich kann der Admin in Swat eine Samba-3-Domäne in eine mit Samba 4 umwandeln.) Dieser Vampir-Modus beschränkt sich nicht mehr auf Windows NT, sondern funktioniert auch mit Windows 2000/2003 Server. Abbildung 5 zeigt die erfolgreiche Übernahme einer Windows-2003-Domäne. Um zu überprüfen, ob das Protokoll nicht zu optimistisch war, sucht »ldbsearch« nach einem Benutzer in der LDB-Datenbank von Samba und prüft, ob er sich in der Windows-Domäne auffinden lässt.

Abbildung 5: Das Swat-Protokoll der erfolgreichen Übernahme einer Windows-2003-Domäne.

Abbildung 5: Das Swat-Protokoll der erfolgreichen Übernahme einer Windows-2003-Domäne.

»smb.conf« editieren

Das klassische Editieren der Konfigurationsdatei ist natürlich weiterhin ein probates Mittel fürs Feintunig. Nur hat sich die Fülle an Optionen merklich erhöht. Dafür fallen einige der in Samba 3 enthaltenen Optionen weg. Welche ist noch unklar, zumindest einige dienen wohl zuzeit als Workaround für Probleme im interoperablen Betrieb.

Neue Schlüsselwörter beschreiben den Zustand und das Verhalten des KDC wie beispielsweise »kpasswd port« oder »krb5 port«. Die Option »paranoid server security« legt einen Sicherheitsstandard fest, während »ntvfs handler« bestimmt, wie der NTVFS-Layer arbeiten soll. Der Standardwert ist »ntvfs handler = unixuid«, er gleicht Dateioperationen mit dem Posix-Dateisystem darunter ab.

Mit »ntvfs handler = cifs« kann ein Samba-Server auch als CIFS-Gateway fungieren und eine Datei-Anfrage an einen anderen CIFS-Server weiterreichen. Ist der Gateway ein Domain-Member-Server, darf er das Ticket eines anfragenden Benutzers oder Dienstes weiterleiten:

[extdata]
  ntvfs handler = cifs
  cifs:server = nextserver
  cifs:share = shared

Bisher gibt es nur wenige Backends für NTVFS. Neben den erwähnten findet sich im Quelltext »simple«, das alle Dateioperationen als Root ausführt und darum kaum brauchbar ist. Wer mehr über die »samba.conf« wissen will, wird in »source/param/loadparm.c« fündig.

Erst mal Finger weg

Alles in allem sieht es derzeit so aus, als ob Samba 4 der große Befreiungsschritt gelingt. Neben LDAP und Kerberos verarbeitet die Software auch ACLs jenseits von Posix und bildet letztlich einen eigenen Active-Directory-Server nach. Die Replikation von WINS-Servern übernimmt das Samba4WINS-Projekt. Zur Skalierung sind drei Modelle wählbar: als einziger Prozess, mehrprozessig wie in Samba 3 oder als Threaded-Variante.

Doch Achtung: Die vorliegende Technical Preview dient den Entwicklern primär zur Evaluierung neuer Methoden. Sie hat bei weitem nicht alle Funktionen an Bord, die für einen regulären Betrieb nötig wären, so fehlt die Druckunterstützung. Bis zur Fertigstellung – laut einer Pressemitteilung nicht vor dem Sommer – rät das Team davon ab, Samba 4 produktiv einzusetzen. Entwicklerkreise gehen davon aus, dass auch Features von Version 4 in Samba 3 rückfließen.

Nicht nur Version 4 hält die Samba-Entwickler auf Trab, sondern auch das undokumentierte SMB 2 von Windows Vista, das mit einer ganz neuen Struktur aufwartet. Sollte das EU-Kartellverfahren gegen Microsoft die Firma nicht zur Offenlegung von Schnittstellen bewegen, darf sich das Samba-Team der Techniken von früher erinnern: mit Ethereal den Datentransfer mitschneiden. (jk)

Infos

[1] Samba: [http://samba.org]

[2] V. Lendecke, “Mit fremden Fenstern schmücken”: Linux-Magazin 01/05, S. 48

[3] Active Directory: [http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/activedirectory/default.mspx]

[4] M. Klimke, “Fenster-Öffnung – Zentrale Benutzerverwaltung für Linux-Clients im Active Directory”: Linux-Magazin 05/05, S. 48

[5] J. Kühnel, “Ausfallsichere Samba-Domäne dank Nutzerdatenreplikation mit OpenLDAP”: Linux-Magazin-Sonderausg. 03/05, S. 24

[6] Samba4WINS: [http://EnterpriseSamba.org/index.php?id=88]

[7] Samba 4.0.0tp1: [http://devel.samba.org/samba/ftp/samba4/]

[8] Appweb Embedded Webserver: [http://www.appwebserver.org]

Der Autor

Markus Klimke ist Mitarbeiter am Institut für Modellierung und Berechnung an der Technischen Universität Hamburg-Harburg.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben