Linux als Windows-Server mit Samba 2

22.01.2002 von Konstantin Pfliegl und Oliver Müller
Linux ist für den Einsatz als Server geradezu prädestiniert. Sogar im Windows-Netzwerk ist Linux dank Samba eine ernst zu nehmende Alternative zu Windows NT/2000.

Wer ein Netzwerk mit Windows NT/2000 als Server aufsetzen will, muss zunächst einmal viel Geld investieren. Allein die Lizenz für fünf Benutzer kostet mehr als Tausend Euro. Dabei benötigen die meisten kleinen Netze nicht alle Funktionen, die der NT-Server bietet. Oft kommen nur die File- und Print-Dienste zum Einsatz, also die gemeinsame Nutzung von Dateien auf dem Server oder eines zentralen Netzwerkdruckers. Mit dem Samba-Server von Linux lässt sich dasselbe Ziel für deutlich weniger Geld erreichen. Aktuelle Linux-Distributionen sind für rund 50 Euro zu haben und die Hardware-Anforderungen von Linux sind deutlich niedriger als von Windows NT und 2000. Für einfache File- und Print-Dienste genügt ein Rechner mit Pentium-Prozessor und 64 MByte Speicher. Das reicht aus, um beispielsweise Office-Dokumentvorlagen zentral abzulegen oder einen Drucker für alle Mitarbeiter bereitzustellen.

Samba ist ein System, das Unix-kompatible Computer in Windows-Netzwerke einbindet. Für Furore sorgt dieses System nicht zuletzt durch den Linux-Boom. Das Open-Source-Betriebssystem - ohnehin als stabil und zuverlässig bekannt - lässt sich durch Samba als waschechter Server in ein Windows-Netz einbinden. Dabei stellt sich das Gespann aus Linux und Samba im Netzwerk wie ein NT-Server dar. Somit kann das Linux-System als File- und Printserver für Windows- und andere Samba-Clients dienen. Die Clients bemerken den Unterschied zu einem NT-Server nicht.

Wenn man die Entwicklung von Linux betrachtet und neue Features wie Journaling-Dateisysteme oder Unterstützung für 4 GByte Arbeitsspeicher berücksichtigt, wird Linux auch für größere Netzwerke interessant. Es muss nicht immer der teure NT-Server sein.

Dieser Beitrag gibt einen Einblick in die grundlegende Konfiguration und den Einsatz von Samba als Primary Domain Controller (PDC). Im aktuellen Update haben wir ihn an die Gegebenheiten der aktuellen Samba-Version 2.2.2 angepasst.

Was ist Samba?

Samba ist eine Implementation des SMB-Protokolls für Unix. Über Server Message Blocks kommunizieren Rechner in einem Windows-Netzwerk miteinander und tauschen Informationen über freigegebene Verzeichnisse, Drucker oder Kommunikations-Schnittstellen aus. In der ursprünglichen Version benötigte SMB NetBEUI als Transportprotokoll. Inzwischen kommt jedoch meist TCP/IP zum Einsatz.

Voraussetzungen für Samba

In den meisten Linux-Distributionen ist Samba enthalten, wird jedoch nicht immer automatisch mitinstalliert. Um das nachzuholen, verwenden Sie den Paket-Manager Ihrer Distribution, beispielsweise Yast bei SuSE. Wenn Sie eine ältere Distribution haben, sollten Sie sich die aktuelle Samba-Version 2.2.2 von Samba aus dem Internet holen und installieren. Zusätzlich ist es notwendig, den SMB-Dienst im Startskript von Linux zu aktivieren. Bei der SuSE-Distribution setzen Sie in /etc/rc.config die Variable START_SMB auf yes.

Der Samba-Server 2.2.x basiert auf zwei Daemons: smbd, der sich um die Share-Zuteilung kümmert und nmbd, der die Namensdienste bereitstellt. Bei der Verwendung von Samba müssen beide Daemons gestartet sein.

Was kann ein Samba-Server?

