Samba: UNIX im Windows-Netz
Willemers Informatik-Ecke

Samba ist eine freie Software, die es UNIX-Rechnern ermöglicht, mit dem Windows Netzprotokoll SMB zu kommunizieren. Samba ist so leistungsfähig, dass man es gut verwenden kann, um einen Ersatz für einen MS-Windows NT Server zu stellen. Es gibt aber auch einen SMB-Client, mit dem man Zugriffe auf Windowsressourcen erhält.

Samba basiert auf TCP/IP

Samba arbeitet als TCP/IP-Service. Entsprechend müssen alle SMB-Pakete über das Protokoll TCP/IP transportiert werden. Obwohl in reinen Windowsnetzen oft IPX, das alte Protokoll von Novell, eingesetzt wird, ist das kein so großer Aufwand, da inzwischen fast jeder Windowsrechner auch mit dem Internet verbunden wird und in dem Zusammenhang TCP/IP sowieso installiert wird. IPX kann man meist ohne Probleme deinstallieren, sofern nicht tatsächlich ein älteres Novellnetz eingesetzt wird. Lediglich MS-Windows 3.11 besaß noch nicht von Haus aus TCP/IP. Das kann man allerdings kostenlos von Microsoft erhalten. Quelle:

TCP/IP für Windows 3.11

/etc/services

Da Samba ein TCP/IP-Dienst ist, müssen in der /etc/services Einträge gemacht werden:

netbios-ssn     139/tcp
netbios-ns      137/tcp

Konfigurationsdatei smb.conf

Die zentrale Konfigurationsdatei heißt /etc/smb.conf. Die Datei ist in mehrere Abschnitte eingeteilt und ähnelt einer MS-Windows INI-Datei. Die Abschnitte sind mit Titeln in rechteckigen Klammern eingeleitet. Die einzelnen Einstellungen werden durch Zuweisungen gemacht, die der Struktur Variable=Wert folgen. Der Wert umfasst den Rest der Zeile. Das Semikolon ist das Kommentarzeichen.

globale Einstellungen

Der wichtigste Abschnitt heißt global. Der Abschnitt global beschreibt den Server als solchen.

[global]
   server string = Gaston, der freundliche NT-Ersatz
   workgroup = WILLEMER
   share modes = yes

; encrypt passwords wird ab NT 4.0 SP3 und Win98 gebraucht encrypt passwords = yes printing = bsd printcap name = /etc/printcap ; wichtig, wenn es ein weiteres Interface zum Internet gibt. interfaces = 192.168.109.144/255.255.255.0

Der server string ist nur ein Kommentar, der allerdings allen Clients übermittelt wird. Wer mit seinem Server protzen will, hat hier die Gelegenheit dazu. Wichtig ist die workgroup, die hier originellerweise WILLEMER heißen soll. Die Rechner, die zu einer gemeinsamen Arbeitsgruppe gehören, können sich leicht gegenseitig Ressourcen zur Verfügung stellen. Neben den Workgroups gibt es noch das Konzept der Windowsdomänen. Samba kann auch als ein solcher Domänenserver laufen. Nähere Informationen sind in der SAMBA beiliegenden Dokumentation zu finden.

Zugriff auf die Drucker

Die beiden Variablen printing und printcap name ermöglichen den Zugriff auf die in der /etc/printcap angegebenen Drucker unter MS-Windows. Man kann die Drucker, die mit ghostscript betrieben werden, unter MS-Windows als normale Postskriptdrucker ansprechen. Will man einen speziellen Druckertreiber verwenden, muss man auf den rohen (raw) Drucker verweisen, der in der printcap keinen if-Eintrag besitzt.

Interfaces

Im Abschnitt global kann eingestellt werden, auf welche Netzinterfaces Samba zugreift. Diese Einstellung ist vor allem bei einem Rechner erforderlich, der auch ein Interface zum Internet besitzt. Ansonsten versucht Samba, auch auf diesem Wege Freunde zu finden. Das wäre natürlich ein eklatantes Sicherheitsrisiko. Alternativ kann statt der Netzmaske hinter der IP-Nummer auch die Anzahl der Bits genannt werden, die zum Netzteil der Adresse gehören.

interfaces = 192.168.109.144/24

Im weiteren Verlauf der smbd.conf werden die Ressourcen beschrieben, die den anderen Rechnern im Netz zur Verfügung gestellt werden. Jede der Ressourcen wird in rechteckigen Klammern genannt.

[homes]
   comment = Heimatverzeichnis
   browseable = no
   read only = no
   create mode = 0750
 
[c-drive]
   comment = C-Laufwerk
   browsable = yes
   public = yes
   create mode = 0755
   path = /windows/C
   writeable = yes

