![]()
In diesem Kapitel begleite ich Sie durch die Konfiguration und Installation eines Beispiel-Samba-Servers und beschreibe alle nötigen Vorbereitungen.
Stellen Sie sich vor, mein Chef gibt mir folgende Anweisungen:
Problem:
»Ich brauche bis heute mittag drei Dinge von dir. Erstens eine Methode, über die ich Dokumente und Projektkalkulationen mit Joe Underling vom anderen Ende des Flurs gemeinsam nutzen kann. Zweitens stürzt mein PC dauernd ab. Mit diesem Band-Ding dauert es zu lange, bis ich alle meine wichtigen Dokumente wieder neu geladen habe. Ich brauche eine bessere Methode, um meine Dateien zu schützen. Und schließlich muss ich auf dem Drucker meiner Sekretärin nebenan drucken können.«
Szenario 1:
»Hmmmm...«, denke ich. »Beide Rechner sind vernetzt. Ich könnte einen FTP-Server einrichten, um das Problem der gemeinsam genutzten Dokumente zu lösen. Da ich über die Benutzung von FTP nachdenke, könnte ich meiner Chefin zeigen, wie sie alle ihre Dateien auf eine Festplatte auf dem Server hochladen kann. Das wäre schneller als ein Bandlaufwerk. Um ihren PC mit dem Drucker zu verbinden, könnte ich wohl einen automatischen Umschalter besorgen und ein langes Parallelkabel an der Wand entlang bis zum Schreibtisch der Sekretärin verlegen. Hups. Zu lang für ein Parallelkabel. Ich könnte auch ein serielles Kabel benutzen. Nein. Das wäre zu langsam. Ich mache mich auf den Weg und denke, dass ich anfangen sollte, meine Bewerbungsunterlagen auf den neuesten Stand zu bringen.
Szenario 2:
Als erstes stelle ich fest, dass alle drei betroffenen PCs - der meiner Chefin, der der Sekretärin und Joes - mit dem lokalen Netzwerk verbunden sind. Danach gehe ich in mein Büro und suche nach einem externen Druckserver für den Drucker. Gefunden! Jetzt verbinde ich den Drucker mit dem Netzwerk. Danach logge ich mich in meinen Linux-Rechner ein, den ich gestern mit Hilfe meines Exemplars des Buchs »Jetzt lerne ich Linux« von Markt&Technik eingerichtet habe. Den aktuellen Samba-Source-Code habe ich bereits bei meiner allmorgendlichen Tasse Kaffee (schwarz, ohne Milch und Zucker) heruntergeladen und kompiliert.
Ich richte eine einfache Konfigurationsdatei für Samba ein. Zuerst erstelle ich ein Home-Verzeichnis für meine Chefin auf dem Server, damit sie dort ihre wertvollen Dateien speichern kann. Dann richte ich eine Freigabe ein, auf die Joe Underling und meine Chefin zugreifen können, damit sie Dokumente gemeinsam nutzen können. Und schließlich erstelle ich eine Freigabe für den Drucker der Sekretärin und mache mich auf den Weg zu meiner Chefin, um ihr zu zeigen, wie sie all das benutzen kann.
Nachdem ich die zwei Freigaben auf den Computer meiner Chefin gemountet und ihr gezeigt habe, wie sie auf die Dateien zugreifen kann, drucke ich eine Testseite, um sicherzugehen, dass der Drucker funktioniert. Meine Chefin ist so glücklich, dass sie nichts Neues lernen muss (außer, sich die Laufwerke H: und G: zu merken, für Home bzw. Gruppe), dass sie mir für den Rest der Woche frei gibt und eine Gehaltserhöhung noch dazu.
Vielleicht sind die Berichte über meine Notlage und meinen Triumph etwas übertrieben, aber man kann nie wissen. Es könnte so passieren!
In den restlichen Abschnitten dieses Kapitels führe ich Sie durch die Konfiguration von Samba, um die in Szenario 2 beschriebene Lösung zu implementieren. Linux diente hierbei nur als Beispiel. Die Lösung wird immer funktionieren, solange sich Samba unter dem Betriebssystem des Servers kompilieren lässt.
Abbildung 4.1 stellt dar, welcher Benutzer auf welche Freigaben zugreifen kann. Die gepunkteten Linien stehen für die Sekretärin, die gestrichelten für meine Chefin und die gefüllten für Joe Underling. Die Sekretärin sollte also nur auf den freigegebenen Drucker zugreifen können, Joe auf den Drucker und das Gruppen-Netzwerklaufwerk und meine Chefin auf beide vorher genannten Freigaben und zusätzlich auf ihr Home-Verzeichnis.
Abb. 4.1: Samba-Lösung für die Implementierung von (a) einer Gruppenfreigabe, (b) Home-Verzeichnissen und (c) einem Netzwerkdrucker
In Kapitel 3, »Wie bekomme ich den aktuellsten Source-Code«, habe ich erwähnt, dass ein Samba-Server aus zwei Haupt-Binaries besteht. Das erste ist smbd, das sich normalerweise in /usr/local/samba/bin befindet. smbd bearbeitet Anfragen für Datei- und Druckerfreigaben. Das zweite Binary, nmbd, ist normalerweise im gleichen Verzeichnis wie smbd zu finden. nmbd bearbeitet Anfragen für den NetBIOS-Name-Service und die Netzwerk-Browsing-Funktionen.