Auch die aktuelle Samba-Version 2.2.2 ist nicht in der Lage, alle Eigenschaften einer proprietären Windows NT-Domain bereitzustellen. So kann ein Samba-Server zwar mittlerweile einen Primary Domain Controller (PDC) ersetzen, kann aber nicht die Aufgabe eines Backup Domain Controllers übernehmen. Allerdings kann dies nicht als Fehler interpretiert werden. Die Entwickler von Samba können nur Eigenschaften implementieren, deren Funktionsweise und Protokolle vollständig bekannt sind. Leider gibt Microsoft bestimmte Protokolle nicht frei. Diese können als Konsequenz nicht implementiert werden. Deshalb kann Samba auch einen Exchange-Server auf Grund fehlender Protokolle nicht vollständig ersetzen.

Folgende Eigenschaften eines PDC kann ein Samba-Server der Version 2.2.2 abdecken:

NT-Domain bevorzugt

Für die Aufgabe, Linux als File- oder Printserver einzusetzen, soll der Samba-Server eine NT-Domain bereitstellen, in der sich die Windows-Clients anmelden. Eine Domain sollte es deshalb sein, weil das Peer-to-Peer-Konzept von Windows erhebliche Sicherheitslücken aufweist.

Die traditionelle Arbeitsgruppe von Windows 9x akzeptiert beim Netz-Log-in jeden Benutzernamen und jedes Passwort, da Windows 9x keine unautorisierten User kennt. Sobald Sie eine unbekannte Benutzerkennung eingeben, fragt Windows nach dem Passwort für diesen neuen User und legt ihn kurzerhand an. Nur wenn Sie auf einen passwortgeschützten Share im Netz zugreifen, wird das eingegebene Passwort verwendet beziehungsweise ein neues abgefragt. Öffentliche Ressourcen, wie für die gesamte Gruppe ohne Passwortschutz freigegebene Dateisysteme und Drucker, kann somit jeder Anwender oder Hacker nutzen.

Die Anmeldung an einer Domain ist hingegen sicherer. Hier wird ein Login nur akzeptiert, wenn Sie eine gültige Benutzerkennung und das entsprechende Passwort eingeben. Sollten Sie das Log-in abbrechen, kann kein Zugriff aufs Netz (und damit auch nicht auf öffentliche Freigaben des Domainservers) erfolgen. Die Anmeldung an einer Domain ist somit vergleichbar mit dem Log-in in ein Unix-System. Zudem lässt sich auf Grund des Benutzerkonzepts der Zugriff auf die Freigaben im Netz wesentlich zielgerichteter steuern.

Die Rechte auf Netzressourcen werden auf Benutzer- und Gruppenebene erteilt. Mit anderen Worten: Es erfolgt nur eine Authentifizierung - nämlich beim Log-in. Der Benutzer meldet sich auf dem Server an, womit alle Rechte im Netzwerk oder in der Domain festgelegt sind. Das ist effizienter als die einzelnen Freigaben mit Passwörtern abzusichern, für die immer wieder eine neue Authentifizierung über das Netz stattfinden muss. Bei Zugriffen auf die Ressourcen kostet das unnötig Zeit und verursacht zusätzlich Netzwerkverkehr. Zudem ist die Verwaltung der verteilten Shares und Rechte nicht nur unübersichtlich, sondern auch noch fehleranfällig. Wenn sich in der Firma Strukturen ändern oder Mitarbeiter ausscheiden, bestehen im schlimmsten Fall noch alte Freigaben, die ein erhebliches Sicherheitsloch darstellen.

Grundlegende Konfiguration

Voraussetzung für den Einsatz von Samba ist, dass im Windows-Netzwerk TCP/IP statt NetBEUI als Transportprotokoll für SMB verwendet wird. Die 32-Bit-Varianten von Windows machen hier keine Probleme. Sie liefern von Haus aus TCP/IP-Stacks mit. Lediglich Windows for Workgroups muss durch zusätzliche Software auf die Sprünge geholfen werden, die Microsoft auf seinem FTP-Server kostenlos bereitstellt.

Des Weiteren sollten Sie sicherstellen, dass der Samba-Server der Primary Domain Controller (PDC) für die betreffende Domain ist. Die Domain, die Sie dem Samba-Server zuweisen, dürfen Sie an kein anderes Serversystem vergeben.

