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.
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.
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:
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.