![]()
Bevor ich tatsächlich die Netzwerkfreigaben konfiguriere, die zur Lösung des Problems benötigt werden, muss ich einige Starteinstellungen konfigurieren, um Samba zum Laufen zu bringen. Sie sollten wissen, dass freigegebene Ressourcen in der SMB-Terminologie, egal ob es sich um Verzeichnisse oder Drucker handelt, als Freigaben (Shares) bezeichnet werden. Diese entsprechen einem NFS-exportierten Verzeichnis oder einem entfernten Drucker, der über lpr zur Verfügung gestellt wird. Manchmal wird eine SMB-Freigabe auch als Dienst bezeichnet. Ich benutze beide Begriffe austauschbar.
![]()
Zunächst muss ich folgende Fragen beantworten:
Nehmen wir für dieses Beispiel an, dass der Host-Name des Servers eagle ist und daher soll der NetBIOS-Name des Servers ebenfalls EAGLE lauten. Zwar sind die Namen nicht groß-/kleinsensitiv, aber ich werde in diesem Buch der Konvention folgen, dass ich DNS-Namen mit kleinen Buchstaben und NetBIOS-Namen mit Großbuchstaben darstelle. Die Arbeitsgruppe wird die gleiche sein, der auch der PC angehört, also FOWLPLAY. In Kapitel 5, »Die Datei smb.conf: Samba mitteilen, was es tun soll«, finden Sie detaillierte Informationen über diese Entscheidungen und die entsprechenden smb.conf-Parameter.
Nachdem ich diese zwei Entscheidungen getroffen habe, kann ich die Starteinstellungen in der Datei smb.conf konfigurieren. Kommentaren in smb.conf wird das Zeichen ; oder # vorangestellt. Dabei ist es egal, welches der Zeichen verwendet wird. Das Erste kommt aus der Unix-Welt, während das Zweite aus der Windows-Welt stammt.
; globaler Parameterabschnitt von smb.confDie Kommentare erklären sich weitestgehend selbst. Die Zeile security = user bestimmt den Sicherheitsmodus, den Samba für die Authentifizierung von Benutzern verwendet. Weitere Informationen zur Benutzerauthentifizierung finden Sie in Kapitel 6, »Sicherheitsmodi und Passwörter«.
In Kapitel 3 habe ich bereits erwähnt, dass sich smb.conf standardmäßig in /usr/local/samba/lib/ befindet, und auch ich verwende diesen Standort. Über meinen bevorzugten Texteditor (vi) erstelle ich /usr/local/samba/lib/smb.conf und gebe den Text aus dem oben stehenden Code-Listing ein.
Den ersten Teil des Problems, den ich angehe, ist die Konfiguration eines Netzwerklaufwerks, das mehreren Benutzern Lese- und Schreibzugriff bietet. Abbildung 4.2 stellt eine Beispielsituation dar, in der die Benutzer joe und boss auf Dateien auf der Festplattenfreigabe auf dem Server zugreifen sollen, die rechts dargestellt ist. Das Diagramm zeigt die Möglichkeit, dass beide Benutzer eine Datei gleichzeitig lesen können, aber ich erlaube jeweils nur einem Benutzer, eine Datei zum Bearbeiten zu öffnen.
Bevor ich die Verzeichnisse einrichte, auf die Joe und der Boss zugreifen können, muss ich zunächst sicherstellen, dass beide einen gültigen Account in /etc/passwd (oder im Falle von NIS oder NIS+ deren Netzwerkentsprechung) haben. Dann kann ich in /etc/group (oder der entsprechenden Netzwerk-Map) eine Gruppe einrichten und die zwei Accounts als Mitglieder hinzufügen. Für dieses Beispiel nenne ich die Gruppe boss1 und verwende die Benutzernamen joe und boss.
Abb. 4.2: Mehrere Benutzer greifen auf Dateien in einem freigegebenen Verzeichnis zu
Dieser Schritt wäre identisch, wenn ich eine Verzeichnisfreigabe für den Zugriff über Unix einrichten würde, da Samba es dem zugrunde liegenden Betriebssystem ermöglicht, den Zugriff auf die Dateien zu kontrollieren. Daher kann ich ein Sicherheitsmodell benutzen, mit dem ich vertraut bin, auch wenn die Windows-Clients keine Ahnung von Unix haben.
Ich benutze in der Regel das Verzeichnis /export/ für alle Festplattenfreigaben, also halte ich mich auch hier daran. Ich richte das Verzeichnis /export/smb/boss1/ als Verzeichnisfreigabe ein. Abbildung 4.3 stellt einen Teil der Verzeichnisstruktur des Servers dar. Das Verzeichnis, das über SMB freigegeben wird, ist eingekreist.
Abb. 4.3: Unix-Verzeichnisstruktur und der Teil, der über Samba freigegeben wird
Danach richte ich über die folgenden Befehle den Gruppeneigentümer und die Berechtigungen ein:
chgrp boss1 /export/boss1Der letzte Schritt besteht darin, die Freigabe in der Konfigurationsdatei von Samba zu definieren, indem smb.conf folgende Einträge hinzugefügt werden:
; FreigabnameIch habe auch hier Kommentare eingefügt, um die allgemeine Bedeutung jedes Abschnitts zu beschreiben. Es ist im Moment nicht nötig zu verstehen, welche Funktion jeder Abschnitt hat. Festplattenfreigaben werden ausführlich in Kapitel 7, »Dateifreigaben«, dargestellt.
Das Einrichten von Home-Verzeichnissen in Samba ist der Einrichtung der Gruppenfreigabe, die im vorigen Abschnitt dargestellt wurde, sehr ähnlich. Der wichtigste Unterschied besteht darin, dass ich die Regel durchsetzen möchte, dass sich nur der jeweilige Eigentümer mit einem bestimmten Home-Verzeichnis verbinden kann. Anders gesagt, ich möchte nicht, dass Joe auf das Home-Verzeichnis meiner Chefin zugreifen kann. Das wäre nicht so gut.
Als ich das freizugebende Gruppenverzeichnis eingerichtet habe, war es notwendig sicherzustellen, dass Joe und der Boss gültige Unix-Accounts auf dem Server haben. Normalerweise haben diese Unix-Accounts auch einen Bereich auf der Festplatte, der als das Home-Verzeichnis des Benutzers zugewiesen wird. Statt einen neuen Bereich zuzuweisen, konfiguriere ich Samba so, dass es das Home-Verzeichnis des Benutzers, das in der Unix-Account-Datenbank (d.h. //passwd) spezifiziert ist, gemeinsam benutzt. Hier sind die Parameter, die Sie in smb.conf einfügen müssen, um die Home-Verzeichnisse verfügbar zu machen:
; FreigabenameIch habe in diesen Abschnitt keine Kommentare eingefügt, da die meisten Einstellungen den Parametern für die Definition von [boss1] ähnlich sind. Es gibt einige Unterschiede, die Sie beachten sollten.
Der erste ist der Name der Freigabe oder des Dienstes, [homes]. Home-Verzeichnisse sind so etwas wie ein Spezialfall. Versucht ein Client, sich zu verbinden, wird der Freigabename [homes] durch den Benutzernamen ersetzt, den der verbindende Client überträgt. Das heißt, wenn meine Chefin versucht, sich mit ihrem Home-Verzeichnis zu verbinden, kann sie den Netzwerkpfad \\EAGLE\homes oder \\EAGLE\boss angeben. Samba interpretiert beide Angaben als die gleiche Freigabe. Abbildung 4.4 zeigt, wie Samba für jeden Benutzer während der Verbindungsaufnahme den [homes]-Dienst einrichtet. Existiert der Benutzer in /etc/passwd, benutzt Samba den Pfad für das Home-Verzeichnis, der in dem Benutzereintrag als Standort für den [homes]-Ordner angegeben ist.
Abb. 4.4: Samba erstellt und erweitert während der Laufzeit die Variable %H aus dem Home-Verzeichnis, das in /etc/passwd spezifiziert ist
Der zweite Unterschied ist der Eintrag valid users = %S. Die Variable %S wird während der Verbindungszeit in den Namen der Freigabe erweitert. Denken Sie daran, dass die [homes]-Freigabe während der Laufzeit in den vom Client übertragenen Benutzernamen umbenannt wird. Wenn Sie nur Verbindungen von einem Benutzer erlauben, der den gleichen Benutzernamen hat wie die Freigabe, verhindern Sie, dass Joe auf \\EAGLE\boss zugreifen kann. Diese Methode funktioniert auch dann, wenn die Berechtigungen für /home/boss auf allgemein beschreibbar (d.h. rwxrwxrwx) eingestellt sind.
Nachdem ich die Festplattenfreigaben eingerichtet habe, ist es Zeit, mich dem Drucker zu widmen. Um das Beispiel fortzusetzen: ich habe den Drucker bereits korrekt auf dem Linux-Server eingerichtet. Wenn ich erfolgreich vom Linux-Rechner über den lpr-Befehl an den Netzwerkdrucker drucken kann, besteht der nächste Schritt darin, eine Druckerfreigabe einzurichten:
[global]Diese Definition veranlasst Samba, die Datei /etc/printcap nach einem Drucker namens printer1 zu durchsuchen und den Standarddruckbefehl zu benutzen. Beachten Sie, dass ich auch den zusätzlichen Eintrag printing = bsd in den [global]-Abschnitt der smb.conf einfügen muss. Es gibt noch andere Arten von Unix-Drucksystemen. Samba kann auch mit diesen arbeiten, wie Sie in Kapitel 8, »Drucker«, sehen werden.
Ich setze voraus, dass Ihre Binärdateien korrekt kompiliert und installiert wurden. Der nächste Schritt besteht darin, sicherzustellen, dass es keine Syntaxfehler in smb.conf gibt. Wenn Sie alle Samba-Utilities installiert haben (was automatisch der Fall ist, wenn Sie make install eingeben), sollten Sie ein Tool namens testparm im Verzeichnis /usr/local//samba/bin finden. Das Utility überprüft smb.conf und druckt alle Standardwerte aus, sofern diese nicht durch die Angabe anderer Parameter überschrieben wurden. Dies kann sehr hilfreich sein, um sicherzustellen, dass Samba das, was es Ihrer Meinung nach sehen sollte, auch sieht.
Ich habe im Abschnitt [global] der folgenden smb.conf-Datei das Wort netbios absichtlich falsch geschrieben.
; globaler Parameterabschnitt von smb.confDann habe ich testparm laufen lassen. Wenn Sie wollen, dass testparm eine smb.conf-Datei überprüft, die sich an einem anderen Ort als dem Kompilierungsstandard befindet, können Sie den Parameter -s Dateiname benutzen:
root# /usr/local/samba/bin/testparm -s smb.conf | head -6Sie sehen, dass die Ausgabe einen unbekannten Parameter darstellt: netbis name.
Sie können testparm auch dazu benutzen, die Standardwerte von Parametern zu bestimmen. Die folgende Ausgabe zeigt z.B., dass der Standard-Gast-Account nobody ist.
root# /usr/local/samba/bin/testparm -s smb.conf| grep "guest account"Nachdem Sie smb.conf fertiggestellt und die Samba-Binärdateien erzeugt haben (entweder durch Kompilieren des Source-Codes oder Herunterladen verfügbarer Binaries), besteht der nächste Schritt darin, die Samba-Daemons, smbd und nmbd, zu starten. Dafür gibt es zwei Möglichkeiten. Welche Sie wählen, hängt davon ab, wie viele Verbindungen zu Ihrem Samba-Server Sie erwarten, wie regelmäßig diese sind und wie viele Ressourcen Sie derzeit auf dem Server freigeben können.
Jede Client-Verbindung hat ihren eigenen smbd-Daemon. Der smbd-Prozess, der für einen Client verantwortlich ist, kann jedoch viele Verbindungen zu Freigaben verwalten. Jeder smbd-Prozess benutzt für seinen Arbeitsbetrieb etwa 1 Mbyte RAM, kann aber mehr Gesamtarbeitsspeicher zugewiesen bekommen. Der Arbeitsbetrieb eines Prozesses ist die Anzahl der Speicherseiten, die er im physikalischen Arbeitsspeicher behalten muss. Sie können ausrechnen, wie viel Gesamtarbeitsspeicher Samba allgemein belegen wird, indem Sie die Anzahl der gleichzeitigen Benutzer mit 1,5 multiplizieren. Einige Betriebssysteme benutzen Arbeitsspeicher-Mapping, damit Prozesse nicht modifizierbare Codeseiten gemeinsam nutzen können, um damit die Menge des tatsächlich benutzten Arbeitsspeichers zu reduzieren. Diese Formel gibt Ihnen zumindest einen Anhaltspunkt, um die Kapazität für Ihren bestimmten Server planen zu können.
Der Samba-Serverprozess kann entweder über den inetd-Metadaemon oder als Standalone-Daemon gestartet werden. Ich habe festgestellt, dass Freigaben bei Erstverbindungen schneller zur Verfügung stehen, wenn smbd und nmbd als Standalone-Daemon laufen. Wenn der Server aber für längere Zeit ohne SMB-Verbindungen inaktiv ist, können Sie smbd und nmbd über die inetd.conf laufen lassen, um die gesamte Arbeitsspeicherauslastung des Systems ein wenig zu reduzieren. Sie müssen entscheiden, welche Methode für Sie die beste ist, aber Sie können nur eine der beiden Methoden wählen.
Um Samba über den inetd-Daemon laufen zu lassen, müssen Sie zwei Dateien editieren. Falls Sie die SuSE-Linux-Distribution einsetzen, sollten Sie allerdings nicht zu dieser Variante greifen. Ich setze voraus, dass der Unix-Server weder NIS noch NIS+ benutzt, um Systemdateien über das Netzwerk zu verteilen.
Zuerst muss ich die folgenden Einträge in /etc/services einfügen. Stellen Sie sicher, dass es keine anderen Einträge für TCP Port 139 und UDP Port 137 gibt:
netbios-ssn 139/tcpDanach fügen Sie mit Ihrem bevorzugten Texteditor die folgenden Einträge in der /etc/inetd.conf ein:
netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbdNach Speichern der Änderungen muss ich dem inetd-Daemon mitteilen, die Konfigurationsdatei erneut zu lesen. Normalerweise erreiche ich dies, indem ich ein HUP-Signal an den Prozess sende. Hier sind die Befehle, die ich auf meiner Slackware-3.5.-Linux-Installation benutze:
root# ps -ax | grep inetdWird Ihr Samba-Server häufig Verbindungsanfragen erhalten, möchten Sie smbd und nmbd vielleicht als Daemon starten, um die Reaktionszeit zu verkürzen. Dies können Sie durch den Parameter -D erreichen, wenn Sie smbd und nmbd starten.
Unix-Derivate benutzen heute in der Regel eine von zwei Methoden, um Prozesse beim Booten zu starten. Eine wird als System-V-init-Methode bezeichnet und von Betriebssystemen wie Solaris, SuSE-Linux und RedHat Linux benutzt. Die zweite ist die ältere BSD-Methode, die auf Systemen wie SunOS und Slackware Linux zum Einsatz kommt.
Zunächst stelle ich System-V-init-Skripte vor. Diese Skripte befinden sich normalerweise in /etc/rc3.d oder /etc/init.d mit Verknüpfungen von /etc/rc#.d, wobei # für einen bestimmten Runlevel steht. Sie sollten Samba in der Regel im Runlevel 3 starten. Die Skripte nehmen als einzelnes Befehlszeilenargument entweder start oder stop an, um den Dienst zu starten bzw. zu stoppen. Nachfolgend finden Sie ein Beispiel für ein Samba-Skript, das der System-V-Methode entspricht:
#!/bin/shZum Starten der Samba-Daemons geben Sie /etc/init.d/samba start ein. Bedenken Sie, dass das Skript auf die Datei smb.conf zugreifen muss!
Wollen Sie die Prozesse stoppen, geben Sie den Befehl erneut ein, ersetzen jedoch start durch stop.
Die BSD-artigen Skripte bieten nicht die Flexibilität, sie starten und stoppen zu können, wie sie System-V-init-Skripte bieten, aber sie sind etwas einfacher zu handhaben, da es insgesamt weniger Skripte sind.
Wenn das System bootet, durchläuft es in der Regel einen Prozess, der dem folgenden ähnelt:
Normalerweise wird der Samba-Serverprozess von /etc/rc.local gestartet. Hier ein Beispiel:
#!/bin/shEs gibt Varianten mit geringen Abweichungen, die versuchen, System-V- und BSD-Startskripts zu kombinieren. Sie sollten dazu einen Blick in die Manpages und andere Dokumentationen zu Ihrem System werfen, um genau zu bestimmen, wo Sie die Startbefehle platzieren müssen.
In Kapitel 3 habe ich darauf hingewiesen, dass Sie die Standardkonfiguration von Samba durch Befehlszeilenargumente oder Parameter in der smb.conf ändern können. Die meisten smb.conf-Parameter werden in Kapitel 5 dargestellt. Dieser Abschnitt gibt einen kurzen Überblick über die meistbenutzten verfügbaren Befehlszeilenargumente. Die besten Nachschlagewerke für aktuelle Optionen sind die smbd- und nmbd-Manpages. Die Manpages für die Samba-Programmfamilie werden installiert, wenn Sie make install ausgeführt haben, um die Binärdateien an die richtige Stelle zu kopieren. Ist dies der Fall, können Sie über den Standardbefehl man auf die Manpages zugreifen.
Haben Sie keine Manpages installiert, finden Sie sie für Versionen vor 2.0 in der Samba-Distribution unter docs/ und für die Version 2.0 oder höher unter docs/manpages. Um sich die Manpages anzusehen, suchen Sie die Dateien smbd.8 und nmbd.8 und führen den Befehl nroff aus:
nroff -man smbd.8 | moreOder, alternativ (auf diese Weise können Sie besser scrollen):
nroff -man smbd.8 | less Tabelle 4.1: smbd/nmbd-Befehlszeilenargumente
Option |
Beschreibung |
-D |
Samba läuft als Daemon, d.h., der Prozess läuft im Hintergrund und reagiert auf Anfragen. Sie sollten smbd mit dieser Option als Datei-Server laufen lassen, der nicht nur auf unregelmäßige Anfragen antworten muss. Standardmäßig läuft smbd nicht als Daemon. |
-d Debuglevel |
Spezifiziert den Debug-Level, auf dem der Prozess laufen soll. Der Debug-Level ist eine Zahl zwischen 1 und 10. |
-l Logdatei |
Der Pfad zu der Datei, in die der Prozess Logeinträge schreiben soll. |
-s Konfigurationsdatei |
Der Pfad zur Konfigurationsdatei, die der Prozess benutzen soll. |
Tabelle 4.1 listet einige häufig benutzte Optionen für smbd und nmbd auf. Eine komplette Auflistung finden Sie in den Manpages zum entsprechenden Prozess.
Bis hierher habe ich
Jetzt ist es an der Zeit zu überprüfen, ob ich bis hierhin Fehler gemacht habe. Ich werde auf einige übliche Fehler während der Einrichtung hinweisen und Ihnen Tips geben, wie Sie diese erkennen und korrigieren können.
Samba beinhaltet ein Utility namens smbclient, das ein FTP-ähnliches Interface für den Zugriff auf Samba-Server bietet. Tatsächlich wurde smbclient ursprünglich zum Testen von Samba verwendet. In diesem Fall ermöglicht es mir, den Samba-Server zu testen, ohne zusätzliche PCs benutzen zu müssen, die über ein Netzwerk mit dem Samba-Server verbunden sind. Obwohl smbclient nicht garantieren kann, dass es zu keinen Fehlern kommt, wenn die PC angeschlossen werden, sollte es grobe Fehler finden können.
Nachdem ich sichergestellt habe, dass die beiden Samba-Daemons laufen oder dass gültige Einträge vorhanden sind, um die Prozesse von inetd.conf zu starten, versuche ich eine Liste der Freigaben vom Server zu bekommen. Der Parameter -L NetBIOS-Name veranlasst smbclient, eine Liste der Freigaben von dem Server zu holen, der durch NetBIOS-Name spezifiziert ist. Ich benutze den Parameter -N, um die Aufforderung zur Eingabe eines Passworts zu vermeiden, da dies nicht notwendig ist, wenn ich nur die verfügbaren Freigaben sehen möchte:
root# /usr/local/samba/bin/smbclient -L EAGLE -NAlle drei von mir definierten Freigaben (homes, boss1 und printer1) tauchen in der Liste der Freigaben auf. Die Freigabe IPC$ wird automatisch erstellt und für das Browsing benutzt. Sie werden in späteren Kapiteln mehr darüber erfahren. Bis jetzt scheint alles in Ordnung zu sein.
Der nächste Schritt besteht darin, die individuellen Festplattenfreigaben zu überprüfen. Zunächst verbinde ich mich als joe mit der Freigabe [boss1]. Für die Verbindung mit einer Freigabe wird der Netzwerkpfad als //Servername/Freigabename dargestellt, wobei Servername und Freigabename durch die entsprechenden Werte ersetzt werden. Wenn ich mich in der bash-Shell unter einem anderen Benutzernamen verbinden will als dem, der in der Umgebungsvariable $USER gespeichert ist, muss ich den Parameter -U Benutzername verwenden:
root# /usr/local/samba/bin/smbclient //eagle/boss1 -U joeNach Eingabe des korrekten Passworts gibt smbclient die Fehlermeldung »Invalid network name in tree connect« zurück. In Kapitel 2, »Windows-Netzwerke«, habe ich erwähnt, dass eine Verbindung zu einem Verzeichnisbaum eingegangen wird, nachdem der Client authentifiziert wurde und versucht, sich mit einer bestimmten Ressource zu verbinden. Nach einigen Überprüfungen finde ich heraus, dass ich statt /export/boss1 den Verzeichnisnamen /export/boss angegeben habe und benenne es entsprechend um:
root# ls -l /exportNachdem ich meinen Fehler korrigiert habe, versuche ich es erneut. Diesmal werde ich erfolgreich verbunden. Sie werden bemerken, dass die Hosts-Datei, die ich hochgeladen habe, mit den korrekten Berechtigungen sowie dem korrekten Gruppeneigentümer erstellt wurde. Ich kann eine ähnliche Methode benutzen, um die [homes]-Freigabe zu überprüfen:
root# smbclient //bilbo/boss1 -U joeNachdem ich die Festplattenfreigaben getestet habe, muss ich nur noch den Netzwerkdrucker überprüfen. Der Prozess ist der gleiche, mit der Ausnahme, dass ich den Parameter -P benutze, um smbclient mitzuteilen, dass es sich mit der Freigabe als Drucker statt als Netzwerklaufwerk verbinden soll. Über den Befehl put, der eine Datei an einen Drucker lädt, wird smbclient informiert, die zu druckende Datei zu übertragen. Über den Befehl lpq kann ich mir die entsprechende Druckerwarteschlange ansehen, um sicherzustellen, dass Samba die Datei korrekt übertragen hat:
root# smbclient //bilbo/printer1 -P -U bossZusätzlich zu den bereits erwähnten Tools gibt es noch einige andere Utilities, die in der Samba-Distribution enthalten sind (siehe Tabelle 4.2). Diese finden Sie im Verzeichnis /usr/local/samba/bin/.
Tabelle 4.2: Andere Tools und Utilities in der Samba-Programmfamilie
Name des Tools |
Beschreibung |
Dieses Tool generiert Ausgaben über den aktuellen Status von Verbindungen und geschützten Dateien. | |
Dieses Utility fragt nach NetBIOS-Namensinformationen über TCP. | |
Dieses einfache Utility überprüft, ob ein Druckername als Freigabename benutzt werden kann, d.h., dass der Druckername in der /etc/printcap gefunden werden kann. | |
Dieses Tool ermöglicht die Kompilierung und Dekompilierung von Codeseitendateien, die mit den Internationalisierungsfunktionen von Samba benutzt werden. | |
Dieses Shell-Skript bietet eine Methode, Dateien über das Utility smbclient auf Unix-Bandlaufwerke auf entfernten SMB-Freigaben zu sichern und wiederherzustellen. Weitere Informationen über Backups finden Sie in Anhang B, »Tipps und Tricks«. | |
Dieses kleine Zusatzprogramm wird von smbd benutzt, um Shell-Befehle auszuführen. Mit Zusatzprogramm meine ich, dass es als Interface agiert, damit smbd bestimmte Shell-Skripte oder andere Befehlszeilen-Tools starten kann. | |
Dieses Befehlszeilen-Tool, das zu smbclient analog ist, ermöglicht die Durchführung von DCE/RPC für Windows-NT- und Samba-Server. Weitere Informationen dazu finden Sie in Anhang A, »Experimentelle PDC-Unterstützung«. | |
Dieses GUI-Administrationstool verwaltet die smb.conf-Datei. GUI-Administrationstools werden in Kapitel 9, »GUI-Administrationstools», ausführlicher dargestellt. | |
Diese Tools bieten Methoden für die Manipulation der LanMan- und NT-Hashfunktionen, die in der Datei private |
smbstatus und nmblookup sind zwei der aufgelisteten Tools, die extrem nützlich sein können. Wir werden uns diese jetzt genauer ansehen und fangen mit smbstatus an.
Der smbd-Daemon für eine Verbindung läuft so lange als root, bis er für den verbundenen Benutzer eine Aufgabe ausführen muss. Dann wird die Prozess-UID zur Unix-UID des Benutzers und schaltet wieder zurück zu root. Dies kann zu Problemen führen, wenn es darum geht, welcher smbd-Prozess zu welchem Benutzer gehört. smbstatus gibt Informationen über aktuell eingeloggte Benutzer und geschützte Dateien aus. Die folgende Ausgabe zeigt, dass ich mit meinem Home-Verzeichnis verbunden bin und eine Datei zur Bearbeitung geöffnet habe:
root# smbstatusDas zweite Tool, das ich oft benutze, ist nmblookup. Dieses Befehlszeilen-Utility bietet eine Methode, Informationen über NetBIOS-Namen abzurufen und die entsprechende IP-Adresse zu erhalten:
root# /usr/local/samba/bin/nmblookup eaglenmblookup sucht standardmäßig nach den Namen des Typs <00>. Wenn Sie an den NetBIOS-Namen, über den Sie Informationen haben wollen, #<xx> anhängen, kann nmblookup auch einen anderen Ressourcentyp auflösen, wie z.B. den Messenger-Server-Typ <03>:
root# /usr/local/samba/bin/nmblookup eagle#03nmblookup kann auch Gruppennamen auflösen:
root# /usr/local/samba/bin/nmblookup fowlplayUnd schließlich können Sie den Parameter -S verwenden, um eine Knotenstatusanfrage zum Namen durchzuführen und eine Ausgabe zu erhalten, die der des Befehls nbtstat.exe -a NetBIOS-Name ähnlich ist, den Sie von einem Windows-Rechner über die (MS-DOS-)Eingabeaufforderung starten:
root# /usr/local/samba/bin/nmblookup chipsndips -SSamba kann als effektiver Datei- und Druckerserver für PCs in einer Gruppenumgebung agieren. Die Mechanismen für die Zugriffskontrolle werden von dem zugrunde liegenden Betriebssystem gehandhabt, mit dem Sie vertraut sind, d.h. dem Standard-lpr-Drucksystem (oder anderen) und den grundlegenden Unix-Dateiberechtigungsbits. Das Erzeugen von Gruppenfreigaben oder entfernten Druckerfreigaben ist entsprechenden Aktionen unter Unix sehr ähnlich.
Zunächst müssen Sie sicherstellen, dass auf die Ressource von der Unix-Seite her zugegriffen werden kann, z.B. dass Benutzer über den Befehl lpr -PDruckername Datei.txt an den Drucker drucken und erfolgreich auf Dateien im freigzugebenden Verzeichnis zugreifen können.
Danach müssen die Freigaben in der Samba-Konfigurationsdatei definiert werden. Wie Sie in den nachfolgenden Kapiteln sehen werden, gibt es viele Parameter, die Freigaben definieren und kontrollieren.
Samba bietet außerdem viele Tools für die Administration des Servers und die Diagnose von Problemen. Zwei der Diagnose-Utilities, die Sie kennen gelernt haben, sind smbstatus und nmblookup.
Kann ich Samba Dateisysteme freigeben, die über NFS gemountet wurden?
Ja.
Theoretisch gibt es keine Einschränkungen. In der Praxis wird die Grenze durch die Server-Hardware bestimmt, insbesondere durch die Gesamtgröße des verfügbaren Arbeitsspeichers. Es kann auch von der Menge der Aktivität abhängen, die Sie von den smbd-Prozessen erwarten. Eine Situation, in der ein smbd-Prozess eine große Menge der CPU-Leistung belegt, ist, wenn auf einem Windows-Client ein Webbrowser läuft, der Dateien in den Cache eines Netzwerklaufwerks schreibt.
Freigabe - Eine Freigabe, manchmal auch als Dienst bezeichnet, ist eine Ressource, wie z.B. ein Verzeichnis oder ein Drucker, der mit Hilfe des SMB-Protokolls für entfernte Rechner über ein Netzwerk zur Verfügung gestellt wurde.
![]()