Unix-üblich erfolgt die Konfiguration von Samba über Konfigurationsdateien. Da nicht jeder Administrator sich mit diesen Konfigurationshürden kryptischer ASCII-Dateien auseinander setzen will, existieren eine ganze Reihe von grafischen Frontends zum Einrichten eines Samba-Servers. Die Grundlagen, die dieser Abschnitt erläutert, können Sie ohne Schwierigkeiten auf die grafischen Oberflächen übertragen. Schimpfen Sie dennoch nicht über die Textfiles, denn damit haben Sie ein mächtiges Feature zur Verfügung, das die grafischen Oberflächen und Windows nicht bieten: Suchen&Ersetzen. Globale Änderungen lassen sich damit in Sekundenschnelle ausführen, etwa Pfadänderungen für alle Shares, weil sich die Verzeichnisstruktur geändert hat.

smb.conf: Zentrale Konfigurationsdatei

Für die Konfiguration eines Samba-Servers ist die Datei /etc/smb.conf die zentrale Anlaufstelle. Hier findet sich die Basiskonfiguration, wie beispielsweise Einstellungen zu Sicherheit, Domain oder Zugriff, sowie Abschnitte für die einzelnen Freigaben.

Die Datei ist ähnlich aufgebaut wie eine .ini-Datei unter Windows. Einzelne Sektionen beginnen mit in eckigen Klammern gefassten Überschriften. Im Anschluss folgen die Einstellungen paarweise in der Form Eigenschaft = Wert. Die grundlegende Konfiguration von Samba finden Sie im Abschnitt [global].

Die restlichen Sektionen legen die einzelnen Freigaben fest. Hierbei wird der Name des Shares als Abschnittstitel in eckige Klammern gefasst. Die einzelnen Eigenschaften, wie Dateipfad oder Zugriffsrechte, legen Sie im Folgenden durch Eigenschaften-Wertepaare an.

Reserviert sind die Abschnitte [printers] und [homes]. printers definiert die Eigenschaften für die Freigabe aller Drucker aus /etc/printcap. Der Abschnitt homes legt fest, wie die Home-Verzeichnisse der Benutzer freigegeben werden sollen.

Nach jeder Änderung in der Datei /etc/smb.conf muss Samba neu gestartet werden. Damit ermöglicht man dem Server, die Konfigurationsdatei erneut einzulesen. Unter SuSE-Linux geben Sie dazu in der Kommandozeile folgenden Befehl ein:

rcsmb restart

Die erste Domain