Heimatverzeichnis

Die Ressource homes bietet jedem angemeldeten Benutzer sein Heimatverzeichnis an. Meldet sich also der Anwender arnold unter MS-Windows an und verbindet homes mit einem Netzlaufwerk, findet er das Verzeichnis, das laut UNIX passwd Datei sein Heimatverzeichnis ist.

Die Ressource c-drive bietet das Verzeichnis /windows/C als Netzlaufwerk an. Dieses ist auf meinem Computer tatsächlich eine Windowspartition. Das ist aber keineswegs Voraussetzung. Es kann jedes beliebige Dateisystem angeboten werden.

browsable

Die Option browsable beschreibt, ob die Ressource angezeigt wird, wenn man sie von einem Windowsrechner aus anzeigen lässt. Im Beispiel kann man also homes nicht sehen, wenn man sich von einem Windowsrechner die Ressourcen des Servers anzeigen lässt. Allerdings kann man den Namen homes bei einer Verknüpfung direkt angeben. Zweck der Übung ist, dass man nicht alle Ressourcen einer breiten Öffentlichkeit darbieten möchte.

Pfad

Alle Ressourcen müssen natürlich einen Pfad haben, unter dem sie im UNIX Verzeichnisbaum zu erreichen sind. Eingetragen wird dieser Pfad unter der Option path. Ausnahmen sind wie gesagt die Heimatverzeichnisse, da sie ihren Pfad anders finden.

create mode

Die Option create mode stellt ein, welche Berechtigung eine per Samba erzeugte Datei bekommt. Über das Windowsnetz sind nicht alle Berechtigungen nachträglich zu korrigieren.

Test der smb.conf durch testparm

Durch Aufruf von testparm wird die smb.conf gestestet und Hinweise auf Fehler gegeben.

Load smb config files from /etc/smb.conf
Processing section "[homes]"
Processing section "[c-drive]"
Processing section "[printers]"
Loaded services file OK.
Press enter to see a dump of your service definitions  

Nach dem Drücken der Returntaste wird die komplette Konfiguration angezeigt.

Starten der Dämonen

Samba besteht aus zwei Prozessen, smbd und nmbd. Der Server smbd bietet die eigentlichen Dateien- und Druckerdienste an. Der Server nmbd ist für die Namensdienste zuständig. Für die ersten Tests kann man sie einfach direkt nacheinander von der Konsole starten. Durch ps kann dann getestet werden, ob die Prozesse gestartet sind. Ist das nicht der Fall, ist die smbd.conf nicht in Ordnung. Nähere Informationen liefern die Dateien log.smbd und log.nmdb, die sich im Verzeichnis /var/log/samba befinden.

Lokaler Zugriff

Nachdem die Prozesse gestartet sind, wird zum Testen der Konfiguration als nächstes versucht, auf die Umgebung zuzugreifen. Dazu wird auf derselben Maschine ein SMB Client gestartet.

smbclient -L localhost

Nach einer Passwortabfrage werden Informationen über die lokale Samba-Umgebung ausgegeben.