Wenn Sie die Samba-Pakete Ihrer Distribution installieren, finden Sie bereits eine durch Kommentare (eingeleitet durch ; oder #) gut dokumentierte /etc/smb.conf vor. So manche Einstellung lässt sich schon auf Grund dieser Kommentare durchführen.

Um einen Samba-Server, der als Alternative zum Windows-Server fungiert, zu konfigurieren, sind ein paar Einstellungen unter [global] erforderlich. Zunächst ist die Eigenschaft Workgroup mit dem Namen der Domain zu belegen. Angenommen Ihre Domain soll den Namen "Vertrieb" erhalten, so ändern Sie die entsprechende Zeile wie folgt ab:

workgroup = Vertrieb

Im nächsten Schritt setzen Sie domain logins auf yes. Wenn dieser Parameter mit dem Wert true belegt ist, beantwortet Samba auch Windows 9x-Domain Log-ons der Workgroup, zu welcher der Server gehört. Zusätzlich muss der Zugriff auf User-Ebene aktiviert werden. Dies bewirkt, dass sich der Client nur mit einer gültigen Benutzername/Passwort-Kombination beim Server anmelden kann. Hierzu setzen Sie security auf user. Der Security Level ist einer der wichtigsten Einstellungen innerhalb der /etc/smb.conf-Datei. Diese Option kann nur global festgelegt werden, da jeder Server nur eine Art der Sicherheit kennt.

domain logons = yes
security = user

Wie bereits erwähnt, unterstützt Samba nicht nur Domain-Log-ins, sondern kann auch in alter Windows-Peer-to-Peer-Manier für die Freigaben auf Share-Basis konfiguriert werden. Hierzu wäre security auf share zu setzen.

Verschlüsselte Passworte

Seit Windows NT 4.0 Service-Pack 3 wird nur noch ein Log-in mit verschlüsseltem Passwort unterstützt. Anders gesagt: Das Passwort wird nicht mehr im Klartext über das Netz gesendet. Windows 9x-Clients (ab Version 95b) sind auf dieses Verfahren vorkonfiguriert. Auch Samba unterstützt dieses Verfahren, so dass Sie es lediglich aktivieren müssen (und sollten!):

encrypt passwords = yes

Für Domain-Log-ins benötigen Sie einen speziellen Share namens netlogon. Tragen Sie zu diesem Zweck in /etc/smb.conf folgende Zeilen ein beziehungsweise modifizieren die bereits existierenden Zeilen entsprechend:

[netlogon]
comment = Domain Logon
path = /home/netlogon
public = no
writable = no
browseable = no

Durch diese Einträge wird ein schreibgeschützter, nicht öffentlicher und nicht in der Browser-Liste von Windows erscheinender File-Share angelegt. Stellen Sie sicher, dass das Verzeichnis /home/netlogon existiert. Legen Sie es gegebenenfalls durch den Befehl mkdir /home/netlogon auf der Shell an.

Benutzerverwaltung

Die Benutzerkonzepte von Linux und Windows sind grundsätzlich verschieden. Daher kann auf der Windows/SMB-Seite des Samba-Servers nicht direkt mit Linux-Usern gearbeitet werden. Als Lösung des Problems bildet Samba daher die SMB-Benutzer auf Linux-User ab. Die Zugriffsrechte auf die freigegebenen Ressourcen legen Sie mit Usern und Groups unter Linux fest. Das Log-in erfolgt dagegen über SMB-Benutzer. Sie weisen lediglich den Linux-Usern einen SMB-Benutzer zu. Außerdem sind die Passwörter auf Grund der Windows-Verschlüsselung zu konvertieren. Bei beiden Aufgaben helfen Ihnen die Programme smbpasswd und smbadduser.

Zunächst unterscheiden sich unter Linux und Windows festgelegte Benutzer. So ist der Name des Super-User unter Linux "root" und unter Windows in der Regel "Administrator". Damit Sie nun nicht für jeden SMB-Benutzer jeweils einen Linux-Account einrichten müssen, können Sie einen oder mehrere SMB-Benutzer auf einen Linux-User abbilden. Die dafür zuständige Datei legen Sie im Abschnitt [global] mit

username map = /etc/smbusers

fest. In diesem Beispiel wird /etc/smbusers als Datei für das Mapping von Linux- auf SMB-User verwendet.

Windows-Nutzer und Linux-Nutzer

Um nun beispielsweise den NT-Administrator auf root abzubilden, geben Sie in dieser Datei die Zeile

root = Administrator

an. Wollen Sie mehrere SMB-Nutzer auf einen einzigen Linux-User festschreiben, geben Sie einfach hinter dem Gleichheitszeichen eine durch Leerzeichen getrennte Auflistung der gewünschten SMB-Benutzer an. Sollte ein Benutzername selbst Leerzeichen enthalten, ist dieser in Anführungszeichen zu fassen. Den SMB-Nutzern weisen Sie über das Programm smbpasswd Passwörter zu. Zum Beispiel legt der Befehl

smbpasswd oliver

das Passwort für das Windows-Netzwerk für den Benutzer "Oliver" fest. Das hat keine Auswirkung auf das Kennwort eines möglicherweise vorhandenen Linux-Users gleichen Namens.

Um einen SMB-Nutzer festzulegen und in einem Schritt gleich das Passwort für diesen zu vergeben, können Sie das Programm smbadduser verwenden. Hier geben Sie als Parameter den Linux-User und den SMB-Benutzer zusammengefasst durch einen Doppelpunkt an, zum Beispiel:

smbadduser root:Administrator

Wenn Sie mit NT-Clients auf den Samba-Server zugreifen wollen, ist zusätzlich für jeden dieser Clients ein Maschinenkonto anzulegen. Wollen Sie beispielsweise den NT-Rechner "Theodor" an der Samba-Domain anmelden, legen Sie mit

smbpasswd -a -m Theodor

ein Maschinenkonto für diesen Rechner an.

File-Shares

Wollen Sie ein Verzeichnis auf dem Server freigeben, so legen Sie hierfür eine separate Sektion an. Angenommen, Sie wollen das Verzeichnis /mnt/projekte unter dem Namen "Projekte" freigeben, so können Sie dies durch die Sektion

[Projekte]
comment = Projekte
path = /mnt/projekte
writable = yes
browseable = yes
public = no
valid users = oliver fritzchen
create mask = 0754

bewerkstelligen. path gibt den Pfad des Verzeichnisses an. comment definiert die Beschreibung, die in der Browser-Liste auf dem Client angezeigt wird. browseable = yes legt fest, dass der Share auch tatsächlich in der Browser-Liste erscheint. Würden Sie diese Eigenschaft auf no setzen, hätten Sie einen versteckten Share im Netzwerk geschaffen. Dann muss der Benutzer den Namen explizit wissen und angeben, um die Freigabe zu nutzen. writable = yes gibt an, dass auf die Freigabe auch schreibend zugegriffen werden kann. Mit public = no wird festgelegt, dass der Share nicht öffentlich ist und Gastbenutzern nicht zur Verfügung steht.

Durch Eigenschaften wie valid users, invalid users, write list oder read list lassen sich die Benutzerrechte bereits auf SMB-Ebene einschränken. Hiermit kann bestimmten SMB-Usern zum Beispiel nur Lesezugriff gestattet werden, obwohl der korrespondierende Linux-User auch Schreibzugriff hätte. Nähere Informationen finden Sie in der Manpage smb.conf(5).

create mask legt fest, mit welchen Attributen Dateien im Linux/Unix-Dateisystem angelegt werden sollen. Das ist notwendig, weil der Windows-Client die Unix-Zugriffsrechte nicht unterstützt.

Unix-Dateirechte

Unix speichert für jede Datei den Namen des Besitzers und der Gruppe, sowie Dateityp und die Zugriffsrechte auf die Datei. Diese Informationen legt Unix beim Erzeugen der Datei an. Dabei setzt es den Dateibesitzer auf den aktuell eingeloggten Benutzer. Die Gruppe ergibt sich aus der Gruppenzugehörigkeit des Benutzers.

Samba hat es da etwas schwerer: Der Unix-Benutzer und die Gruppe sind dem Samba-Server über die Zuordnung von Samba-Usern auf Linux-User zwar bekannt. Er kann jedoch die Zugriffsrechte nicht aus den Benutzerdaten ermitteln. Daher legen Sie die Default-Rechte fest, welche die Datei beim Erzeugen erhalten soll. Dazu geben Sie die Rechte als oktalen Zahlenwert an.

Die erste Ziffer gibt den Dateityp an und sollte immer 0 sein. Die nächsten drei Ziffern legen jeweils die Zugriffsrechte für den Eigentümer, die Gruppe und sonstige Benutzer fest. Sie ergeben sich aus der Summe der einzelnen Rechte:

Unix-Zugriffsrechte

Recht

Zahlenwert

Read

4

Write

2

Execute

1

Die Ziffernfolge 0754 besagt also, dass der Besitzer die Datei lesen, schreiben und ausführen darf. Die Gruppe darf lesen und ausführen. Andere Benutzer hingegen dürfen lediglich lesen.

Einen Überblick über alle vergebenen Shares und die Rechte darauf liefert der Samba Share Manager von Webmin.

Grafische Oberflächen

Die Administration von Samba via Konfigurationsdateien ist vom Prinzip her nicht sonderlich kompliziert. Einfacher und vor allem komfortabler geht es jedoch mit grafischen Oberflächen. Für Samba existieren eine ganze Reihe von grafischen Frontends. Bekannt sind SWAT (Samba Web Administration Tool), Webmin, KSamba und GnoSamba.

KSamba und GnoSamba sind Oberflächen für KDE beziehungsweise GNOME. Beide Programme sind noch recht jung und bieten noch nicht alle Konfigurationsmöglichkeiten. Außerdem fehlen hier noch Erfahrungswerte aus dem Administrationsalltag.

SWAT und Webmin bieten beide einen kleinen "Mini-Webserver", so dass die Konfiguration von Samba in einem beliebigen Webbrowser erfolgen kann. SWAT ist im Samba-Paket enthalten. Samba und SWAT greifen auf die gleiche Codebasis zu, so dass SWAT immer perfekt an Samba angepasst ist. Der eklatante Nachteil von SWAT ist jedoch, dass die Kommunikation zwischen SWAT und dem Webbrowser unverschlüsselt erfolgt. Sie sollten SWAT daher nur in einer Umgebung einsetzen, wo Sicherheit keine große Rolle spielt oder wo der Netzwerk-Traffic nicht von Unbefugten abgehört werden kann, etwa in einer voll geswitchten Umgebung.

Webmin ist ein komplettes Administrationstool, das unter anderem auch ein Modul für Samba beinhaltet. Das Sicherheitsproblem von SWAT teilt Webmin nicht, der sämtliche Kommunikation über SSL verschlüsseln kann.

Auf den Internet-Seiten des Samba-Projekts finden Sie eine Übersicht von zahlreichen verfügbaren grafischen Administrationstools.

Samba-Client an Windows XP

Eine steigende Zahl von Windows XP-Rechnern sind mit dem Internet verbunden. Aus diesem Grund erfordert Windows XP als Standardeinstellung bei allen Netzwerkverbindungen für die Benutzung des Gast-Kontos eine spezielle Autorisierung. Dies soll verhindern, dass sich ein Hacker über das Internet als lokaler Administrator anmelden kann. Allerdings hat diese Sicherheitseinstellung zu Folge, dass eine Anmeldung eines Linux-Rechners mit Samba an einem als Workgroup konfigurierten Windows XP-Rechner nicht möglich ist.

Mit folgender Änderung im Policy Editor von Windows XP Professional können Sie dies umgehen: Gehen Sie auf Systemsteuerung - Verwaltung - Lokale Sicherheitsrichtlinien - Lokale Richtlinien - Sicherheitsoptionen. Ändern Sie unter dem Punkt Netzwerkzugriff: Modell für gemeinsame Nutzung und Sicherheitsmodell für lokale Konten von Nur Gast auf Klassisch.

Unter Windows XP Home ist eine Änderung in der Registry nötig: Öffnen Sie den Registrierungseditor und suchen nach dem Schlüssel HKLM\\System\\CurrentControlSet\\Control\\LSA. Wählen Sie den Eintrag ForceGuest und ändern diesen auf ForceGuest=0.

Ein Neustart des Rechners nach dieser Änderung ist nicht notwendig.

Fazit

Wer in kleinen bis mittleren Netzen einen reinen File- und Printserver aufsetzen will, sollte bei der Entscheidung für das Betriebssystem Linux nicht gleich außen vor lassen. Samba bietet dieselben Funktionen wie ein NT-Server und ist praktisch kostenlos. Eine aktuelle Linux-Distribution kostet gerade mal zwischen 50 und 70 Euro, für beliebig viele Benutzer. Verzichten Sie bei der Installation auf Ressourcen-Fresser wie den X-Server, kommt Linux mit deutlich weniger Hardware aus als Windows NT und 2000. Auch Einrichtung und Konfiguration eines Samba-Servers sind dank grafischer Benutzeroberfläche für Linux-Einsteiger kein Hindernis mehr. Eine ausführliche Dokumentation zu Samba mit einer Erklärung aller Optionen finden Sie hier.

Wie Sie Linux als Printserver mit automatischer Installation der Treiber auf dem Client einrichten, lesen Sie in einem anderen tecCHANNEL-Beitrag. Mit etwas mehr Aufwand lässt sich Linux auch für zusätzliche Aufgaben einsetzen, etwa als Intranet-Server oder als Internet-Router mit Proxy- und Firewall-Funktionen. Das ermöglicht den Benutzern im Netz den Zugriff auf das Internet und E-Mail-Dienste. Welche Installations- und Konfigurationsschritte dazu notwendig sind, lesen Sie in weiteren Beiträgen in unserem Linux&Unix-Channel. (kpf)

tecCHANNEL Buch-Shop

Literatur zum Thema Linux

Bestell-Link

Titel von Pearson Education

Bestellung

PDF-Titel (50% billiger als Buch)

Downloads