Domain=[WILLEMER] OS=[Unix] Server=[Samba 2.0.7]
 
        Sharename      Type      Comment
        ---------      ----      -------
        c-drive        Disk      C-Laufwerk
        cdrom          Disk      Linux CD-ROM
        IPC$           IPC       IPC Service (Gaston, der freund
        ascii          Printer   cljet5-a4-ascii-mono-300
        lp2            Printer   cljet5-a4-auto-color-300
        lp-mono        Printer   cljet5-a4-auto-mono-300
        cljet5-a4-raw  Printer   cljet5 a4 raw
        faxprint       Printer   fax
 
        Server               Comment
        ---------            -------
 
        Workgroup            Master
        ---------            -------                               

Zugriff unter MS-Windows

TCP/IP auf Windows installieren

Zunächst muss sichergestellt sein, dass der Windowsrechner zur gleichen Workgroup gehört. Dann muss TCP/IP als Netzprotokoll installiert sein. Die Funktion der Verbindung prüft man zunächst mit einem ping auf den Namen des Sambaservers. Wenn dies alles funktioniert, kann man in der Netzwerkumgebung nachsehen, ob die Workgroup dort erscheint und dann auch der Sambaserver erscheint. Man kann dem etwas nachhelfen, indem mit der Funktion >>Computer suchen<< nach dem Server sucht.

Windows Netzwerkumgebung

Die Netzwerkumgebung ist leider nicht besonders verlässlich in der Anzeige der verfügbaren Rechner. Windowsrechner suchen in gewissen Abständen, von welchen anderen Rechnern sie umgeben sind. Danach aktualisieren sie ihre Netzwerkumgebung. So kann es sein, dass die angezeigten Rechner längst abgeschaltet sind oder nicht angezeigte Rechner in Wirklichkeit längst verfügbar sind.

Encrypted Password

Verschlüsselte Passwörter sind nicht kompatibel

MS-Windows NT 4 ab Service Pack 3 sowie MS-Windows 98 und alle neueren Versionen senden verschlüsselte Passwörter über das Netz. Leider entspricht die Verschlüsselung nicht dem UNIX-Standard, so dass Samba nicht mehr einfach über die /etc/passwd arbeiten kann, wie das unverschlüsselt noch funktioniert. Zur Speicherung der verschlüsselten Passwörter wird eine eigenständige Datei namens /etc/smbpasswd verwendet. Um eine solche Datei zu erzeugen, liefert Samba einen Skript mit. Der Aufruf lautet:

cat /etc/passwd | bash mksmbpasswd.sh >/etc/smbpasswd

Danach kann root für jeden Benutzer ein Startpasswort mit dem Kommando smbpasswd eintragen, indem er beispielsweise für den Benutzer willemer eingibt:

gaston# smbpasswd willemer
New SMB password: 
Retype new SMB password:
Password changed for user willemer. 
gaston#

Samba als Domain-Controller

Samba kann auch als Primary Domain Controller (PDC) in einer Windows-Umgebung eingesetzt werden. Der Unterschied zu dem bisher betrachteten Peer-To-Peer Netzwerk besteht darin, dass ein einzelner Server die Anmeldung annimmt und die Ressourcen vergibt.

Folgende Einträge müssen in der smb.conf hinzukommen, damit Samba einen PDC realisiert:

   domain logons = yes
   security = user
   os level = 34
   local master = yes
   preferred master = yes
   domain master = yes

[netlogon]
   path = /home/netlogon
   public = no
   writable = no
   browsable = no

Der Pfad für netlogon muss angelegt und von den Benutzern lesbar sein.

Die Clients müssen auf Domänenbetrieb umgestellt werden. Dies wird beispielsweise bei Windows Me im Netzwerkdialog eingestellt. Diesen erreichen Sie, indem Sie die Netzwerkumgebung mit der rechten Maustaste anklicken und aus dem Menü den Punkt Eigenschaften wählen. Aus den Netzwerkkomponenten wählen Sie den Client für Microsoft-Netzwerke aus und klicken Eigenschaften an. In dem dann erscheinenden Dialog setzen Sie einen Haken an den Punkt "An Windows NT-Domäne anmelden". Daraufhin können Sie angeben, an welcher Domäne Sie sich anmelden wollen. Der Namen entspricht dem, den Sie unter WORKGROUP in der Datei smb.conf angegeben haben.

Drucker

In Windows-Netzen können nicht nur Platten sondern auch Drucker angeboten werden. Dabei kann das UNIX-Drucksystem als Basis verwendet werden. Im Folgenden werden die Drucker eines BSD-Systems als Windows-Drucker verwendet. Dazu wird unter global das lokale Drucksystem als bsd angegeben und der Ort der printcap angegeben. Schließlich wird noch ein eigener Abschnitt für die Drucker namens printers definiert:

[global]
 ...
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
[printers]
   comment = All Printers
   browseable = no
   printable = yes
   public = no
   read only = yes
   create mode = 0700
   directory = /tmp

Nun gibt es zwei grundsätzlich unterschiedliche Verfahren, die Drucker von Windows aus zu installieren. Der Drucker kann entweder unter UNIX als PostScript-Drucker beispielsweise per GhostScript installiert werden. Dann wird auf dem Windows-Rechner lediglich ein beliebiger PostScript-Drucker installiert. Soll dagegen die Druckeranpassung auf dem Windows-Client erfolgen, muss in der \gpfett{printcap}-Datei der Drucker so definiert sein, dass der Druckdämon alle ankommenden Daten direkt durchschleust. Unter SuSE wird ein solcher Eintrag automatisch für jeden Drucker eingerichtet und ist an der Namenserweiterung raw zu erkennen.

Dämon oder inetd

Je nach Einsatz gibt es zwei Arten, einen Samba Server zu starten. Werden die Ressourcen nur hin und wieder zugegriffen, reicht es, den Server durch den inet-Dämon zu verwalten. Wird der Server intensiv als Firmenserver verwendet, sollte man die Dämonen aus den rc-Skripten starten.

Starten per inetd

Die Einträge in der /etc/inetd.conf lauten, falls der Dienst auf diesem Wege gestartet werden soll:

netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Ein kill -1 auf die PID des inetd sollte ihn dazu bringen, seine Konfigurationsdatei noch einmal zu begutachten. Wird nun der entsprechende Dienst angefordert, startet inetd die benötigten Samba-Dämonen.

rc-Skripte

Wird Samba als Server in einer Firma eingesetzt, der regelmäßig benutzt wird, werden die Serverprozesse beim Booten durch eine rc-Datei gestartet. In der SuSE-Distribution wird das durch Setzen der Variable START_SMB auf >>yes<< in der /etc/rc.config erreicht. Auf anderen Plattformen muss die Datei smb, die dem Sambapaket beiliegt, mit symbolischen Links in die richtige Startumgebung gebracht werden

Administration per Browser

Mit dem Programm swat ist eine Administration des Samba-Servers auch per Browser möglich. Zunächst muss swat aktiviert werden. Das erfolgt in der Datei /etc/inetd.conf. Dort muss der folgende Eintrag stehen.

swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat

Danach muss der inet-Dämon durch ein HUP-Signal dazu gebracht werden, seine Konfiguration noch einmal einzulesen.

gaston # ps -ef | grep inetd
root      1271     1  0 10:30 ?        00:00:00 /usr/sbin/inetd
gaston # kill -HUP 1271

Anschließend kann ein Webbrowser gestartet werden. swat wird auf Port 901 angesprochen. Die Nummer finden Sie in der Datei /etc/services. Als Adresse wird also auf der lokalen Maschine http://localhost:901 eingegeben. Von fremden Maschinen muss der Name des Servers angegeben werden. In beiden Fällen erscheint eine Dialogbox, in der Sie sich als root anmelden müssen. swat konfiguriert die Datei smb.conf auf sehr übersichtliche Weise und ermöglicht die Verwendung der grafischen Oberfläche. Das ist vor allem für Anfänger sehr hilfreich. Auf der anderen Seite bleiben die Vorteile der textuellen Konfigurationsdatei erhalten. Man kann sie leicht sichern oder ausdrucken. Zur Not kann sie auch mit einem einfachen Textprogramm bearbeitet werden.

Zugriff auf Windowsnetze

Auch der Zugriff auf Windowsnetze ist möglich. Das Programm smbclient wurde schon zum Testen des Sambaservers kurz vorgestellt. Mit der Option -L Servername zeigt es alle Ressourcen, die der Server anbietet und die in als browsable gekennzeichnet sind.

Dateientausch per smbclient

Der Zugriff auf die von gaston angebotenen Heimatverzeichnisse würde von einem anderen UNIX-Rechner per smbclient ermöglicht

smbclient \\\\gaston\\homes

Nach dem Aufruf wird ein Passwort angefordert und man befindet sich in einer Umgebung, die stark an den ftp-Client erinnert. Und tatsächlich funktioniert er auch mit den gleichen Kommandos. Etwas irritierend sind die vielen Backslashes. An sich werden vor dem Wort gaston zwei benötigt. Da aber der Backslash von der Shell interpretiert werden, braucht man hier vier. Allerdings darf man auch normale Schrägstriche verwenden und dann sieht der Aufruf schon etwas ziviler aus.

smbclient //gaston/homes

Einbinden durch smbmount

Interessanter als ein ftp-Zugang dürfte aber das Einbinden einer Ressource in den eigenen Verzeichnisbaum sein. Dazu gibt es den Befehl smbmount, der einem mount mit dem Dateisystemtyp smbfs entspricht. Das Einbinden der Ressource HOMES vom Rechner gaston kann also mit einem der beiden Befehle erfolgen:

smbmount //gaston/homes /mnt -o username=arnold
mount -t smbfs -o username=arnold //gaston/homes /mnt

Die Verbindung wird mit dem normalen umount wieder aufgelöst:

umount /mnt

Zugriff auf Windows XP

Windows XP versucht, die Sicherheitslöcher, die im Peer To Peer Netz entstehen, dadurch zu stopfen, dass das Gastkonto nicht mehr frei zugänglich ist. Darum fordern die Aufrufe von smbclient und smbmount jedesmal ein Passwort.

Dieser Schutz, der in einem lokalen Netzwerk normalerweise überflüssig ist, kann durch den Policy-Editor von Windows XP Professional abgeschaltet werden. Über den Start-Button und Systemsteuerung eröffnet sich ein Fenster. Über Performance und Wartung weiter zu Verwaltung - Lokale Sicherheitsrichtlinien - Lokale Richtlinien -Lokale Richtlinien - Sicherheitsoptionen.
Die Einstellung "Netzwerkzugriff: Modell für gemeinsame Nutzung und Sicherheitsmodell für lokale Konten" wird von "Nur Gast" auf "Klassisch" umgestellt.

Bei Windows XP Home wird stattdessen in der Registry unter

HKLM\System\CurrentControlSet\Control\LSA

der Eintrag ForceGuest auf 0 gesetzt.