Samba, 2. Auflage Von Jay Ts, Robert Eckstein, and David Collier-Brown 2. Auflage, August 2003 O'Reilly Verlag, ISBN: 3-89721-359-1
Inhalt Vorwort
1 Lerne den Samba Was ist Samba? Was leistet Samba? Sich mit einem SMB-Netzwerk vertraut machen Eine Einführung in das SMB-Protokoll Windows-Arbeitsgruppen und Domänen Was ist neu in Samba 2.2? Was ist neu in Samba 3.0? Was leistet Samba? Ein Überblick über die SambaDistribution Woher bekomme ich Samba?
2 Samba auf einem Unix-System installieren
In der Distribution enthaltene Versionen Die Samba-Distribution herunterladen Samba konfigurieren Kompilierung und Installation von Samba SWAT aktivieren Eine grundlegende SambaKonfigurationsdatei Firewall-Konfiguration Starten der Samba-Daemons Die Samba-Daemons testen
3 Windows-Clients konfigurieren Windows-Netzwerkkonzepte Windows 95/98/Me-Computer einrichten Windows NT 4.0-Computer einrichten Windows 2000-Computer einrichten Windows XP-Computer einrichten
4 Windows NT-Domänen
Samba als primärer DomänenController Anlegen von Computerzugängen Windows-Clients für DomänenAnmeldungen konfigurieren Anmeldeskripten Roaming-Profile Systemrichtlinien Samba als Domänen-Member-Server Optionen für Windows NT-Domänen
5 Unix-Clients Dateien unter Windows 95/98/Me freigeben Dateien unter Windows NT/2000/XP freigeben smbclient smbfs smbsh smbutil und mount_smbfs
6 Die Samba-Konfigurationsdatei
Die Samba-Konfigurationsdatei Besondere Abschnitte Konfigurationsoptionen Server-Konfiguration Die Konfiguration einer Plattenfreigabe Netzwerkoptionen für Samba Virtuelle Server Konfigurationsoptionen für die Protokollierung
7 Die Namensauflösung und das Durchsuchen Namensauflösung Das Durchsuchen
8 Erweiterte Verzeichnisfreigaben Unterschiede zwischen Dateisystemen Dateiberechtigungen und Attribute unter MS-DOS und Unix Windows NT/2000/XP-ACLs Namensverkürzung und Groß-/ Kleinschreibung
Sperren und Oplocks Verbindungsskripten Microsoft Distributed Filesystems Mit NIS arbeiten
9 Benutzer und Sicherheit Benutzer und Gruppen Zugriff auf Freigaben steuern Authentifizierung von Clients Kennwörter Authentifizierung mit winbind
10 Drucken Druck-Jobs an Samba senden Auf Windows-Druckern drucken
11 Weitere Informationen über Samba Zeit-Synchronisierung
Magische Skripten Internationalisierung Der Windows-Nachrichtendienst Diverse Optionen
12 Fehlersuche und Problembehandlung Der Werkzeugkasten Der Fehlerbaum Weitere Ressourcen
A Beispielkonfigurationsdateien
B Kurzreferenz der SambaKonfigurationsoptionen
C Zusammenfassung der SambaDaemons und -Befehle
D Samba mit CVS herunterladen
E Konfigurationsoptionen
F Samba unter Mac OS X Server betreiben
G GNU Free Documentation License Index
Vorwort Sie lesen ein Buch über Samba, eine SoftwareSammlung, die Windows, Unix und andere Betriebssysteme mit Hilfe des Windows-eigenen Netzwerkprotokolls verbindet. Samba erlaubt es Unix-Servern, Windows-Netzwerkdienste anzubieten, indem es das Dateisystem und die Netzwerkmodelle von Unix an diejenigen von Windows anpasst. Samba bildet dabei eine Brücke zwischen den beiden Systemen, indem es die entsprechenden Teile ihrer Architekturen miteinander verbindet und eine Übersetzung anbietet, wenn dies erforderlich ist. Das Überbrücken der Lücke zwischen Systemen, die so unterschiedlich sind wie Windows und Unix, ist eine komplizierte Aufgabe, die Samba jedoch überraschend gut erledigt. Um ein guter Samba-Administrator zu sein, müssen Ihre Fähigkeiten denen von Samba ähneln. Sie brauchen Kenntnisse in grundlegender UnixSystem- und Netzwerkadministration und benötigen ein gutes Verständnis der WindowsDateisystem- und Netzwerkgrundlagen. Darüber hinaus müssen Sie lernen, wie Samba den »grauen Bereich« zwischen Unix und Windows füllt. Sobald Sie wissen, wie alles zusammenpasst, werden Sie leicht in der Lage sein, einen Samba-Server zu konfigurieren, um Ihrem Netzwerk zuverlässige und leistungsstarke Computer-Ressourcen zur Verfügung zu stellen.
Unsere Aufgabe besteht darin, Ihnen all dies zu erleichtern. Dazu beginnen wir in Kapitel 1 mit einem schnellen und dabei doch umfassenden Überblick über den Windows-Netzwerkbetrieb, gefolgt von den eher anleitungsorientierten Kapiteln 2 und 3, in denen Sie erfahren, wie Sie einen minimalen Samba-Server aufsetzen und Windows-Clients für das Zusammenspiel mit diesem Server konfigurieren. Wahrscheinlich werden Sie überrascht sein, wie schnell Sie die erforderlichen Aufgaben ausführen können. Wir glauben, dass ein praktischer Ansatz am effektivsten ist. Daher können Sie den SambaServer, den Sie in den Kapiteln 2 und 3 aufgebaut haben, als Testsystem zum Ausprobieren der Beispiele einsetzen, die wir im Laufe des Buches zeigen und beschreiben. Sie können die Kapitel in beliebiger Reihenfolge lesen, aber wenn Sie von Kapitel 4 an nacheinander alle Kapitel durcharbeiten, haben Sie nach dem Beenden des Buches einen gut konfigurierten Samba-Server, den Sie sofort einsetzen können. Sie müssen lediglich die entsprechende Unterstützung für Ihre gewünschten Aufgabenstellungen hinzufügen, wenn wir die einzelnen Funktionen und Merkmale erläutern.
An wen sich dieses Buch richtet Dieses Buch ist vorrangig für UnixAdministratoren gedacht, die Windows-Clients in
ihrem Netzwerk unterstützen müssen. Außerdem richtet sich das Buch an alle, die von einem UnixClient aus auf die Ressourcen eines WindowsNetzwerks zugreifen möchten. Wir gehen zwar davon aus, dass Sie mit den Grundlagen der UnixSystemadministration vertraut sind, erwarten jedoch nicht, dass Sie ein Netzwerkexperte sind. Aus diesem Grund bemühen wir uns, Ihnen ungewöhnliche Definitionen und Begriffe näher zu bringen. Außerdem verlangen wir nicht, dass Sie ein Experte für Microsoft Windows sind. Wir erklären sorgfältig alle grundlegenden Konzepte, die mit dem Netzwerkbetrieb unter Windows zusammenhängen, und betrachten den WindowsAnteil bei den Installationsaufgaben relativ ausführlich, wobei wir Beispiele sowohl für Windows 95/98/Me als auch für Windows NT/2000/XP liefern, die sich deutlich voneinander unterscheiden. Für die Unix-Seite liefern wir Beispiele, die mit verbreiteten UnixBetriebssystemen, wie etwa Linux, Solaris, FreeBSD und Mac OS X, funktionieren.
Aufbau des Buches Hier folgt eine kurze Beschreibung der einzelnen Kapitel: Kapitel 1, Lerne den Samba, stellt Samba und seine Fähigkeiten vor und beschreibt anschließend die wichtigsten Konzepte von NetBIOS und SMB/CIFS-Netzwerken. Schließlich
liefern wir einen Überblick über die Daemons und Dienstprogramme, die in der Samba-Distribution enthalten sind. Kapitel 2, Samba auf einem Unix-System installieren, behandelt Konfiguration, Kompilierung, Installation, Einrichtung und Tests eines Samba-Servers auf einer Unix-Plattform. Kapitel 3, Windows-Clients konfigurieren, erklärt, wie Sie Microsoft Windows 95/98/Me- und Windows NT/2000/XP-Clients so konfigurieren, dass sie Teil eines SMB-Netzwerks werden. Kapitel 4, Windows NT-Domänen, erläutert die Vor- und Nachteile von Windows NT-Domänen und gibt an, wie Sie Samba dazu bringen, in einem Netzwerk zu funktionieren, das als Windows NT-Domäne eingerichtet ist. Kapitel 5, Unix-Clients, beschreibt Methoden zum Zugriff auf SMB-Freigaben im Netzwerk von UnixClient-Systemen aus. Kapitel 6, Die Samba-Konfigurationsdatei, geht auf die Struktur der Samba-Konfigurationsdatei ein und zeigt Ihnen, wie Sie Filesharing-Dienste verwalten. Kapitel 7, Die Namensauflösung und das Durchsuchen, führt Sie in die Namensauflösung ein, die dazu dient, NetBIOS-Computernamen in IP-Adressen umzuwandeln. Außerdem wird Ihnen das Durchsuchen vorgestellt, das Verfahren, mit
dessen Hilfe in SMB-Netzwerken ermittelt werden kann, welche Ressourcen im Netzwerk freigegeben werden. Kapitel 8, Erweiterte Verzeichnisfreigaben, setzt die Diskussion der Freigabeoptionen fort und behandelt höhere Funktionen wie Berechtigungen, Zugriffskontrolllisten, opportunistische Sperren und das Einrichten eines Dfs-(Distributed filesystem-)Baums. Kapitel 9, Benutzer und Sicherheit, behandelt, wie Sie Samba-Benutzer einrichten, führt Sie in die Samba-Sicherheit ein und zeigt Ihnen, wie Sie mit verschlüsselten und unverschlüsselten Kennwörtern arbeiten. Kapitel 10, Drucken, bespricht das Einrichten von Druckern zum Freigeben von Unix-Druckern im SMB-Netzwerk und zeigt, wie Sie UnixWorkstations den Zugriff auf freigegebene SMBDrucker ermöglichen. Kapitel 11, Weitere Informationen über Samba, fasst verschiedene Themen zusammen, die mit Samba zu tun haben, wie etwa das Konfigurieren von Samba-Freigaben für Programmierer und Probleme mit der Internationalisierung. Kapitel 12, Fehlersuche und Problembehandlung, erklärt, was Sie tun müssen, wenn Sie Probleme mit der Installation von Samba haben. Dieses vergleichsweise lange Kapitel ist vollgestopft mit Hinweisen zur
Fehlersuche und Strategien zum Feststellen, was schiefgegangen ist. Anhang A, Beispielkonfigurationsdateien, liefert funktionsfähige Beispiele für smb.conf-Dateien, die Sie benutzen können, um Samba für seine allgemeineren Aufgaben zu konfigurieren. Sie können die Beispiele leicht verändern und an eine Vielzahl von Gegebenheiten anpassen. Anhang B, Kurzreferenz der SambaKonfigurationsoptionen, behandelt alle Optionen, die in der Samba-Konfigurationsdatei auftauchen können. Anhang C, Zusammenfassung der SambaDaemons und -Befehle, ist eine Kurzreferenz, die alle Server-Daemons und Werkzeuge des SambaPakets vorstellt. Anhang D, Samba mit CVS herunterladen, erläutert, wie Sie die neueste Entwicklungsversion des Samba-Quellcodes mit Hilfe des CVS herunterladen können. Anhang E, Konfigurationsoptionen, dokumentiert alle Optionen, die vor der Kompilierung des Samba-Quellcodes zusammen mit dem configureBefehl eingesetzt werden können. Anhang F, Samba unter Mac OS X Server betreiben, enthält Anweisungen zum Freigeben von Dateien und Druckern mit der ServerAusgabe von Mac OS X.
Anhang G, GNU Free Documentation License, ist die Copyright-Lizenz, unter der dieses Buch veröffentlicht wurde.
In diesem Buch verwendete Konventionen Die folgenden typographischen Konventionen werden in diesem Buch verwendet: Kursiv Dateinamen, Dateierweiterungen, URLs, ausführbare Dateien, Befehlsoptionen und besonders wichtige Begriffe. Nichtproportionalschrift Samba-Konfigurationsoptionen, Computernamen, Benutzer- und Gruppennamen, Hostnamen, Domainnamen, anderer Code, der im Text auftaucht, und Kommandozeilen-Informationen, die wörtlich eingegeben werden sollen. Nichtproportionalschrift fett Befehle, die vom Benutzer eingegeben werden, und neue Konfigurationsoptionen, auf die wir die Leser hinweisen wollen. Nichtproportionalschrift kursiv Zu ersetzender Inhalt in Code und Kommandozeilen-Informationen.
Dies kennzeichnet einen Hinweis, der wichtige Informationen zum Text enthält.
Dies kennzeichnet eine Warnung.
Danksagungen Wir danken Leon Towns-von Stauber dafür, dass er den Einsatz von Samba unter Mac OS X so gründlich untersucht und Texte geschrieben hat, die in den Kapiteln 2, 5 und 10 auftauchen. Außerdem stammt der gesamte Anhang F von ihm. Wir danken darüber hinaus unseren technischen Lektoren Sam Johnston, Matthew Temple, Marty Leisner und Don McCall.
Jay Ts
Das Schreiben dieses Buches wäre außerordentlich schwierig gewesen, wenn die Firma VMware, Inc. mir nicht großzügigerweise eine Kopie von VMware Workstation zur Verfügung gestellt hätte. Ich möchte Rik Farrow für seine klärenden Kommentare zu den Sicherheitsthemen im Bereich Samba und Windows danken und sowohl ihm als auch Rose Moon für ihre unterstützende Freundschaft. Mein Dank geht auch an Mark Watson für seine Ermutigung und seine Ratschläge hinsichtlich des Schreibens technischer Bücher. Außerdem möchte ich auf diesem Wege meine Wertschätzung für Andy Oram von O'Reilly zum Ausdruck bringen, der ein hilfsbereiter, freundlicher und unbeschwerter Lektor ist und mir Begriffe angeboten hat, mit denen ich mich einverstanden erklären konnte - etwas, das nur wenige Lektoren überhaupt versuchen. SuSE, Inc. hat dankenswerterweise eine Kopie von SuSE Linux 8.1 Professional bereitgestellt.
Robert Eckstein Zunächst gilt mein Dank Dave Collier-Brown und Peter Kelly für ihre Hilfe bei der Entstehung dieses Buches. Ich möchte außerdem allen technischen Lektoren danken, die dabei geholfen haben, dieses Buch in so kurzer Zeit in die jetzige Form zu bringen: Matthew Temple, Jeremy Allison und natürlich Andrew Tridgell. Andrew und Jeremy, die nicht nur ein wunderbares Produkt geschaffen, sondern mich auch beim Schreiben dieses Buches in der letzten Phase unermüdlich unterstützt haben - Hut ab, Jungs! Eine herzliche
Umarmung geht an meine Frau Michelle, die wieder einmal mit einem Ehemann auskommen musste, dem zu viel Koffein und ein enger Zeitplan zugesetzt hatten. Dank auch an Dave Sifry und die Leute bei LinuxCare, San Francisco, die mich bereitwillig beherbergten, als ich Andrew Tridgell besucht habe. Schließlich vielen, vielen Dank an meinen Lektor Andy Oram, der das Buch (sehr) geduldig durch viele Phasen geleitet hat, bis es zu unserer Zufriedenheit ausfiel.
David Collier-Brown Ich möchte mich besonders bei Joyce bedanken, die während der manchmal aufregenden Entstehungszeit dieses Buches mit mir zurechtkommen musste. Dank an Andy Oram, dessen wohlmeinende Kritik meinen Beitrag zu diesem Buch erst ermöglicht hat. Dank auch an das Team bei Opcom, das dem offenbar »Verrückten« in seiner Mitte seinen Willen ließ, an Ian MacMillan, der freiwillig mehrere meiner frühen Entwürfe von der Computerfreak-Sprache ins Englische »übersetzte«. Ich möchte mich außerdem besonders bei Perry Donham, Drew Sullivan und Jerry DeRoo dafür bedanken, dass sie dieses irre Projekt begannen und unterstützten. Schließlich danke ich Bob Eckstein für die letzte, nachhaltige und professionelle Anstrengung, die das ganze Buch auf das Niveau brachte, das Andy erwartete.
Alle
Wir möchten besonders Perry Donham und Peter Kelly dafür danken, dass sie den ersten Entwurf dieses Buches ausgearbeitet haben. Perry konnte zu späteren Entwürfen zwar nichts mehr beisteuern, aber sein Material war unentbehrlich, um das Buch auf den rechten Weg zu bringen. Außerdem stammt der Teil des Texts über das Durchsuchen des Netzwerks ursprünglich von O'Reilly-Mitarbeiter Dan Shearer.
Kapitel 1 Lerne den Samba Samba ist für jeden, der sowohl Windows- als auch Unix-Systeme in seinem Netzwerk betreibt, ein außergewöhnlich nützliches Werkzeug. Es läuft auf einem Unix-System und erlaubt dabei Windows, Dateien und Drucker auf dem Unix-Host freizugeben, und Unix-Benutzern, auf Ressourcen zuzugreifen, die durch WindowsSysteme freigegeben wurden. Es mag zwar nur natürlich sein, einen Windows-Server einzusetzen, um Dateien und Drucker in einem Netzwerk bereitzustellen, das Windows-Clients enthält, allerdings gibt es gute Gründe, für diese Aufgabe einen Samba-Server vorzuziehen. Samba ist eine zuverlässige Software, die auf zuverlässigen Unix-Betriebssystemen läuft. Dadurch treten weniger Probleme auf, und die Wartungskosten verringern sich. Samba bietet darüber hinaus eine bessere Leistung bei starker Last, wobei beispielsweise ein Server mit Windows 2000 auf identischer PC-Hardware um den Faktor 2 übertroffen wird (entsprechend veröffentlichten unabhängigen Benchmarks). Wenn gewöhnliche, preiswerte PC-Hardware den Anforderungen einer großen Client-Last nicht mehr gerecht wird, kann der Samba-Server leicht auf ein proprietäres Unix-Mainframe umgesetzt werden, dessen Leistungsfähigkeit die von Windows auf einem PC um ein Vielfaches übertrifft. Und als wenn all dies noch nicht genug wäre, bietet Samba einen ausgesprochen netten Kostenvorteil: Es ist nämlich kostenlos. Nicht nur die Software selbst steht frei zur Verfügung, es werden auch keine Client-Lizenzen benötigt. Außerdem läuft es auf qualitativ hochwertigen, freien Betriebssystemen wie Linux und FreeBSD. Nach dem Lesen des vorangegangenen Absatzes könnten Sie zu dem Schluss kommen, dass Samba üblicherweise von großen Einrichtungen mit tausenden von Benutzern im Netzwerk eingesetzt wird - und Sie könnten Recht haben! Zu den Benutzern von Samba jedoch gehören Organisationen auf der ganzen Welt, in allen Arten und Größen: von internationalen Unternehmen über kleine und mittelständische Firmen bis hin zu Einzelpersonen, die Samba auf ihren Linux-Laptops ausführen. Im letzten Fall wird ein Programm wie VMware verwendet, um Windows auf dem gleichen Computer laufen zu lassen, wobei Samba es den beiden Betriebssystemen erlaubt, Dateien gemeinsam zu nutzen.
Die Vielfalt der Benutzer ist sogar noch größer - Samba wird von Unternehmen, Banken und anderen Finanzeinrichtungen, Regierungen und Militäreinrichtungen, Schulen, Bibliotheken, Kunstgalerien, Familien und sogar Autoren benutzt! Dieses Buch wurde auf einem Linux-System mit VMware und Windows 2000 erstellt. Der Adobe FrameMaker lief unter Windows, und die Dokumentdateien wurden mittels Samba auf dem Linux-Dateisystem bereitgestellt. Hört sich all das verlockend an? In diesem Fall ermuntern wir Sie, weiterzulesen, Samba kennen zu lernen und unseren Beispielen zu folgen, um einen eigenen Samba-Server einzurichten. In diesem und den folgenden Kapiteln werden wir Ihnen genau sagen, wie Sie anzufangen haben.
Was ist Samba? Samba ist eine Sammlung mehrerer Unix-Anwendungen, die über das SMB-Protokoll (Server Message Block-Protokoll) kommunizieren. Die Betriebssysteme Microsoft Windows und OS/2 verwenden SMB für Client/Server-Netzwerke zum Bereitstellen gemeinsam genutzter Dateien und Drucker sowie verwandter Operationen. Weil Samba dieses Protokoll unterstützt, können Sie Unix-Server einbeziehen, indem diese über das gleiche Netzwerkprotokoll wie Microsoft Windows-Produkte kommunizieren. Dadurch kann sich eine UnixMaschine mit Samba in Ihrem Microsoft Windows-Netzwerk als Server ausgeben. Ein Samba-Server stellt folgende Dienste zur Verfügung: ● ●
●
● ●
●
Freigabe eines oder mehrerer Verzeichnisbäume Freigabe eines oder mehrerer Dfs-Bäume (Distributed file system) Freigabe von Druckern, die auf dem Server installiert sind, für Windows-Clients im Netzwerk Unterstützung von Clients beim Durchsuchen des Netzwerks Authentifizierung von Clients, die sich an einer WindowsDomäne anmelden Bereitstellung oder Unterstützung der Namensauflösung über WINS (Windows Internet Name Service)
Das Samba-Programmpaket enthält außerdem Client-Werkzeuge, die es Benutzern auf einem Unix-System erlauben, auf Ordner und Drucker zuzugreifen, die Windows-Systeme und Samba-Server im Netzwerk bereitstellen.
Samba verdanken wir Andrew Tridgell, der derzeitig das SambaEntwicklerteam leitet. Andrew begann das Projekt im Jahr 1991, als er mit einem DEC-Programm namens Pathworks arbeitete, das DECVAX-Computer mit Computern anderer Hersteller verbinden sollte. Ohne sich der Wichtigkeit dessen bewusst zu sein, was er tat, schuf Andrew ein Datei-Server-Programm für ein eigenartiges Protokoll, das Bestandteil von Pathworks war. Später stellte sich heraus, dass es sich bei diesem Protokoll um SMB handelte. Einige Jahre später erweiterte er den auf seine Bedürfnisse zugeschnittenen Server und begann, ihn im Internet unter dem Namen »SMB Server« zu verteilen. Allerdings konnte Andrew diesen Namen nicht lange benutzen, da eine Firma ihn bereits für ihre Produkte hatte eintragen lassen - er schlug daraufhin folgenden Unix-Weg ein, um sein Programm umzubenennen: $ grep -i '^s.*m.*b' /usr/dict/words
Die Ausgabe lautete: salmonberry samba sawtimber scramble
Und so wurde der Name »Samba« geboren. Heutzutage konzentriert sich die Samba-Sammlung um einige UnixDaemons, die freigegebene Ressourcen - so genannte Freigaben oder Dienste (oder Services) - für SMB-Clients im Netzwerk bereitstellen. Dabei handelt es sich um folgende Daemons: smbd Ein Daemon, der Verzeichnisse und Drucker in einem SMBNetzwerk freigibt und die Echtheit von Clients überprüft (authentifiziert) und bestätigt (autorisiert). nmbd Ein Daemon, der den NetBIOS-Namensdienst und WINS, die Microsoft-Implementierung eines NetBIOS-Name-Servers (NBNS), unterstützt. Er hilft außerdem beim Durchsuchen des
Netzwerks. Samba wird derzeit von einer Gruppe Freiwilliger unter der Leitung von Andrew Tridgell gewartet und erweitert. Wie das LinuxBetriebssystem wird auch Samba von seinen Autoren als Open Source Software (http://open-source.org) angesehen und unter der GNU General Public License (GPL) vertrieben. Seit seiner Einführung wurde die Entwicklung von Samba teilweise von der Australian National University gesponsert, an der Andrew Tridgell promoviert hat. Seitdem haben viele andere Organisationen Samba-Entwickler unterstützt, einschließlich LinuxCare, VA Linux Systems, HewlettPackard und IBM. Es zeugt von einer hohen Wertschätzung für Samba, dass sowohl kommerzielle als auch nicht-kommerzielle Einrichtungen bereit sind, ein Open Source-Projekt zu unterstützen. Auch Microsoft leistete einen Beitrag, indem die Firma im Jahr 1996 ihre Definitionen des SMB-Protokolls der Internet Engineering Task Force (IETF) als Common Internet File System (CIFS) zur Verfügung stellte. In diesem Buch ziehen wir es zwar vor, den Begriff »SMB« zu benutzen, allerdings werden Sie das Protokoll auch oft unter der Bezeichnung »CIFS« finden. Das gilt besonders für die Website von Microsoft.
Was leistet Samba? Wie bereits beschrieben, kann Samba Ihnen dabei helfen, Windowsund Unix-Systeme in einem Netzwerk nebeneinander einzusetzen. Es gibt jedoch noch weitere Gründe, die Sie zur Verwendung von Samba in Ihrem Netzwerk bewegen können: ●
●
●
●
●
●
Sie wollen oder können sich keinen voll ausgestatteten Windows-Server leisten, sind aber dennoch auf dessen Funktionalität angewiesen. Die Client Access Licenses (CALs), die Microsoft für den Zugriff jedes Windows-Clients auf einen Windows-Server verlangt, sind für Sie unerschwinglich. Sie wollen einen gemeinsamen Bereich für Daten oder Benutzerverzeichnisse bereitstellen, um den Übergang von einem Windows-Server auf einen Unix-Server bzw. umgekehrt zu erleichtern. Sie wollen Drucker sowohl für Windows- als auch für UnixWorkstations bereitstellen. Sie unterstützen eine Gruppe von Computer-Benutzern, die eine Mischung aus Windows- und Unix-Computern einsetzen. Sie wollen die Unix- und die Windows-Authentifizierung
●
integrieren, indem Sie eine einzige Datenbank mit Benutzerzugängen bereitstellen, die auf beiden Systemen funktionieren. Sie wollen Unix-, Windows-, Macintosh- (OS X) und andere Systeme mit Hilfe eines einzigen Protokolls vernetzen.
Lassen Sie uns eine kurze Tour durch ein Samba-System im Einsatz machen. Gehen Sie von folgender grundlegender Netzwerkkonfiguration aus: ein Unix-System mit Samba und dem Namen toltec sowie ein paar Windows-Clients mit den Namen maya und aztec; alle Computer sind über ein LAN miteinander verbunden. Nehmen Sie weiterhin an, dass lokal an toltec der Tintenstrahldrucker lp angeschlossen ist. Außerdem ist auf diesem Computer ein Verzeichnis namens spirit im Netzwerk freigegeben. Beide Ressourcen können den beiden anderen Computern angeboten werden. Ein Modell dieses Netzwerks sehen Sie in Abbildung 1-1. Abbildung 1-1 Ein einfaches Netzwerk mit einem Samba-Server
In diesem Netzwerk befinden sich alle erwähnten Computer in derselben Arbeitsgruppe. Eine Arbeitsgruppe ist einfach nur eine Kennzeichnung für eine beliebige Sammlung von Computern mit ihren Ressourcen in einem SMB-Netzwerk. Mehrere Arbeitsgruppen können friedlich nebeneinander existieren - in unserem Beispiel aber gibt es ausschließlich die Arbeitsgruppe METRAN.
Ein Verzeichnis freigeben Wenn alles korrekt konfiguriert ist, sollten Sie in der Lage sein, den Samba-Server toltec in der Netzwerkumgebung des Windows-
Rechners maya zu sehen. Und in der Tat, Abbildung 1-2 zeigt die Netzwerkumgebung auf dem Computer maya, die toltec und alle anderen Rechner enthält, die sich in der Arbeitsgruppe METRAN befinden. Beachten Sie das Symbol Gesamtes Netzwerk ganz oben in der Liste. Wie wir bereits erwähnten, kann es in einem SMBNetzwerk mehrere Arbeitsgruppen gleichzeitig geben. Klickt ein Benutzer auf das Symbol Gesamtes Netzwerk, erscheint eine Liste aller Arbeitsgruppen, die momentan im Netzwerk existieren. Abbildung 1-2 Das Verzeichnis Netzwerkumgebung
Sie können sich den Server toltec näher ansehen, indem Sie auf das entsprechende Symbol doppelklicken. Dadurch wird toltec selbst angesprochen und eine Liste seiner bereitgestellten Freigaben - der Datei- und Druckerressourcen - angefordert. In unserem Fall gibt es auf dem Server einen Drucker namens lp, ein HomeVerzeichnis namens jay und eine Verzeichnisfreigabe namens spirit, wie Sie in Abbildung 1-3 sehen. Abbildung 1-3 Freigaben des Servers Toltec, von maya aus gesehen
Beachten Sie, dass Windows standardmäßig eine gemischte Schreibweise für Computernamen verwendet (Toltec). Die Groß-/ Kleinschreibung spielt bei Computernamen keine Rolle, so dass Sie je nach verwendeter Anzeige oder Ausgabe toltec, Toltec und TOLTEC sehen werden - sämtliche Namen beziehen sich auf dasselbe System. Dank Samba sieht Windows 98 den Unix-Server als gültigen SMB-Server an und kann auf das freigegebene Verzeichnis spirit zugreifen, als handele es sich dabei um einen weiteren Systemordner. Ein beliebtes Merkmal von Windows ist, dass Sie einem bekannten, freigegebenen Verzeichnis im Netzwerk einen Laufwerkbuchstaben (wie etwa E:, F: oder Z:) zuweisen können, indem Sie im WindowsExplorer die Funktion Netzlaufwerk verbinden verwenden.1 Sobald Sie das getan haben, können Ihre Anwendungen den Ordner im Netzwerk über den Laufwerkbuchstaben ansprechen. Sie können Daten darauf speichern, Programme darauf installieren und ausführen und ihn sogar mit einem Kennwort gegen unerwünschte Besucher schützen. In Abbildung 1-4 sehen Sie, wie ein Laufwerkbuchstabe einem Netzwerkverzeichnis zugeordnet wird. Abbildung 1-4 Zuordnung eines Netzlaufwerks zu einem WindowsLaufwerkbuchstaben
Schauen Sie sich den Eintrag Pfad: in der Dialogbox von Abbildung 14 an. Eine andere Schreibweise für ein Verzeichnis auf einem Netzwerk-Computer besteht aus zwei Rückstrichen (Backslashes), gefolgt vom Namen des Computers im Netzwerk, einem weiteren Backslash sowie dem Namen des Netzwerkverzeichnisses: \\Netzwerkcomputer\Verzeichnis
Diese Angabe wird in der Windows-Welt Universal Naming Convention (UNC) genannt. Die Dialogbox in Abbildung 1-4 repräsentiert beispielsweise das Netzwerkverzeichnis auf dem Server toltec als: \\toltec\spirit
Wenn Ihnen diese Schreibweise bekannt vorkommt, denken Sie wahrscheinlich an Uniform Resource Locators (URLs), die Adressen darstellen, die von Webbrowsern wie Netscape Navigator und Internet Explorer verwendet werden, um Systeme im Internet zu finden. Verwechseln Sie die beiden besser nicht: URLs wie http:// www.oreilly.com benutzen normale (d.h. vorwärts geneigte) Schrägstriche an Stelle von Backslashes, und vor den Schrägstrichen steht die Abkürzung für das verwendete Datenübertragungsprotokoll (z.B. ftp, http) mit einem Doppelpunkt (:). URLs und UNCs sind also zwei völlig unterschiedliche Dinge, obwohl Sie manchmal eine SMBFreigabe mit Hilfe einer URL an Stelle eines UNC angeben können. In der URL-Schreibweise würde die Freigabe \\toltec\spirit so aussehen: smb://toltec/spirit.
Sobald das Netzlaufwerk eingerichtet ist, verhalten sich Windows und seine Programme, als wäre das Netzwerkverzeichnis eine lokale Festplatte. Falls Sie Anwendungen besitzen, die eine Mehrbenutzerfunktionalität im Netzwerk unterstützen, können Sie diese auf dem Netzlaufwerk installieren.2 Abbildung 1-5 zeigt das resultierende Netzlaufwerk, wie es zusammen mit anderen Speichermedien im Windows 98-Client erscheint. Beachten Sie das Symbol des Laufwerks J:, es zeigt ein Kabel, das Sie darauf hinweist, dass es sich um ein Netzlaufwerk und nicht um eine lokale Festplatte handelt. Abbildung 1-5 Das dem Buchstaben J auf dem Client zugewiesene Netzwerkverzeichnis
Die Netzwerkumgebung von Windows Me, 2000 und XP funktioniert anders als die Netzwerkumgebung von Windows 98. Es müssen mehr Symbole angeklickt werden, aber schließlich erhalten Sie auch hier die Darstellung des Servers toltec aus Abbildung 1-6. Sie sehen hier ein Windows 2000-System. Das Einrichten des Netzlaufwerks mit Hilfe der Option Netzlaufwerk verbinden funktioniert unter Windows 2000 ähnlich wie auf anderen WindowsVersionen. Abbildung 1-6 Auf Toltec verfügbare Freigaben (von dine aus gesehen)
Einen Drucker freigeben Sie haben wahrscheinlich bemerkt, dass der Drucker lp als Freigabe des Servers toltec in Abbildung 1-3 erscheint. Das bedeutet, dass der Unix-Server einen Drucker besitzt, der von den diversen SMBClients in der Arbeitsgruppe verwendet werden kann. Daten, die von einem der Clients an den Drucker gesandt werden, werden auf dem Unix-Server zwischengespeichert und in der Reihenfolge ihres Eintreffens an den Drucker weitergeleitet. Einen Samba-Drucker unter Windows einzurichten ist sogar noch einfacher, als ein Netzlaufwerk zu verwenden. Doppelklicken Sie auf den Drucker und geben Sie dessen Hersteller und Modellbezeichnung an, um auf dem Windows-Client den passenden Druckertreiber zu installieren. Windows ist dann in der Lage, Daten für den Drucker korrekt aufzubereiten und auf ihn zuzugreifen, als würde es sich um einen lokalen Drucker handeln. Unter Windows 98 wird durch einen Doppelklick auf das Drucker-Symbol in der Systemsteuerung das Drucker-Fenster geöffnet, das Sie in Abbildung 1-7 sehen. Beachten Sie auch hier das mit dem Kabel versehene Symbol, das den Drucker als Netzwerkgerät kennzeichnet. Abbildung 1-7 Ein auf Toltec verfügbarer Netzwerkdrucker
Die Dinge von der Unix-Seite aus sehen Wie bereits erwähnt, besteht Samba unter Unix aus einer Sammlung von Daemon-Programmen. Sie können sie mit dem Unix-Befehl ps sehen und von ihnen erzeugte Nachrichten in eigenen Protokolldateien oder im Unix-syslog finden (je nachdem, wie Samba eingerichtet ist). Außerdem können Sie Samba in einer einzigen Datei konfigurieren: smb.conf. Falls Sie darüber hinaus eine Vorstellung davon bekommen wollen, was die einzelnen Daemons tun, verwenden Sie das Programm smbstatus, das alle wichtigen Informationen ausgibt. Es funktioniert folgendermaßen: # smbstatus Processing section "[homes]" Processing section "[printers]" Processing section "[spirit]"
Samba version 2.2.6 Service
uid
gid
pid
machine
----------------------------------------spirit jay jay Sun Aug 12 12:17:14 2002
7735
maya
(172.16.1.6)
spirit
7779
aztec
(172.16.1.2)
jay
jay
Sun Aug 12 12:49:11 2002 jay jay jay Sun Aug 12 12:56:19 2002
7735
maya
(172.16.1.6)
Locked files: Pid
DenyMode
R/W
Oplock
Name
-------------------------------------------------7735 DENY_WRITE RDONLY Sun Aug 12 13:01:22 2002
NONE
/u/RegClean.exe
Share mode memory usage (bytes): 1048368(99%) free + 136(0%) used + 72(0%) overhead = 1048576(100%) total
Der Samba-Statusbericht in dieser Ausgabe besteht aus drei Datenbereichen, die als einzelne Abschnitte dargestellt werden. Dem ersten Abschnitt können Sie entnehmen, welche Systeme eine Verbindung zum Samba-Server hergestellt haben, wobei jeder Client sowohl durch seinen Namen (maya und aztec) als auch durch seine IP-Adresse identifiziert wird. Der zweite Abschnitt enthält den Namen und den Zustand der Dateien, die gegenwärtig über eine Freigabe auf dem Server verwendet werden, und zwar einschließlich ihres Schreib-/Lesestatus und aller Dateisperren. Schließlich zeigt Samba an, wie viel Speicher es momentan für die verwalteten Freigaben belegt, einschließlich des für aktive Freigaben und andere Verwaltungszwecke benutzten Speichers. (Beachten Sie, dass diese Größe nicht der Gesamtgröße entspricht, die die Prozesse smbd und nmbd verwenden.) Machen Sie sich nichts daraus, falls Sie diese Statistiken nicht verstehen; das wird sich ändern, während Sie dieses Buch lesen.
Sich mit einem SMB-Netzwerk vertraut machen Jetzt, da wir Ihnen Samba kurz erläutert haben, wollen wir ein wenig
Zeit damit verbringen, Sie mit der Umgebung von Samba vertraut zu machen: mit einem SMB-Netzwerk. Ein Netzwerk mit SMB unterscheidet sich deutlich vom Arbeiten mit herkömmlichen TCP/IPProtokollen wie FTP und Telnet, da es verschiedene neue Konzepte zu lernen und viele neue Informationen zu verstehen gilt. Zunächst beschreiben wir die grundlegenden Konzepte eines SMB-Netzwerks, gefolgt von einigen Microsoft-Implementierungen. Schließlich zeigen wir Ihnen, wann ein Samba-Server sich nahtlos einpassen lässt und wann nicht.
NetBIOS verstehen Lassen Sie uns das Rad der Zeit auf das Jahr 1984 zurückdrehen. IBM schrieb für die Vernetzung seiner Computer eine einfache Programmierschnittstelle (Application Programming Interface; API) mit dem Namen Network Basic Input/Output System (NetBIOS). Die NetBIOS-API war äußerst simpel gestrickt und ermöglichte es Anwendungen, Verbindungen zu anderen Computern aufzubauen und auf deren Daten zuzugreifen. Stellen Sie sich die NetBIOS-API vereinfacht als eine Art Netzwerkerweiterung der bekannten API-Aufrufe des BIOS vor. Das BIOS enthält Anweisungen auf niedriger Ebene zur Ausführung von Dateisystem-Operationen auf dem lokalen Computer. NetBIOS musste ursprünglich Anweisungen mit anderen Computern über IBMPC- oder Token-Ring-Netzwerke austauschen. Es benötigte daher ein Transportprotokoll auf niedriger Ebene, um seine Anforderungen von einem Computer zum nächsten weiterzuleiten. Ende 1985 veröffentlichte IBM ein solches Protokoll und verschmolz es mit der NetBIOS-API zum NetBIOS Extended User Interface (NetBEUI ). NetBEUI war für (kleine) lokale Netzwerke (Local Area Network; LAN) gedacht. Jeder Computer konnte einen Namen (mit maximal 15 Zeichen) beanspruchen, sofern er nicht bereits im Netzwerk verwendet wurde. Mit einem »kleinen« Netzwerk meinen wir eines mit nicht mehr als 255 Systemen - das galt 1985 noch als ausgesprochen großzügig bemessen! Das NetBEUI-Protokoll war bei Netzwerkanwendungen sehr beliebt, auch bei denen, die unter Windows for Workgroups liefen. Später kamen Implementierungen von NetBIOS mit den IPXNetzwerkprotokollen von Novell auf, die dann in Konkurrenz zu NetBEUI traten. Die wachsende Internet-Gemeinschaft verwendete als Transportprotokolle hingegen TCP/IP und UDP/IP, so dass eine Implementierung der NetBIOS-APIs über diese Protokolle erforderlich wurde.
Denken Sie daran, dass TCP/IP Zahlen verwendet, um Computer zu identifizieren (zum Beispiel 192.168.220.100), während NetBIOS ausschließlich Namen benutzt. Dies stellte ein ziemlich großes Problem dar, als versucht wurde, die beiden Protokolle zusammenzufassen. 1987 veröffentlichte die Internet Engineering Task Force (IETF) Dokumente mit den Titeln RFC 1001 und 1002, die beschrieben, wie NetBIOS über ein TCP/UDP-Netzwerk funktionieren kann. Diese Dokumente bestimmen alle heute existierenden Implementierungen, und zwar einschließlich derjenigen, die Microsoft in den Windows-Betriebssystemen verwendet, sowie die der Samba-Programme. Seitdem ist der durch diese Dokumente geregelte Standard als NetBIOS over TCP/IP oder kurz NBT bekannt.3 Der NBT-Standard (RFC 1001/1002) beschreibt derzeit drei Netzwerkdienste: ● ●
einen Namensdienst zwei Verbindungsdienste: - Datagramme - Sitzungen
Der Namensdienst löst das bereits erwähnte Problem, dass IP numerische Adressen und NetBIOS alphanumerische Namen verwendet. Er ermöglicht es allen Computern im Netzwerk, einen bestimmten Namen im Netzwerk kundzutun. Dieser kann in eine IPAdresse umgewandelt werden, die von Computern verwendet wird, ganz ähnlich, wie das im heutigen Domain Name System (DNS) im Internet geschieht. Sowohl Datagramm- als auch Sitzungsdienste sind sekundäre Kommunikationsprotokolle, die Daten zwischen den NetBIOS-Computern im Netzwerk transportieren.
Einen Namen erhalten In der NetBIOS-Welt will jeder Computer, der gestartet wird, einen Namen für sich selbst beanspruchen. Dieser Vorgang wird Namensregistrierung genannt. Es darf jedoch nicht vorkommen, dass zwei Computer im selben Netzwerk denselben Namen beanspruchen, denn dadurch entstünde heillose Verwirrung für jeden Computer, der mit einem der beiden Systeme kommunizieren will. Um dieses mögliche Problem zu vermeiden, gibt es zwei Ansätze:
●
●
Die Verwendung eines NetBIOS-Name-Servers (NBNS), der über die Systeme Buch führt, die einen NetBIOS-Namen registriert haben. Es wird jedem Computer die Möglichkeit eingeräumt, seinen Namen zu verteidigen, falls ein anderer Computer versucht, ihn zu verwenden.
Abbildung 1-8 veranschaulicht eine (fehlgeschlagene) Namensregistrierung mit und ohne NBNS. Abbildung 1-8 Namensregistrierung mit und ohne NBNS
Außerdem muss es - wie bereits erwähnt - eine Möglichkeit geben, einen NetBIOS-Namen in eine entsprechende IP-Adresse umzuwandeln. Dieser Vorgang wird als Namensauflösung bezeichnet. Auch hier kann man bei NBT auf zweierlei Weise vorgehen: ●
●
Jeder Computer gibt seine IP-Adresse bekannt, wenn er eine Broadcast-Anforderung seines NetBIOS-Namens »hört«. Ein NBNS wird verwendet, um NetBIOS-Namen in IP-Adressen
aufzulösen. Abbildung 1-9 veranschaulicht die beiden Verfahren zur Namensauflösung. Abbildung 1-9 Namensauflösung mit und ohne NBNS
Wie Sie sich wahrscheinlich schon denken, kann Ihnen ein NBNS im Netzwerk eine enorme Hilfe sein. Um Ihnen zu erklären, warum das so ist, beschreiben wir zunächst die Broadcast-Methode (ohne NetBIOS-Name-Server). Wenn ein Client-Computer bootet, verschickt er eine BroadcastMeldung (eine Nachricht, die an alle lokalen Systeme gerichtet ist, also quasi ein Rundschreiben) mit dem Inhalt, dass er für sich einen bestimmten NetBIOS-Namen registrieren möchte. Falls kein System Einspruch erhebt, verwendet er den Namen. Benutzt jedoch ein anderer Computer im lokalen Subnetz bereits den angeforderten Namen, sendet er dem anfragenden System die Nachricht, dass der Name schon vergeben ist. Diesen Vorgang nennt man Verteidigung
des Hostnamens. Dieses Verfahren der Namensregistrierung ist praktisch, wenn ein Client unerwartet aus dem Netzwerk genommen wird - kann doch ein anderer seinen Namen übernehmen -, aber es belastet das Netzwerk für so einfache Dinge wie die Namensregistrierung. Mit einem NBNS verläuft die Namensregistrierung ähnlich, mit dem Unterschied, dass die Daten lediglich zwischen dem anfragenden Computer und dem NetBIOS-Name-Server ausgetauscht werden. Es sind keine Broadcast-Meldungen erforderlich, wenn ein System seinen Namen registrieren lassen will. Die Registrierungsanforderung wird direkt vom Client an den NBNS gesendet, und der NBNS antwortet unabhängig davon, ob der Name bereits belegt ist. Diese Art des Datenaustauschs wird häufig Punktzu-Punkt-Kommunikation genannt und erweist sich oft in Netzwerken als nützlich, die mehr als ein Subnetz besitzen. Der Grund dafür liegt darin, dass Router im Allgemeinen so konfiguriert sind, dass sie eingehende Pakete blockieren, die als Broadcast an alle Computer im Subnetz gerichtet sind. Die gleichen Prinzipien gelten für die Namensauflösung. Ohne NBNS würde die NetBIOS-Namensauflösung ebenfalls über den BroadcastMechanismus ausgeführt werden. Jede Anfrage nach einer IPAdresse würde also an jeden Computer des lokalen Subnetzes gesendet werden, in der Hoffnung, dass das betroffene System direkt antworten kann. Die Verwendung eines NetBIOS-NameServers und der Punkt-zu-Punkt-Kommunikation für diesen Zweck belastet das Netzwerk viel weniger stark, als es die BroadcastNachrichten tun, die das Netzwerk für jede Namensanfrage »fluten«. Jetzt könnte man ja einwenden, dass Broadcast-Pakete in modernen Netzwerken mit hoher Bandbreite, in denen Rechner mit schnellen CPUs verbunden sind, keine nennenswerten Probleme verursachen, wenn sich nur wenige Hosts im Netzwerk befinden oder der Bandbreitenbedarf gering ist. Sicherlich gibt es Fälle, in denen dies zutrifft. Unser Rat in diesem Buch lautet jedoch, sich möglichst nicht auf Broadcasts zu verlassen. Für große, ausgelastete Netzwerke ist dieser Ratschlag sehr wichtig, und falls Sie ihn auch beim Einrichten eines kleinen Netzwerks befolgen, werden Sie in der Lage sein, bei einer möglichen Erweiterung des Netzwerks Probleme zu vermeiden, die später nur schwer zu diagnostizieren sind.
Knotentypen Wie aber erfahren Sie, welche Strategie ein Client im Netzwerk verfolgt, wenn er seinen Namen registriert und Namen auflösen will?
Jeder Computer (auch Knoten genannt) in einem NBT-Netzwerk besitzt einen bestimmten Typ, der festlegt, wie die Namensregistrierung und -auflösung arbeitet: b-Knoten, p-Knoten, m-Knoten und h-Knoten. Wie sich die einzelnen Knotentypen verhalten, ist in Tabelle 1-1 zusammengefasst.
Tabelle 1-1 NetBIOS-Knotentypen Funktion
Wert
b-Knoten
Verwendet ausschließlich BroadcastMeldungen zur Registrierung und Auflösung.
p-Knoten
Verwendet ausschließlich die Punkt-zuPunkt-Kommunikation zur Registrierung und Auflösung.
Verwendet Broadcast zur Registrierung. Ist dies erfolgreich, wird der NBNS von dem m-Knoten (gemischt) Ergebnis unterrichtet. Verwendet Broadcast zur Auflösung und greift auf den NBNS zurück, falls der Broadcast erfolglos ist.
h-Knoten (hybrid)
Verwendet den NBNS zur Registrierung und Auflösung. Greift auf Broadcast zurück, falls der NBNS nicht antwortet oder nicht funktioniert.
Im Fall von Windows-Clients werden Sie üblicherweise h-Knoten bzw. Hybrid-Knoten aufgelistet finden. Die ersten drei Knotentypen stehen in RFC 1001/1002; h-Knoten dagegen wurden erst zu einem späteren Zeitpunkt von Microsoft erfunden, um die Fehlertoleranz zu erhöhen. Sie können den Knotentyp eines Windows 95/98/Me-Computers ermitteln, indem Sie den Befehl winipcfg ausführen (über Start ✞ Ausführen oder in der MS-DOS-Eingabeaufforderung) und auf den Button Weitere Info>> klicken. Unter Windows NT/2000/XP können Sie den Befehl ipconfig /all in einer Eingabeaufforderung verwenden. Suchen Sie in jedem Fall nach der Zeile mit der Bezeichnung Knotentyp.
Woraus besteht ein Name?
Die NetBIOS-Namen unterscheiden sich erheblich von den DNSHostnamen, mit denen Sie möglicherweise vertraut sind. Zum einen existieren NetBIOS-Namen in einem flachen Namensraum. Das heißt, es gibt keine hierarchischen Ebenen wie in oreilly.de (zwei Ebenen) oder ftp.samba.org (drei Ebenen). NetBIOS-Namen bestehen aus einem einzigen eindeutigen String wie navaho oder hopi innerhalb jeder Arbeitsgruppe oder Domäne. Zum anderen dürfen NetBIOS-Namen maximal 15 Zeichen lang sein und nur aus alphanumerischen Zeichen (a-z, A-Z, 0-9) sowie den folgenden Zeichen bestehen: ! @ # $ % ^ & ( ) - ' { } . ~
Auch wenn Sie einen Punkt (.) in einem NetBIOS-Namen verwenden dürfen, raten wir davon ab, weil diese Namen möglicherweise nicht in künftigen Versionen von NBT funktionieren werden. Es ist kein Zufall, dass gültige DNS-Namen auch gültige NetBIOSNamen sind. In der Tat wird der unqualifizierte DNS-Name eines Samba-Servers (das ist der Name ohne den Domänen-Anteil) häufig auch als sein NetBIOS-Name eingesetzt. Wenn Sie beispielsweise ein System mit dem Hostnamen mixtec.ora.com hätten, wäre sein NetBIOS-Name wahrscheinlich MIXTEC (gefolgt von neun Leerzeichen). Namen und Typen von Ressourcen Ein NetBIOS-Computer kündigt nicht nur seine Anwesenheit an, sondern gibt auch bekannt, welche Arten von Diensten er anbietet. mixtec könnte also zum Beispiel mitteilen, dass er nicht nur eine Workstation, sondern auch ein Datei-Server ist und Windows Messenger-Nachrichten empfangen kann. Dazu wird an das Ende des Maschinen-(Ressourcen-)Namens ein 16. Byte angehängt, das den Ressourcentyp angibt und den Namen mehrfach - für jeden angebotenen Dienst - registriert (siehe Abbildung 1-10). Abbildung 1-10 Die Struktur von NetBIOS-Namen
Der ein Byte große Ressourcentyp bezeichnet einen bestimmten Dienst, den der Computer bereitstellt. In diesem Buch kennzeichnen wir den Ressourcentyp häufig durch spitze Klammern (<>), wie in: MIXTEC<00>
Sie können feststellen, welche Namen für einen bestimmten NBTComputer registriert sind, indem Sie das Windows-KommandozeilenProgramm nbtstat einsetzen. Da diese Dienste eindeutig sind (d.h., sie können nur jeweils einmal registriert sein), werden sie in der Ausgabe als UNIQUE (engl. eindeutig) bezeichnet. Der folgende Ausschnitt aus einer Ausgabe beschreibt zum Beispiel den Server toltec: C:\>nbtstat -a toltec
NetBIOS Remote Machine Name Table Name
Type
Status
--------------------------------------------TOLTEC
<00>
UNIQUE
Registered
TOLTEC
<03>
UNIQUE
Registered
TOLTEC
<20>
UNIQUE
Registered
...
Diese Ausgabe besagt, dass der Server den NetBIOS-Namen toltec
als Maschinen- (d.h. Computer-)Namen, als Empfänger von Nachrichten des Windows Messenger-Diensts und als Datei-Server registriert hat. Mögliche Attribute eines Namens sind in Tabelle 1-2 aufgeführt.
Tabelle 1-2 Eindeutige NetBIOS-Ressourcentypen Benannte Ressource
Hexadezimaler Wert des Byte
Standard-Workstation-Dienst
00
Messenger-Dienst
03
Modem/ISDN-ServerFernzugriffsdienst (RAS, Remote Access Service)
06
Domain Master Browser Service (Domänen-Hauptsuchdienst; ausgeführt auf primären Domänen-Controllern)
1B
Hauptsuchdienst
1D
NetDDE-Dienst
1F
Datei-Server (einschließlich DruckerServer)
20
RAS-Client-Dienst
21
Netzwerkmonitoragent
BE
Netzwerkmonitor
BF
Gruppennamen und -typen SMB kennt auch das Konzept der Gruppen, bei denen sich die Computer selbst registrieren können. Wir haben bereits an früherer Stelle erwähnt, dass die Computer in unserem Beispiel einer Arbeitsgruppe angehören. Eine Arbeitsgruppe fasst mehrere Computer in einem Netzwerk zusammen. Eine Firma kann zum Beispiel die Arbeitsgruppen BUCHHALTUNG und VERKAUF besitzen, die mit jeweils eigenen Servern und Druckern ausgestattet sind. In
der Windows-Welt entsprechen Arbeitsgruppen den SMB-Gruppen. Führen wir unser nbtstat-Beispiel fort. Der Samba-Server toltec ist Mitglied der Arbeitsgruppe METRAN (GROUP-Attribut: hexadezimal 00) und steht bei der Auswahl als Hauptsuchdienst zur Verfügung (GROUP-Attribut: hexadezimal 1E). Hier ist der Rest der Ausgabe von nbtstat: NetBIOS Remote Machine Name Table Name
Type
Status
--------------------------------------------METRAN
<00>
GROUP
Registered
METRAN
<1E>
GROUP
Registered
.._ _MSBROWSE_ _.<01>
GROUP
Registered
Die möglichen GROUP-Attribute, die ein Computer besitzen kann, sind in Tabelle 1-3 aufgeführt. Weitere Informationen finden Sie im Buch Windows NT in a Nutshell von Eric Pearce, ebenfalls im O'Reilly Verlag erschienen.
Tabelle 1-3 NetBIOS-Ressourcentypen für Gruppen Benannte Ressource
Hexadezimaler Wert des Byte
Standard-Workstation-Gruppe
00
Anmelde-Server
1C
Hauptsuchdienst
1D
Normaler Gruppenname (wird bei der Bestimmung des Suchdienstes verwendet)
1E
Internet-Gruppenname (administrativ)
20
<01><02>_ _MSBROWSE_ _<02>
01
Der letzte Eintrag, _ _ MSBROWSE _ _ , wird dazu verwendet, eine Gruppe anderen Hauptsuchdiensten anzukündigen. Die nichtdruckbaren Zeichen im Namen werden in der Ausgabe von nbtstat als Punkte angezeigt. Stören Sie sich nicht daran, wenn Sie nicht alle Ressourcen- oder Gruppentypen verstehen. Sie werden einige davon für Samba nicht benötigen. Die Bedeutung der anderen werden wir im Laufe dieses Kapitels erläutern. Was Sie sich unbedingt merken sollten, ist die Funktionsweise des Namensmechanismus. Bereichs-ID In den Anfangstagen der SMB-Netzwerke, bevor NetBIOS-Gruppen eingeführt wurden, gab es eine sehr primitive Methode, um Gruppen von Computern vom Rest des Netzwerks zu isolieren. Jedes SMBPaket enthält ein Feld namens Bereichs-ID (Scope ID). Dahinter steckte die Idee, dass die Systeme im Netzwerk so konfiguriert werden können, dass sie nur Pakete akzeptieren, deren Bereichs-ID ihrer Konfiguration entspricht. Dieses Merkmal wurde kaum eingesetzt, ist jedoch leider in modernen Implementierungen immer noch vorhanden. Einige der in der Samba-Distribution vorhandenen Programme erlauben es, die Bereichs-ID zu setzen. Allerdings wird dies in einem Netzwerk mit hoher Wahrscheinlichkeit Probleme verursachen. Wir erwähnen die Bereichs-ID nur, damit Sie sich nicht wundern, falls sie Ihnen irgendwo einmal begegnet.
Datagramme und Sitzungen Lassen Sie uns an dieser Stelle ein wenig abschweifen, um eine andere Aufgabe zu beschreiben, die in der Verantwortung von NBT liegt: die Bereitstellung der Verbindungsdienste zwischen zwei NetBIOS-Computern. NBT bietet zwei Dienste an: den Sitzungsdienst und den Datagrammdienst. Sie müssen diese Dienste nicht vollständig verstehen, um mit Samba zu arbeiten, aber Sie erhalten zumindest eine Vorstellung davon, wie NetBIOS over TCP/ IP (NBT) funktioniert und wo Sie nach Fehlern suchen müssen, falls Samba einmal nicht funktionieren sollte. Der Datagrammdienst stellt keine stabilen Verbindungen zwischen Computern her. Datenpakete werden einfach von einem Computer an einen anderen (oder per Broadcast an alle Rechner im lokalen Netzwerk) gesendet, ohne dass beachtet wird, in welcher Reihenfolge die Pakete am Ziel eintreffen oder ob sie überhaupt ankommen. Datagramme erfordern einen geringeren
Verarbeitungsaufwand als Sitzungen, allerdings kann die Zuverlässigkeit der Verbindung leiden. Datagramme werden daher für das schnelle Versenden weniger wichtiger Datenblöcke an einen oder mehrere Computer verwendet. Der Datagrammdienst benutzt für die Kommunikation die einfachen, in Tabelle 1-4 gezeigten Funktionen.
Tabelle 1-4 Datagrammfunktionen Funktion
Beschreibung
Datagramm senden (Send Datagram)
Sendet ein Datagrammpaket an einen Computer oder an Gruppen von Computern.
Broadcast-Datagramm senden (Send Broadcast Datagram)
Sendet ein Broadcast-Datagramm an alle Computer, die mit der Funktion Receive Broadcast Datagram eines erwarten.
Datagramm empfangen (Receive Datagram)
Empfängt ein Datagramm von einem Computer.
Broadcast-Datagramm empfangen (Receive Broadcast Datagram)
Erwartet ein Broadcast-Datagramm.
Der Sitzungsdienst ist komplizierter. Sitzungen bedienen sich einer Kommunikationsmethode, durch die theoretisch problematische oder unterbrochene Verbindungen zwischen zwei NetBIOS-Anwendungen erkannt werden können. Stellen Sie sich eine NBT-Sitzung mit den Begriffen einer Telefonverbindung vor, einer Analogie, die ganz offensichtlich die Gestaltung des CIFS-Standards beeinflusst hat. Eine einmal aufgebaute Verbindung bleibt während der gesamten Dauer des Gesprächs bestehen, jede Seite weiß, wer der Anrufer und wer der angerufene Computer ist, und beide können über die einfachen Funktionen miteinander kommunizieren, die Sie in Tabelle 1-5 finden.
Tabelle 1-5 Sitzungsfunktionen
Funktion
Beschreibung
Anrufen
Eine Sitzung zu einem Computer herstellen, der unter einem bestimmten Namen empfangsbereit ist.
Hören
Auf einen Anruf eines bekannten oder anderen Anrufers warten.
Auflegen
Ein Gespräch beenden.
Senden
Daten an den anderen Computer senden.
Empfangen
Daten vom anderen Computer empfangen.
Sitzungszustand
Informationen über die angeforderten Sitzungen erhalten.
Sitzungen bilden das Rückgrat der Ressourcenfreigabe in einem NBTNetzwerk. Sie werden üblicherweise verwendet, um stabile Verbindungen zwischen Client-Computern und Verzeichnis- oder Druckerfreigaben auf einem Server herzustellen. Der Client »ruft« den Server an und teilt ihm mit, welche Dateien er öffnen möchte, welche Daten er austauschen will usw. Diese »Anrufe« können sehr lange dauern, unter Umständen mehrere Stunden oder sogar Tage alles während einer einzigen Verbindung. Tritt ein Fehler auf, sorgt die Sitzungs-Software (TCP) für eine erneute Übertragung der Daten, bis sie korrekt übermittelt worden sind. Im Gegensatz dazu verwendet der Datagrammdienst, der ohne Kontrolle arbeitet, das verbindungslose UDP-Protokoll. In der Realität funktioniert die Abwicklung problematischer Sitzungen häufig nicht ganz korrekt. Wenn die Verbindung aus irgendeinem Grund unterbrochen wird, können die Sitzungsinformationen leicht ungültig werden. In diesem Fall kann die Sitzung nur wieder hergestellt werden, indem einer der Computer den anderen »anruft« und von vorn beginnt. Wenn Sie weitere Informationen zu diesem Thema wünschen, sehen Sie sich RFC 1001 an. Folgende Punkte sollten Sie sich aber auf jeden Fall merken: ●
Sitzungen bestehen grundsätzlich zwischen genau zwei NetBIOS-Computern. Wenn ein Sitzungsdienst unterbrochen wird, sollte der Client genügend Zustandsdaten gespeichert haben, um die Sitzung wieder herzustellen. In der Praxis
●
funktioniert das jedoch nur selten. Datagramme können als Broadcast an mehrere Computer gleichzeitig verschickt werden, sind allerdings nicht zuverlässig. Mit anderen Worten, es gibt für die Quelle keine Möglichkeit nachzuprüfen, ob die Datagramme, die sie verschickt hat, auch wirklich an ihrem Ziel angekommen sind.
Eine Einführung in das SMB-Protokoll Nun werden wir einige grundlegende technische Details betrachten und die Einzelheiten des SMB-Protokolls erkunden. Vermutlich müssen Sie gar nicht so viel darüber wissen, um ein einfaches Samba-Netzwerk zu implementieren, und werden deshalb beim ersten Lesen diesen Abschnitt möglicherweise auslassen oder überspringen und sich gleich dem nächsten Abschnitt widmen (»Windows-Arbeitsgruppen und -Domänen«). Da wir jedoch davon ausgehen, dass Sie länger für die Wartung eines Samba-Netzwerks zuständig sein werden, denken wir, dass es Ihnen hilft, wenn Sie verstehen, wie es tatsächlich funktioniert. Sie werden schneller in die Lage versetzt, auftretende Probleme zu diagnostizieren und zu beheben. Auf einer höheren Ebene ist die SMB-Protokollsammlung relativ einfach. Sie enthält Befehle für alle Datei- und Druck-Operationen, die Sie auf einer lokalen Festplatte oder einem lokalen Drucker ausführen könnten: ● ● ● ● ●
Öffnen und Schließen von Dateien Erzeugen und Löschen von Dateien und Verzeichnissen Lesen und Schreiben von Dateien Suchen nach Dateien Ein- und Aussortieren von Dateien in eine Druckwarteschlange (Spool)
Jede Operation kann in Form einer SMB-Nachricht kodiert und zu bzw. von einem Server übermittelt werden. Der Originalname »SMB« stammt von der Art und Weise, in der die Befehle formatiert sind: Es handelt sich um Versionen der Datenstrukturen für die normalen DOS-Systemaufrufe oder Server Message Blocks, die für die Übertragung an einen anderen Computer im Netzwerk umgestaltet wurden.
Das SMB-Format
Richard Sharpe vom Samba-Team definiert SMB als ein RequestResponse-Protokoll (Anforderung/Antwort-Protokoll).4 Im Prinzip bedeutet dies, dass ein Client eine SMB-Anforderung an einen Server sendet. Der Server übermittelt dann eine SMB-Antwort an den Client. Es gibt nur einen einzigen, selten auftretenden Fall, in dem ein Server eine Nachricht sendet, die keine Antwort an einen Client darstellt. Eine SMB-Nachricht ist nicht so kompliziert, wie Sie vielleicht glauben. Schauen wir uns die interne Struktur einer solchen Nachricht einmal genauer an. Sie kann in zwei Teile unterteilt werden: den Header, der eine feste Größe hat, und den BefehlsString, dessen Größe je nach dem Inhalt der Nachricht deutlich variieren kann. Das SMB-Header-Format Tabelle 1-6 zeigt das Format eines SMB-Headers. Das COM-Feld kennzeichnet den ausgeführten Befehl. SMB-Befehle müssen nicht unbedingt alle Felder des SMB-Headers verwenden. Wenn beispielsweise ein Client das erste Mal versucht, eine Verbindung zu einem Server herzustellen, besitzt er nicht einmal einen TID-Wert (Tree Identifier) - dieser Wert wird nach einem erfolgreichen Verbindungsaufbau zugeordnet -, daher wird in das entsprechende Header-Feld keine TID eingetragen. Andere Felder können bei Nichtbenutzung mit Nullen aufgefüllt werden. Die SMB-Header-Felder sind in Tabelle 1-6 aufgeführt.
Tabelle 1-6 SMB-Header-Felder Größe (Bytes)
Feld
Beschreibung
0xFF 'SMB'
1
Protokollkennzeichnung
COM
1
Befehlscode, von 0x00 bis 0xFF
RCLS
1
Fehlerklasse
REH
1
Reserviert
ERR
2
Fehlercode
REB
1
Reserviert
RES
14
Reserviert
TID
2
TID; eine eindeutige ID für eine Ressource, die vom Client benutzt wird
PID
2
Prozess-ID des Anrufers
UID
2
Benutzer-ID
MID
2
Multiplex-ID; wird verwendet, um Anfragen innerhalb eines Prozesses zu leiten
Das SMB-Befehlsformat Unmittelbar hinter dem Header steht eine variable Anzahl von Bytes, die einen SMB-Befehl oder eine SMB-Antwort bilden. Jeder Befehl, wie etwa Open File (COM-Feld-ID: SMBopen) oder Get Print Queue (SMBsplretq ), besitzt seine eigene Gruppe von Parametern und Daten. Wie die SMB-Header-Felder müssen auch die Befehlsfelder nicht unbedingt alle ausgefüllt sein - je nachdem, um welchen Befehl es sich handelt. So setzt beispielsweise der Befehl Get Server Attributes (SMBdskattr) die Felder WCT und BCC auf null. Die Felder des Befehlssegments werden in Tabelle 1-7 dargestellt.
Tabelle 1-7 Inhalt eines SMB-Befehls Feld Größe (Bytes)
Beschreibung
WCT
1
Wortzähler
VWV
Variable
Parameterwörter (Größe durch WCT vorgegeben)
BCC
2
Parameter-Byte-Zähler
DATA Variable
Daten (Größe durch BCC vorgegeben)
Machen Sie sich keine Sorgen, falls Sie nicht jedes Feld verstehen dies ist für die Benutzung von Samba auf Administratorebene nicht notwendig. Allerdings sind sie für das Auswerten von
Systemmeldungen ganz nützlich. Weiter hinten in diesem Abschnitt werden wir Ihnen einige der gebräuchlicheren SMB-Meldungen zeigen, die Clients und Server mit Hilfe einer angepassten Version von tcpdump versenden. (Falls Sie einen SMB-Sniffer mit einer grafischen Oberfläche bevorzugen, versuchen Sie es einmal mit Ethereal, der die GTK-Bibliotheken verwendet. Unter http://www. ethereal.com finden Sie nähere Informationen über dieses Werkzeug.)
Weitere Informationen über die einzelnen Befehle im SMB-Protokoll finden Sie in der CIFS Technical Reference unter http://www.snia.org/ tech_activities/CIFS. SMB-Variationen Das SMB-Protokoll wurde seit seiner Einführung mehrere Male um neue Befehle erweitert. Jede neue Version ist abwärts kompatibel zu den vorangegangenen Versionen. Dadurch ist es möglich, in einem LAN Clients und Server zu betreiben, die gleichzeitig unterschiedliche Versionen des SMB-Protokolls benutzen. Tabelle 1-8 stellt die wichtigsten Versionen des SMB-Protokolls vor. Innerhalb jedes »Dialekts« von SMB gibt es viele Unterversionen, die Befehle enthalten, die wiederum bestimmte Releases wichtiger Betriebssysteme unterstützen. Der ID-String in Spalte 2 wird von Clients und Servern verwendet, um festzustellen, auf welcher Ebene des Protokolls sie miteinander kommunizieren werden.
Tabelle 1-8 SMB-Protokolldialekte Protokollname Core
ID-String PC NETWORK PROGRAM 1.0
Verwendet durch
Core Plus
MICROSOFT NETWORKS 1.03
LAN Manager 1.0
LANMAN1.0
LAN Manager 2.0
LM1.2X002
LAN Manager 2.1
LANMAN2.1
NT LAN Manager 1.0
NT LM 0.12
Windows NT 4.0
Sambas NT LM 0.12
Samba
Samba
Common Internet File System
CIFS 1.0
Windows 2000/XP
Samba implementiert die Spezifikation NT LM 0.12 für NT LAN Manager 1.0. Sie ist abwärts kompatibel mit all den anderen SMBVarianten. Die CIFS-Spezifikation ist in Wirklichkeit LAN Manager 0.12 mit einigen speziellen Ergänzungen.
SMB-Clients und -Server Wie bereits erwähnt, handelt es sich bei SMB um ein Client/ServerProtokoll. Im Wortsinn bedeutet dies, dass ein Client eine Anforderung an einen Server sendet, der auf die Anforderung reagiert und eine Antwort zurückschickt. Die Rollen von Client und Server können allerdings oft vertauscht werden, manchmal sogar innerhalb einer einzigen SMB-Sitzung. Betrachten Sie zum Beispiel die beiden Windows 95/98/Me-Computer in Abbildung 1-11. Der Rechner mit dem Namen maya gibt einen Drucker im Netzwerk frei, und der Rechner mit dem Namen toltec hat ein Festplattenverzeichnis freigegeben. Beim Zugriff auf das Netzlaufwerk von toltec übernimmt maya die Rolle des Clients. Führt maya dagegen einen Druckjob für toltec aus, ist er in der Rolle des Servers. Abbildung 1-11 Zwei Computer, die Ressourcen freigeben
Dadurch ergibt sich ein wichtiger Punkt in der Samba-Terminologie: ● ●
●
Ein Server ist ein Computer, der eine Ressource freigibt. Ein Client ist ein Computer, der diese Ressource nutzen möchte. Ein Computer kann zu einem bestimmten Zeitpunkt ein Client, ein Server, beides oder keines von beiden sein.
Bei Microsoft Windows-Produkten ist sowohl der SMB-Client als auch der SMB-Server in das Betriebssystem integriert. Oft kommt es in einem normalen Netzwerk vor, dass Windows zu einem bestimmten Zeitpunkt als Server, als Client, in beiden Rollen oder als keiner von beiden agiert. Samba wurde zwar vorrangig dafür entwickelt, als Server zu fungieren, es gibt jedoch auch Möglichkeiten, es selbst und die mit ihm verbundene Software als SMB-Client agieren zu lassen. Es ist sogar möglich, ein Unix-System so einzurichten, dass es als SMB-Client und nicht als Server arbeitet. In Kapitel 5 finden Sie weitere Informationen zu diesem Thema.
Eine einfache SMB-Verbindung Client und Server müssen drei Schritte ausführen, um eine Verbindung zu einer Ressource aufzubauen: 1. Eine NetBIOS-Sitzung beginnen. 2. Die Protokollvariante aushandeln. 3. Die Sitzungsparameter setzen und eine Verbindung zu einer Ressource herstellen. Wir werden jeden Schritt durch die Augen eines nützlichen Werkzeugs betrachten, das wir bereits erwähnten: das modifizierte tcpdump, das auf der Samba-Website zur Verfügung steht.
Sie können das Programm tcpdump von http:// www.samba.org aus dem Verzeichnis samba/ftp/ tcpdump-smb herunterladen; die neueste Version war beim Schreiben dieses Buches die Version 3.7.2. Benutzen Sie dieses Programm genau wie das normale tcpdump-Programm, fügen Sie jedoch die Option -s 1500 hinzu, um sicherzugehen, dass Sie das ganze Paket und nicht nur die ersten paar Bytes erhalten.
Eine NetBIOS-Sitzung beginnen Wenn ein Benutzer zum ersten Mal die Anforderung für den Zugriff auf ein Netzlaufwerk ausgibt oder einen Druckjob an einen entfernten Drucker sendet, sorgt NetBIOS dafür, dass eine Verbindung auf der Sitzungsschicht aufgebaut wird. Das Ergebnis ist ein bidirektionaler Kanal zwischen dem Client und dem Server. Client und Server benötigen nur zwei Nachrichten, um diese Verbindung zu etablieren. Sie sehen dies im folgenden RequestResponse-Beispiel, das von tcpdump aufgezeichnet wurde. Zuerst sendet der Client eine Anforderung, um eine Sitzung zu öffnen. tcpdump gibt Folgendes aus: >>> NBT Packet NBT Session Request Flags=0x81000044 Destination=TOLTEC
NameType=0x20 (Server)
Source=MAYA
NameType=0x00 (Workstation)
Dann antwortet der Server und sichert dem Client eine Sitzung zu:
>>> NBT Packet NBT Session Granted Flags=0x82000000
Nun gibt es einen offenen Kanal zwischen dem Client und dem Server.
Die Protokollvariante aushandeln Als Nächstes sendet der Client eine Nachricht an den Server, um ein SMB-Protokoll auszuhandeln. Wie bereits erwähnt, setzt der Client sein TID-Feld (Tree Identifier) auf null, weil er noch nicht weiß, welche TID er benutzen soll. Ein Tree Identifier ist eine Zahl, die eine Verbindung zu einer Freigabe auf einem Server repräsentiert. Der Befehl in der Nachricht lautet SMBnegprot, das ist eine Anforderung zur Aushandlung einer Protokollvariante, die während der gesamten Sitzung verwendet werden soll. Beachten Sie, dass der Client dem Server eine Liste aller Varianten schickt, die er versteht, und nicht umgekehrt: >>> NBT Packet NBT Session Packet Flags=0x0 Length=154
SMB PACKET: SMBnegprot (REQUEST) SMB Command
=
0x72
Error class
=
0x0
Error code
=
0
Flags1
=
0x0
Flags2
=
0x0
Tree ID
=
0
Proc ID
=
5315
UID
=
0
MID
=
257
Word Count
=
0
Dialect=PC NETWORK PROGRAM 1.0 Dialect=MICROSOFT NETWORKS 3.0 Dialect=DOS LM1.2X002 Dialect=DOS LANMAN2.1 Dialect=Windows for Workgroups 3.1a Dialect=NT LM 0.12
Der Server antwortet auf die SMBnegprot-Anforderung mit einem Index (bei dem der Zähler bei 0 beginnt) in die Liste der Varianten, die der Client anbietet, oder dem Wert 0xFF, falls keine der Protokollvarianten akzeptabel ist: >>> NBT Packet NBT Session Packet Flags=0x0 Length=84
SMB PACKET: SMBnegprot (REPLY) SMB Command
=
0x72
Error class
=
0x0
Error code
=
0
Flags1
=
0x80
Flags2
=
0x1
Tree ID
=
0
Proc ID
=
5315
UID
=
0
MID
=
257
Word Count
=
17
NT1 Protocol DialectIndex=5 [...]
In diesem Beispiel antwortet der Server mit dem Wert 5, der angibt, dass für den Rest der Sitzung der NT LM 0.12-Dialekt verwendet werden wird.
Setzen der Sitzungs- und Anmeldeparameter Der nächste Schritt besteht darin, die Sitzungs- und Anmeldeparameter für die Sitzung zu übermitteln. Dies erledigen Sie mit dem Befehl SMBSesssetupX. Zu den Parametern gehören unter anderem: ● ● ● ●
der Account-Name und das Kennwort (falls es eines gibt) der Arbeitsgruppenname die maximale Größe der Daten, die übertragen werden können die Anzahl der Anforderungen, die gleichzeitig in der Warteschlange vorliegen können
Die Ausgabe von tcpdump sieht folgendermaßen aus: >>> NBT Packet NBT Session Packet
Flags=0x0 Length=150
SMB PACKET: SMBsesssetupX (REQUEST) SMB Command
=
0x73
Error class
=
0x0
Error code
=
0
Flags1
=
0x10
Flags2
=
0x0
Tree ID
=
0
Proc ID
=
5315
UID
=
1
MID
=
257
Word Count
=
13
Com2=0x75 Res1=0x0 Off2=120 MaxBuffer=2920 MaxMpx=50 VcNumber=0 SessionKey=0x1380 CaseInsensitivePasswordLength=24 CaseSensitivePasswordLength=0 Res=0x0
Capabilities=0x1 Pass1&Pass2&Account&Domain&OS&LanMan= JAY METRAN Windows 4.0 Windows 4.0
SMB PACKET: SMBtconX (REQUEST) (CHAINED) smbvwv[]= Com2=0xFF Off2=0 Flags=0x2 PassLen=1 Passwd&Path&Device= smb_bcc=23 smb_buf[]=\\TOLTEC\SPIRIT
In diesem Beispiel erlaubt es der Befehl zum Einrichten der Sitzung SMBsesssetupX, dass ein zusätzlicher SMB-Befehl an ihn angehängt wird (dies erkennt man an dem Buchstaben X am Ende des Befehlsnamens). Der hexadezimale Code des zweiten Befehls wird im Com2-Feld angegeben. Hier lautet der Befehl 0x75, das ist der Befehl SMBtconX (Tree Connect and X). Die Nachricht SMBtconX sucht nach dem Namen der Ressource im smb_buf-Puffer. In diesem Beispiel enthält smb_buf den String \\TOLTEC\SPIRIT, also den vollständigen Pfadnamen zu einem freigegebenen Verzeichnis auf toltec. Durch die Benutzung solcher »and X«-Befehle werden die einzelnen Transaktionen beschleunigt, da der Server nicht darauf warten muss, dass der Client eine zweite Anforderung stellt. Beachten Sie, dass die TID immer noch null ist. Schließlich liefert der Server eine TID an den Client zurück, wodurch angezeigt wird, dass der Zugriff des Benutzers autorisiert wurde und die Ressource benutzt werden kann:
>>> NBT Packet NBT Session Packet Flags=0x0 Length=85
SMB PACKET: SMBsesssetupX (REPLY) SMB Command
=
0x73
Error class
=
0x0
Error code
=
0
Flags1
=
0x80
Flags2
=
0x1
Tree ID
=
1
Proc ID
=
5315
UID
=
100
MID
=
257
Word Count
=
3
Com2=0x75 Off2=68 Action=0x1 [000] Unix Samba 2.2.6 [010] METRAN
SMB PACKET: SMBtconX (REPLY) (CHAINED) smbvwv[]=
Com2=0xFF Off2=0 smbbuf[]= ServiceType=A:
Das Feld ServiceType wurde auf »A« gesetzt. Dies bedeutet, dass es sich um einen Dateidienst handelt. Verfügbare Diensttypen sind: ● ● ● ●
»A« für eine Festplatte oder Datei »LPT1« für eine »gespoolte« Ausgabe »COMM« für direkt angeschlossene Drucker oder Modems »IPC« für eine benannte Pipe
Nachdem eine TID zugewiesen wurde, kann der Client diese als Handle benutzen, um alle Operationen auszuführen, die er auch auf einem lokalen Laufwerk ausführen würde. Er kann Dateien öffnen, lesen und schreiben, sie löschen, neue Dateien erzeugen, nach Dateinamen suchen und so weiter.
Windows-Arbeitsgruppen und -Domänen Bisher haben wir die grundlegende SMB-Technik behandelt. Gäbe es in Ihrem Netzwerk lediglich einfache MS-DOS-Clients, wäre dies völlig ausreichend für Sie. Wir gehen aber davon aus, dass Sie Windows-Clients, vor allem neueren Datums, unterstützen wollen; deshalb wollen wir als Nächstes die Microsoft-Erweiterungen für den SMB-Netzwerkbetrieb beschreiben - das heißt WindowsArbeitsgruppen und Windows-Domänen.
Windows-Arbeitsgruppen Windows-Arbeitsgruppen sind den bereits beschriebenen SMBGruppen sehr ähnlich. Sie müssen nur einige zusätzliche Dinge wissen. Durchsuchen Das Durchsuchen (Browsing) bezeichnet den Vorgang des Auffindens anderer Computer und freigegebener Ressourcen im Windows-
Netzwerk. Beachten Sie, dass es keine Verbindung zu einem Webbrowser gibt, abgesehen vom allgemeinen Konzept des »Entdeckens, was es gibt«. Andererseits ähnelt das Durchsuchen des Windows-Netzwerks dem Durchsuchen des Webs dahingehend, dass sich Dinge ohne Warnung ändern können. Bevor es die Möglichkeit zum Durchsuchen des Netzwerks gab, mussten Benutzer den Namen des Computers wissen, mit dem sie eine Verbindung aufnehmen wollten, und manuell einen UNC-Pfad wie den folgenden in eine Anwendung oder einen Datei-Manager eingeben, um auf Ressourcen zuzugreifen: \\toltec\spirit\
Das Durchsuchen ist bedeutend bequemer. Sie können den Inhalt eines Netzwerks auf einem Windows-Client mit Hilfe des grafischen Mittels der Netzwerkumgebung5 untersuchen. In einem SMB-Netzwerk werden Ihnen zwei Arten des Durchsuchens begegnen: ●
●
Durchsuchen einer Liste von Computern und freigegebenen Ressourcen Durchsuchen der freigegebenen Ressourcen eines bestimmten Computers
Schauen wir uns zunächst das erste Verfahren an. In jedem LAN (oder Subnetz) mit einer Windows-Arbeitsgruppe oder -Domäne ist einer der Computer dafür verantwortlich, die Liste der Computer zu verwalten, die gerade über das Netzwerk erreichbar sind. Dieser Computer wird Lokaler Hauptsuchdienst (Local Master Browser; LMB) genannt, die von ihm verwaltete Liste heißt Suchliste (Browse List). Computer in einem Subnetz verwenden die Suchliste, um den Netzwerkverkehr während des Durchsuchens zu verringern. Damit nicht jeder Computer dynamisch eine Liste der verfügbaren Computer erstellen muss, können die Computer einfach den lokalen Hauptsuchdienst befragen, der ihnen eine vollständige und aktuelle Liste zurückliefert. Um die Ressourcen eines Computers zu durchsuchen, muss der Benutzer sich mit diesem Computer verbinden; die bereitgestellten Ressourcen sind nicht in der Suchliste enthalten. Sie gelangen an die Ressourcenliste eines Computers, indem Sie auf sein Symbol in der Netzwerkumgebung doppelklicken. Wie zu Beginn dieses Kapitels
beschrieben, antwortet der Computer mit der Liste der freigegebenen Ressourcen, sofern der Benutzer sich erfolgreich angemeldet hat. Jeder Server in einer Windows-Arbeitsgruppe muss seine Anwesenheit dem lokalen Hauptsuchdienst ankündigen, nachdem er seinen NetBIOS-Namen erfolgreich registriert hat. Zudem muss er sich (zumindest theoretisch) beim lokalen Hauptsuchdienst abmelden, wenn er herunterfährt oder aus anderen Gründen die Arbeitsgruppe verlässt. Es liegt in der Verantwortung des lokalen Hauptsuchdienstes, die gemeldeten Computernamen zu speichern.
Die Windows-Netzwerkumgebung kann sich merkwürdig verhalten: Solange Sie einen Computer nicht zum Durchsuchen auswählen, kann das Fenster Netzwerkumgebung veraltete Daten anzeigen. Es kann also abgestürzte oder ausgeschaltete Computer zeigen, oder es können Namen von Computern fehlen, die bereits erfolgreich registriert sind. Kurz gesagt, erst wenn Sie einen Server ausgewählt und eine Verbindung zu ihm hergestellt haben, können Sie sicher sein, dass die Freigaben und Drucker tatsächlich im Netzwerk verfügbar sind. Im Gegensatz zu den Rollen, die wir bereits beschrieben haben, kann fast jedes Windows-System (einschließlich Windows for Workgroups sowie Windows 95/98/Me und NT/2000/XP) als lokaler Hauptsuchdienst fungieren. Der lokale Hauptsuchdienst kann einen oder mehrere Sicherungssuchdienste im lokalen Subnetz besitzen, die seine Aufgabe übernehmen, falls er ausfällt oder unerreichbar wird. Um einen laufenden Betrieb zu gewährleisten, synchronisieren die lokalen Sicherungssuchdienste ihre Suchlisten häufig mit dem lokalen Hauptsuchdienst. Und so berechnen Sie die minimale Anzahl der Sicherungssuchdienste, die in einer Arbeitsgruppe eingesetzt werden:
●
●
●
Wenn sich bis zu 32 Windows NT/2000/XP-Workstations oder bis zu 16 Windows 95/98/Me-Computer im Netzwerk befinden, setzt der lokale Hauptsuchdienst einen zusätzlichen Sicherungssuchdienst ein. Liegt die Anzahl der Windows NT/2000/XP-Workstations zwischen 33 und 64 oder die Anzahl der Windows 95/98/MeWorkstations zwischen 17 und 32, werden vom lokalen Hauptsuchdienst zwei Sicherungssuchdienste bestimmt. Für jede Gruppe von 32 NT/2000/XP-Workstations oder 16 Windows 95/98/Me-Computern über dieser Zahl setzt der lokale Hauptsuchdienst einen weiteren Sicherungssuchdienst ein.
Momentan gibt es keine obere Grenze für die Anzahl der Sicherungssuchdienste, die vom lokalen Hauptsuchdienst eingesetzt werden können. Suchdienstwahlen Das Durchsuchen ist ein wichtiger Aspekt bei jeder WindowsArbeitsgruppe. Aber nicht alles läuft in jedem Netzwerk perfekt. Nehmen wir an, dass der Windows-Rechner auf dem Schreibtisch des Geschäftsführers einer kleinen Firma der lokale Hauptsuchdienst ist - dies gilt nur so lange, bis er ihn herunterfährt, um die frei gewordene Steckdose für seinen Massagestuhl zu verwenden. Zu diesem Zeitpunkt kann die Windows NT-Workstation im Ersatzteillager damit einverstanden sein, den Suchdienst zu übernehmen. Aber dieser Computer führt gerade eine große, schlecht geschriebene Anwendung aus, die den Prozessor bis zum Äußersten belastet. Also muss das Durchsuchen sehr tolerant auf neu hinzukommende und abwandernde Computer reagieren. Da fast jeder Windows-Computer als Suchdienst fungieren kann, muss es eine Möglichkeit geben, den Computer zu bestimmen, der diese Aufgabe zu erledigen hat. Dieser Vorgang heißt Wahl (election). In fast jedes Windows-Betriebssystem ist ein Auswahlalgorithmus integriert, so dass die Windows-Computer gemeinsam entscheiden können, wer den lokalen Hauptsuchdienst und wer lokale Sicherungssuchdienste übernehmen soll. Eine solche Wahl kann jederzeit erzwungen werden. Lassen Sie uns annehmen, dass unser Geschäftsführer seine Massage beendet hat und den Server neu startet. Wenn der Server hochgefahren ist, kündigt er seine Anwesenheit an und erzwingt eine Wahl, über die festgestellt wird, ob der PC im Ersatzteillager weiterhin den Hauptsuchdienst ausführen soll.
Wird eine Wahl durchgeführt, sendet jeder Computer mittels Datagrammen Angaben über sich selbst an das Netzwerk. Zu diesen Angaben gehören: ● ● ● ●
die Version des verwendeten Auswahlprotokolls das Betriebssystem des Computers die Zeitspanne, in der der Client im Netzwerk war der Hostname des Clients
Diese Werte legen fest, welcher Computer den höheren Rang besitzt und deshalb den lokalen Hauptsuchdienst ausführen wird. (Kapitel 7 beschreibt diesen Vorgang genauer.) Die Architektur, die dies gewährleisten soll, ist nicht gerade elegant gestaltet und birgt überdies Sicherheitsprobleme. Während das Durchsuchen einer Domäne in die Domänensicherheit integriert werden kann, berücksichtigt der Algorithmus nicht, welche Computer Suchdienste übernehmen. Daher ist es jedem Computer, der einen Suchdienst ausführt, möglich, sich als Teilnehmer bei Suchdienstwahlen zu registrieren und (nach dem Gewinnen einer Wahl) die Suchliste zu verändern. Nichtsdestotrotz ist das Durchsuchen eines der Schlüsselmerkmale von Windows-Netzwerken, und die Erfordernisse der Abwärtskompatibilität stellen sicher, dass dies noch mehrere Jahre lang so bleibt. Windows 95/98/Me-Authentifizierung Wenn mit Windows 95/98/Me in einer Windows-Arbeitsgruppe gearbeitet wird, können drei Arten von Kennwörtern auftreten: ● ● ●
ein Windows-Kennwort ein Windows-Netzwerkkennwort ein Kennwort für jede freigegebene Ressource, die mit Kennwortschutz ausgestattet wurde
Die Funktionsweise des Windows-Kennworts kann bei UnixSystemadministratoren Verwirrung und Kopfschütteln auslösen. Das Kennwort dient nicht dazu, nicht-autorisierten Benutzern die Benutzung des Computers zu verwehren. (Falls Sie das nicht glauben, klicken Sie einfach einmal den Abbrechen-Button und warten, was passiert!) Stattdessen wird das Windows-Kennwort dazu verwendet, den Zugang zu einer Datei zu erlangen, die die Kennwörter für das Windows-Netzwerk und die Netzwerkressource enthält. Für jeden im System registrierten Benutzer gibt es eine solche Datei. Diese befindet sich im Verzeichnis C:\Windows. Ihr Name besteht aus dem Namen des jeweiligen Benutzer-Accounts,
gefolgt von der Erweiterung .pwl. Lautet beispielsweise der Name des Benutzer-Accounts »sarah«, ist die Datei unter C:\Windows \sarah.pwl zu finden. Diese Datei ist mit dem Windows-Kennwort verschlüsselt.
Als Sicherheitsmaßnahme könnten Sie auf Windows 95/98/Me-Clients nach »falschen« .pwlDateien suchen, die angelegt worden sind, weil Benutzern bei der Anmeldung Fehler unterlaufen sind. Eine .pwl-Datei lässt sich leicht knacken und enthält möglicherweise gültige Kennwörter für Samba-Accounts und Netzwerkfreigaben. Beim ersten Zugriff auf das Netzwerk versucht Windows, das Windows-Kennwort als Kennwort für das Windows-Netzwerk zu verwenden. Ist dies erfolgreich, wird der Benutzer nicht nach zwei separaten Kennwörtern gefragt. Bei nachfolgenden Anmeldungen am Windows-System wird der Benutzer automatisch auch am Windows-Netzwerk angemeldet, wodurch sich die Angelegenheit für ihn deutlich vereinfacht. Auch freigegebenen Netzwerkressourcen in der Arbeitsgruppe können Kennwörter zugewiesen werden, um ihre Erreichbarkeit einzuschränken. Versucht ein Benutzer das erste Mal, auf die Ressource zuzugreifen, wird er nach deren Kennwort gefragt. Eine Checkbox in der Kennwort-Dialogbox ermöglicht es dem Benutzer, das Kennwort in seine Kennwortliste aufzunehmen. Das ist die Standardeinstellung. Wird dies akzeptiert, speichert Windows das Kennwort in der .pwl-Datei des Benutzers. Alle späteren Authentifizierungen bei dieser Ressource werden automatisch durch Windows erledigt. Sambas Ansatz für die Arbeitsgruppen-Authentifizierung ist ein wenig anders. Dies liegt daran, dass das Arbeitsgruppenmodell von Windows mit dem des Unix-Hosts gemischt wird, auf dem Samba läuft. In Kapitel 9 gehen wir darauf näher ein.
Windows NT-Domänen Das Peer-to-Peer-Netzwerkmodell der Arbeitsgruppen funktioniert ziemlich gut, solange die Anzahl der Computer im Netzwerk klein ist und es eine eng verwobene Gemeinschaft von Benutzern gibt. In größeren Netzwerken erweist sich jedoch die Einfachheit der Arbeitsgruppen als einschränkender Faktor. Arbeitsgruppen bieten nur die einfachste Stufe an Sicherheit, und da jede Ressource ihr eigenes Kennwort besitzen darf, ist es für die Benutzer unbequem, sich das Kennwort für jede einzelne Ressource in einem großen Netzwerk zu merken. Und auch wenn dies kein Problem darstellen würde, finden es viele Leute frustrierend, ihren Arbeitsfluss zu unterbrechen, um jedes Mal ein Kennwort in eine Dialogbox einzugeben, wenn auf eine freigegebene Ressource im Netzwerk zugegriffen wird. Um die Ansprüche größerer Netzwerke zu befriedigen, führte Microsoft mit Windows NT 3.51 das Konzept der Domänen ein. Eine Windows NT-Domäne ist im Prinzip eine Arbeitsgruppe von SMBComputern, die ein zusätzliches Element besitzen: einen Server, der als Domänen-Controller fungiert (siehe Abbildung 1-12). Abbildung 1-12 Eine einfache Windows-Domäne
Domänen-Controller Ein Domänen-Controller in einer Windows NT-Domäne funktioniert fast wie ein NIS-Server (Network Information Service) in einem UnixNetzwerk. Das heißt, er verwaltet eine domänenweite Datenbank
mit Benutzer- und Gruppeninformationen und führt verwandte Dienste aus. Die Aufgaben, für die ein Domänen-Controller verantwortlich ist, drehen sich hauptsächlich um Sicherheit, einschließlich der Authentifizierung, das heißt dem Vorgang des Gewährens oder Verweigerns des Zugriffs eines Benutzers auf die Ressourcen einer Domäne. Üblicherweise wird dies durch den Einsatz eines Benutzernamens und eines Kennworts erledigt. Der Dienst, der die Datenbank auf den Domänen-Controllern verwaltet, wird Security Account Manager (SAM) genannt. Das Windows NT-Sicherheitsmodell setzt Sicherheits-IDs (Security Identifier; SIDs) und Zugriffskontrolllisten (Access Control Lists; ACLs) ein. Sicherheits-IDs werden dazu verwendet, Objekte in der Domäne zu repräsentieren. Dazu gehören unter anderem Benutzer, Gruppen, Computer und Prozesse. SIDs werden üblicherweise in ASCII-Form als durch Bindestriche getrennte Felder geschrieben: S-1-5-21-1638239387-7675610646-9254035128-545
Der Teil der SID, der mit dem »S« beginnt und bis zum am weitesten rechts gelegenen Bindestrich führt, identifiziert eine Domäne. Die Zahl hinter dem ganz rechten Bindestrich wird relative ID (Relative Identifier; RID) genannt und ist eine eindeutige Nummer innerhalb der Domäne, die den Benutzer, die Gruppe, den Computer oder ein anderes Objekt kennzeichnet. Die RID ist analog zur Benutzer-ID (UID) oder Gruppen-ID (GID) auf einem UnixSystem oder innerhalb einer NIS-Domäne. ACLs stellen die gleiche Funktionalität zur Verfügung wie die »rwx«Dateizugriffsrechte bei Unix-Systemen. Allerdings sind ACLs vielseitiger. Die Unix-Dateizugriffsrechte setzen nur die Rechte für den Eigentümer und die Gruppe, zu denen die Datei gehört, sowie für »andere«, das heißt alle anderen Benutzer. Windows NT/2000/ XP-ACLs erlauben es, Zugriffsrechte individuell für eine beliebige Anzahl zufällig ausgewählter Benutzer und/oder Gruppen einzustellen. ACLs bestehen aus einem oder mehreren Zugriffskontrolleinträgen (Access Control Entries; ACEs), die jeweils eine SID und die damit verknüpften Zugriffsrechte enthalten. Bei einigen Unix-Varianten wurde die ACL-Unterstützung als Standardmerkmal hinzugefügt, für andere steht sie als Zusatzfunktion zur Verfügung. Samba unterstützt die Zuordnung von Windows- auf Unix-ACLs und umgekehrt. Dies wird in Kapitel 8 näher behandelt.
Primärer Domänen-Controller und Backup-Domänen-Controller Sie haben bereits etwas über Haupt- und Sicherungssuchdienste erfahren. Das Konzept der Domänen-Controller ist ähnlich. Eine Domäne besitzt einen primären Domänen-Controller (PDC) und kann außerdem einen oder mehrere Backup-Domänen-Controller (Backup Domain Controller; BDC) besitzen. Fällt der PDC aus oder wird unerreichbar, werden seine Pflichten automatisch von einem der BDCs übernommen. Die BDCs synchronisieren ihre SAM-Daten häufig mit dem PDC. Im Bedarfsfall kann einer von ihnen daher sofort damit beginnen, die Dienste des Domänen-Controllers zu übernehmen, ohne die Clients zu beeinträchtigen. Allerdings verfügen die BDCs nur über schreibgeschützte Kopien der SAMDatenbank; sie können ihre Daten nur aktualisieren, indem sie sie mit einem PDC abgleichen. Ein Server in einer Windows-Domäne kann die SAM-Datenbank eines beliebigen PDC oder BDC verwenden, um einen Benutzer zu authentifizieren, der versucht, auf seine Ressourcen zuzugreifen und sich an der Domäne anzumelden. Alle aktuellen Windows-Versionen können sich als Clients an einer Domäne anmelden, um auf die Ressourcen des Domänen-Servers zuzugreifen. Die Systeme, die als Mitglieder der Domäne betrachtet werden, gehören einer etwas exklusiveren Kategorie an, die aus dem PDC und den BDCs sowie den Domänen-Member-Servern besteht. Das sind Systeme, die einer Domäne als Mitglieder beigetreten sind und den Domänen-Controllern bekannt sind, da sie einen Account in der SAM-Datenbank besitzen. Authentifizierung Wenn ein Benutzer sich an einer Windows-Domäne anmeldet, indem er einen Benutzernamen und ein Kennwort eingibt, wird durch den Client-Computer und einen Domänen-Controller ein sicheres Challenge-Response-Protokoll gestartet, um zu überprüfen, ob der Benutzername und das Kennwort gültig sind. Anschließend sendet der Domänen-Controller eine SID an den Client zurück, der diese verwendet, um ein Security Access Token (SAT) zu erzeugen, das nur für dieses System gilt und für die weitere Authentifizierung benutzt wird. In dieses Zugriffs-Token sind Informationen über den Benutzer kodiert, einschließlich des Benutzernamens, der Gruppe und der Rechte, die dieser Benutzer innerhalb der Domäne besitzt. Nun ist der Benutzer an der Domäne angemeldet. Versucht der Client danach, auf eine freigegebene Ressource innerhalb der Domäne zuzugreifen, tritt das Client-System in einen
sicheren Challenge-Response-Austausch mit dem Server der Ressource ein. Der Server wiederum beginnt seinerseits eine sichere Challenge-Response-Kommunikation mit einem Domänen-Controller, um festzustellen, ob der Client gültig ist. (Tatsächlich geschieht Folgendes: Der Server nutzt Informationen, die er vom Client erhalten hat, um so zu tun, als sei er der Client, und sich bei dem Domänen-Controller zu authentifizieren. Wenn der DomänenController die Daten ausgewertet hat, schickt er eine SID an den Server zurück, der diese einsetzt, um sein eigenes SAT für den Client zu erzeugen und im Namen des Clients den Zugriff auf seine lokale Ressource zu erlauben.) An dieser Stelle ist der Client für die Ressourcen auf dem Server authentifiziert und darf auf sie zugreifen. Der Server verwendet die SID im Zugriffs-Token, um festzustellen, welche Zugriffsrechte der Client besitzt, um die angeforderte Ressource zu nutzen und zu modifizieren. Dazu vergleicht er die Rechte mit den Einträgen in der ACL der Ressource. Diese Authentifizierungsmethode mag zwar überaus kompliziert erscheinen, allerdings erlaubt sie es Clients, sich zu authentifizieren, ohne Klartextkennwörter durch das Netzwerk zu schicken. Darüber hinaus ist sie bedeutend schwieriger zu knacken als die relativ schwache Arbeitsgruppensicherheit, die wir zuvor beschrieben haben. Namendienst mit WINS und DNS Der Windows Internet Name Service (WINS) ist Microsofts Implementierung eines NetBIOS-Name-Servers (NBNS). Als solcher hat WINS viele der Eigenschaften von NetBIOS übernommen. Zunächst ist der Namensraum »flach«. Sie können Ihren Computern also nur einfache Namen wie inca, mixtec oder navaho und Ihren Arbeitsgruppen Namen wie PERU, MEXICO oder USA geben. Außerdem ist WINS dynamisch: Wenn ein Client hochfährt, muss er seinen Hostnamen, seine Adresse und seine Arbeitsgruppe an den lokalen WINS-Server melden. Der WINS-Server behält diese Informationen, solange der Client seine WINS-Registrierung regelmäßig erneuert, womit er seine Anwesenheit im Netzwerk kundtut. Beachten Sie, dass WINS-Server nicht Arbeitsgruppenoder domänenbezogen arbeiten. Sie können Informationen für mehrere Domänen und/oder Arbeitsgruppen enthalten, die in mehr als einem Subnetz existieren. Es ist möglich, mehrere WINS-Server so einzurichten, dass sie sich gegenseitig synchronisieren. Damit können Einträge von Computern, die sich am Netzwerk an- oder abmelden, zwischen den WINSServern ausgetauscht werden. In der Theorie klingt das effizient,
aber in der Praxis kann sich dieses Verfahren als schwerfällig erweisen, wenn Sie mehrere WINS-Server im Netzwerk einsetzen. Da WINS-Dienste mehrere Subnetze überbrücken können (Sie können die Adresse des WINS-Servers in jedem Client fest einstellen oder sie über DHCP beziehen), ist es häufig effektiver, für alle Windows-Clients denselben WINS-Server zu verwenden, unabhängig von der Anzahl der Windows-Domänen. Auf diese Weise gibt es nur einen autoritativen WINS-Server mit den richtigen Daten, anstatt dass mehrere WINS-Server ständig aushandeln müssen, welche Daten aktueller sind. Der momentan aktive WINS-Server wird auch als primärer WINSServer bezeichnet. Sie können ebenfalls einen sekundären WINSServer installieren, der die Aufgaben des primären WINS-Servers übernimmt, falls dieser ausfällt oder unerreichbar wird. Der primäre sowie alle anderen WINS-Server synchronisieren ihre Adressdatenbanken regelmäßig. In der Windows-Betriebssystemfamilie können Sie nur die ServerAusgabe von Windows NT/2000 als WINS-Server einsetzen. Auch Samba 2.2 kann als primärer WINS-Server arbeiten, ist aber nicht in der Lage, seine Datenbank mit anderen WINS-Servern zu synchronisieren. Daher kann es nicht als sekundärer WINS-Server oder als primärer WINS-Server für einen sekundären WINS-Server mit Windows fungieren. Standardmäßig führt WINS den Namensdienst aus, obwohl Microsoft mit Windows NT 4 Server DNS eingeführt hat. Es ist kompatibel mit DNS, das auf praktisch jedem Unix-System Standard ist. Ein UnixServer (wie etwa der Samba-Host) kann ebenfalls für DNS eingesetzt werden. Vertrauensbeziehungen Ein weiterer Aspekt von Windows NT-Domänen, der in Samba 2.2 noch nicht unterstützt wird, ist die Tatsache, dass es möglich ist, eine Vertrauensbeziehung zwischen Domänen einzurichten, die es Clients in einer Domäne erlaubt, auf die Ressourcen in einer anderen Domäne zuzugreifen, ohne eine weitere Authentifizierung zu durchlaufen. Das dabei befolgte Protokoll wird als Pass-Through Authentication bezeichnet. Die Zugangsdaten des Benutzers werden vom Client-System in der ersten Domäne an den Server in der zweiten Domäne übermittelt, der einen Domänen-Controller in der ersten (vertrauenswürdigen) Domäne konsultiert, um zu überprüfen, ob der Benutzer gültig ist, bevor er Zugang zur Ressource gewährt.
Beachten Sie, dass sich die Verhaltensweisen einer WindowsArbeitsgruppe und einer Windows NT-Domäne an vielen Stellen überschneiden. So sind die Haupt- und die Sicherungssuchdienste in einer Domäne immer PDC bzw. BDC. Wir wollen unsere Darstellung der Windows-Domäne so anpassen, dass sie einen lokalen Hauptsuchdienst sowie einen lokalen Sicherungssuchdienst enthält. Das Ergebnis sehen Sie in Abbildung 1-13. Abbildung 1-13 Eine Windows-Domäne mit einem lokalen Hauptsuchdienst und einem lokalen Sicherungssuchdienst
Die Ähnlichkeit zwischen Arbeitsgruppen und NT-Domänen ist nicht zufällig. Das Konzept der Windows-Domänen kam erst mit der Einführung von Windows NT 3.5 auf. Windows-Domänen sollten dann abwärts kompatibel zu den Arbeitsgruppen bleiben, die es in Windows for Workgroups gab. Samba kann für Windows 95/98/Me- sowie für Windows NT/2000/XPClients als primärer Domänen-Controller (PDC) agieren, nicht jedoch als Backup-Domänen-Controller (BDC). Außerdem kann Samba als Domänen-Member-Server arbeiten. Das bedeutet, dass es einen Computer-Account in der AccountDatenbank des PDC besitzt und daher als Bestandteil der Domäne erkannt wird. Ein Domänen-Member-Server dient nicht zur Authentifizierung von Benutzern, die sich an der Domäne anmelden, führt aber Sicherheitsfunktionen (etwa Dateizugriffsrechte) für Domänen-Benutzer aus, die auf seine Ressourcen zugreifen.
Active Directory-Domänen Beginnend mit Windows 2000 hat Microsoft Active Directory eingeführt, das noch einen Schritt weiter geht als Windows NTDomänen. Wir werden uns mit dem Thema Active Directory nicht näher befassen, da es doch sehr umfangreich ist. Samba 2.2 unterstützt Active Directory überhaupt nicht, und in Samba 3.0 beschränkt sich die Unterstützung darauf, dass es als Client agiert. Für den Moment sollten Sie sich lediglich merken, dass das Authentifizierungsmodell von Active Directory LDAP (Lightweight Directory Access Protocol) einsetzt und der Namensdienst über DNS und nicht über WINS zur Verfügung gestellt wird. Die Domänen in Active Directory können in einer hierarchischen Baumstruktur organisiert werden, in der jeder Domänen-Controller als Peer arbeitet und nicht zwischen primären und Sicherheits-Controllern unterschieden wird wie in Windows NT-Domänen. Windows 2000/XP-Systeme können als einfache Arbeitsgruppen oder als Clients einer Windows NT-Domäne eingerichtet werden (die mit Samba arbeiten). Die Server-Editionen von Windows 2000 lassen sich so einrichten, dass sie Active Directory ausführen und aus Gründen der Abwärtskompatibilität Windows NT-Domänen unterstützen (Mixed Mode). In diesem Fall arbeitet Samba 2.2 mit Windows 2000-Servern auf die gleiche Weise wie mit Windows NT 4.0-Servern. Werden sie für den Native Mode eingerichtet, unterstützen Windows 2000-Server nur Active Directory. Selbst dann kann Samba 2.2 als Server in einer Domäne arbeiten, die von einem Windows 2000-Server im Native Mode verwaltet wird, indem der PDC-Emulationsmodus des Windows 2000-Servers eingesetzt wird. Samba 2.2 oder 3.0 dagegen können in einer Windows 2000 Active Directory-Domäne nicht als Domänen-Controller auftreten. Falls Sie mehr über Active Directory erfahren wollen, raten wir Ihnen, sich das Buch Windows 2000 Active Directory von O'Reilly zu kaufen.
Kann eine Windows-Arbeitsgruppe mehrere Subnetze umfassen? Ja, aber den meisten Menschen, die eine solche Konfiguration eingerichtet haben, hat dies einiges Kopfzerbrechen bereitet. Windows NT 3.5 oder Windows for Workgroups waren ursprünglich nicht für Umgebungen mit mehreren Subnetzen gedacht. Das Ergebnis ist, dass eine Windows-Domäne, die zwei oder mehr Subnetze umfasst, in Wirklichkeit aus zwei oder mehr notdürftig
miteinander verbundenen Arbeitsgruppen besteht, die den gleichen Namen verwenden. Die gute Nachricht ist, dass Sie weiterhin einen primären Domänen-Controller verwenden können, um die Authentifizierung in allen Subnetzen zu gewährleisten. Die schlechte Nachricht ist, dass das Durchsuchen in diesem Fall eine komplizierte Angelegenheit ist. Wie bereits erwähnt, muss jedes Subnetz seinen eigenen lokalen Hauptsuchdienst besitzen. Umfasst eine Windows-Domäne mehrere Subnetze, muss der Administrator in jedem Subnetz einen der Computer zum Domänen-Hauptsuchdienst (Domain Master Browser; DMB) ernennen. Der Domänen-Hauptsuchdienst verwaltet eine Suchliste der gesamten Windows-Domäne. Der Computer erstellt diese Suchliste, indem er die Suchlisten der lokalen Hauptsuchdienste regelmäßig mit der Suchliste des DomänenHauptsuchdienstes synchronisiert. Nach dem Synchronisieren sollten daher die Suchlisten der lokalen Suchdienste und des DomänenHauptsuchdienstes identisch sein. Abbildung 1-14 verdeutlicht dies. Abbildung 1-14 Eine Arbeitsgruppe, die mehrere Subnetze umfasst
Hört sich doch gut an? Nun, aus folgenden Gründen ist es nicht ganz das Nirwana: ●
●
Wenn ein primärer Domänen-Controller existiert, übernimmt er automatisch die Rolle des Domänen-Hauptsuchdienstes. Die beiden verwenden dank des Designs von Microsoft den gleichen NetBIOS-Ressourcentyp <1B> und können (leider) nicht voneinander getrennt werden. Windows 95/98/Me-Computer können nicht zum DomänenHauptsuchdienst werden oder gar mit ihm kommunizieren. Es ist daher notwendig, mindestens ein Windows NT/2000/XPSystem (oder einen Samba-Server) pro Subnetz einzusetzen, falls die Arbeitsgruppe aus mehreren Subnetzen besteht.
Die lokalen Hauptsuchdienste eines jeden Subnetzes verwalten weiterhin die Suchliste des Subnetzes, für das sie zuständig sind. Wenn also ein Computer eine Liste von Servern in seinem eigenen Subnetz sehen will, fragt er den lokalen Hauptsuchdienst dieses
Subnetzes. Möchte ein Computer eine Liste mit Computern außerhalb seines Subnetzes erhalten, kann er ebenfalls nur so weit gehen wie der lokale Hauptsuchdienst. Das funktioniert, weil die autoritative Suchliste der lokalen Hauptsuchdienste mit der Liste des Domänen-Hauptsuchdienstes abgeglichen wird. Die Suchliste des Domänen-Hauptsuchdienstes wiederum wird aus den lokalen Hauptsuchdiensten aller Subnetze zusammengestellt. Dieser Vorgang heißt Suchlistenverteilung. Samba kann als Domänen-Hauptsuchdienst in einer Windows NTDomäne dienen. Es kann auch als lokaler Hauptsuchdienst für ein Subnetz arbeiten, um seine Suchliste mit der des DomänenHauptsuchdienstes zu synchronisieren.
Was ist neu in Samba 2.2? Mit Version 2.2 bietet Samba eine bessere Unterstützung für Windows-Netzwerke, einschließlich der Fähigkeit, die wichtigeren Aufgaben auszuführen, die für das Arbeiten in einer Windows NTDomäne notwendig sind. Darüber hinaus enthält Samba 2.2 einige Unterstützung für Techniken, die Microsoft in Windows 2000 eingeführt hat. Allerdings hat das Samba-Team die Unterstützung für Active Directory erst für Version 3.0 angekündigt.
PDC-Unterstützung für Windows 2000/XP-Clients Samba konnte schon zuvor als PDC arbeiten, um Windows 95/98/ Me- und Windows NT 4-Systeme zu authentifizieren. Diese Funktionalität wurde in Release 2.2 erweitert und umfasst nun auch Windows 2000 und Windows XP. Das heißt, nun ist es möglich, einen Samba-Server zu betreiben, der Domänen-Anmeldungen für ein Netzwerk aus Windows-Clients unterstützt, einschließlich der neuesten Releases von Microsoft. Als Ergebnis erhalten Sie ein sehr stabiles, leistungsfähiges Netzwerk mit größerer Sicherheit. Außerdem müssen Sie nicht für jeden Arbeitsplatz Windows-CALs von Microsoft erwerben.
Unterstützung für Microsoft Dfs Microsoft Dfs (Distributed file system; verteiltes Dateisystem) erlaubt die Zusammenfassung von freigegebenen Ressourcen, die über mehrere Server im Netzwerk verteilt sind. Für die Benutzer sieht es dann so aus, als würden diese Ressourcen in einem einzigen Verzeichnisbaum auf dem Server existieren. Diese Art der
Organisation erleichtert den Benutzern das Leben ganz erheblich. Anstatt das Netzwerk auf der Suche nach der gewünschten Ressource durchwühlen zu müssen, können sie sich direkt zum DfsServer begeben und dort auf die Ressource zugreifen. Samba 2.2 bietet Unterstützung für Dfs, für diesen Zweck wird also nicht länger ein Windows-Server benötigt.
Unterstützung für das Drucken unter Windows NT/2000/XP Windows NT/2000/XP besitzt eine andere RPC-basierte (Remote Procedure Call) Druckerschnittstelle als Windows 95/98/Me. Bei Samba 2.2 wird die Windows NT/2000/ XP-Schnittstelle unterstützt. Dazu hat das Samba-Team die Möglichkeit vorgesehen, den Druckertreiber automatisch vom Samba-Server herunterzuladen, während auf einem Windows-Client ein neuer Drucker angelegt wird.
Zugriffskontrolllisten Samba erlaubt nun auf seinem Unix-Host Zugriffskontrolllisten (Access Control Lists; ACLs) für Unix-Varianten, die diese unterstützen. Dazu gehören unter anderem Solaris 2.6, 7 und 8, Irix, AIX, Linux (entweder mit dem ACL-Patch für das ext2/ext3Dateisystem von http://acl.bestbits.at oder beim Einsatz des XFSDateisystems) und FreeBSD (Version 5.0 und später). Werden ACLs unterstützt, übersetzt Samba zwischen Unix-ACLs und Windows NT/2000/XP-ACLs. Aus Sicht der Windows-Clients sieht der SambaHost in diesem Fall mehr aus wie ein Windows NT/2000/XP-Server und verhält sich auch so.
Unterstützung für Werkzeuge zur Administration von Windows-Clients Windows enthält Werkzeuge, die von einem Client aus benutzt werden können, um freigegebene Ressourcen auf einem WindowsServer von außen zu verwalten. Samba 2.2 erlaubt außerdem das Arbeiten mit diesen Werkzeugen auf Freigaben auf dem SambaServer.
Die Integration mit Winbind Winbind ist eine Einrichtung, die es Benutzern, deren AccountInformationen in einer Windows-Domänen-Datenbank gespeichert sind, erlaubt, sich an einem Unix-System zu authentifizieren. Das Ergebnis ist eine einheitliche Anmeldeumgebung, in der ein
Benutzerzugang entweder auf dem Unix-System oder auf einem Windows NT/2000-Domänen-Controller vorgehalten werden kann. Dadurch wird die Account-Verwaltung auf großartige Weise unterstützt, da die Administratoren nun nicht mehr zwei Systeme synchronisiert halten müssen. Außerdem ist es für Benutzer, deren Accounts in einer Windows-Domäne liegen, möglich, sich zu authentifizieren, wenn sie auf Samba-Freigaben zugreifen.
Unix-CIFS-Erweiterungen Die Unix-CIFS-Erweiterungen wurden bei Hewlett-Packard entwickelt und mit Samba 2.2.4 eingeführt. Sie erlauben es Samba-Servern, Unix-Dateisystemattribute, wie Links und Zugriffsrechte, zu unterstützen, wenn sie Dateien mit anderen Unix-Systemen gemeinsam nutzen. Samba kann dadurch als Alternative zu NFS (Network File Sharing) für das Filesharing zwischen Unix-Systemen genutzt werden. Als vorteilhaft beim Einsatz von Samba erweist es sich, dass Samba einzelne Benutzer authentifiziert, während NFS nur Clients authentifiziert (und zwar auf der Grundlage ihrer IPAdresse, was ein ausgesprochen armseliges Sicherheitsmodell ist). Samba kann daher im Bereich Sicherheit Punkte sammeln und bietet darüber hinaus noch eine bessere Konfigurierbarkeit. In Kapitel 5 finden Sie nähere Informationen darüber, wie Sie Unix-Systeme als Samba-Clients betreiben.
Und mehr ... Wie üblich hat der Code eine Reihe von Verbesserungen erfahren, die sich auf Administratorebene nicht sofort oder offensichtlich zeigen. Samba funktioniert nun besser auf Systemen, die PAMs (Pluggable Authentication Modules) verwenden, und es gibt eine bessere Unterstützung für Profile. Sambas Unterstützung für opportunistische Sperren (Oplocks) wurde verbessert; es wird nun eine bessere Integration mit Server-terminierten NFS-Leases (momentan nur auf Irix und Linux) und mit der Abbildung von SMBSperren auf POSIX-Sperren in das lokale Dateisystem geboten (dies hängt von der Implementierung der POSIX-Sperren in den einzelnen Unix-Varianten ab). Und natürlich wurden eine Menge Fehler beseitigt.
Was ist neu in Samba 3.0? Das wichtigste Unterscheidungsmerkmal für Samba 3.0 besteht darin, dass es Unterstützung für die Kerberos 5-Authentifizierung und LDAP bietet, die beide notwendig sind, um als Clients in einer
Active Directory-Domäne zu arbeiten. Ein weiteres neues Merkmal in Samba 3.0 ist die Unterstützung für Unicode, das den Einsatz unterschiedlicher Sprachen vereinfacht. Für spätere Releases von Version 3 plant das Samba-Team die Entwicklung einer Unterstützung der WINS-Replikation, wodurch es Samba möglich wird, als sekundärer WINS-Server oder als primärer WINS-Server mit sekundären Windows- oder Samba-WINS-Servern zu arbeiten. Weiterhin ist die Unterstützung für den Betrieb als Windows NT-BDC und die Unterstützung für Windows NT-DomänenVertrauensbeziehungen geplant.
Was leistet Samba? Wir wollen nun noch einmal zusammenfassen, was Samba leisten kann und an welchen Stellen ihm Beschränkungen auferlegt sind. In Tabelle 1-9 ist aufgeführt, welche Rollen Samba in einer Windows NT- oder Active Directory-Domäne oder in einer WindowsArbeitsgruppe spielen kann und welche nicht. Viele der WindowsDomänen-Protokolle sind proprietär und wurden von Microsoft nicht dokumentiert; sie mussten daher vom Samba-Team rekonstruiert werden, bevor Samba sie unterstützen konnte. Bis Version 3.0 kann Samba in den meisten Rollen nicht als Sicherungssystem arbeiten und bietet keine vollständige Unterstützung für Active Directory.
Tabelle 1-9 Samba-Funktionen (bis Version 3.0) Funktion (Rolle)
Beherrscht Samba sie?
Datei-Server
Ja
Druck-Server
Ja
Microsoft-Dfs-Server
Ja
Primärer Domänen-Controller
Ja
Backup-Domänen-Controller
Nein
Active Directory-Domänen-Controller
Nein
Windows 95/98/Me-Authentifizierung
Ja
Windows NT/2000/XP-Authentifizierung Ja
Lokaler Hauptsuchdienst
Ja
Lokaler Sicherungssuchdienst
Ja
Domänen-Hauptsuchdienst
Ja
Primärer WINS-Server
Ja
Sekundärer WINS-Server
Nein
Ein Überblick über die Samba-Distribution Wie bereits beschrieben, besteht Samba aus mehreren Programmen, die unterschiedliche, aber miteinander verknüpfte Aufgaben erfüllen. Diese Programme sind in Anhang C vollständig dokumentiert. An dieser Stelle wollen wir sie nur kurz vorstellen und beschreiben, wie sie zusammenarbeiten. Die meisten Programme der Samba-Distribution beziehen sich auf seine zwei Daemons. Schauen wir uns zunächst die Funktionen der Daemons genauer an: nmbd Der nmbd-Daemon ist ein einfacher Name-Server, der die Funktionalität eines WINS-Servers zur Verfügung stellt. Dieser Daemon wartet auf Name-Server-Anfragen und liefert bei einer Anfrage die entsprechenden IP-Adressen. Er stellt außerdem Suchlisten für die Netzwerkumgebung bereit und nimmt an Suchdienstwahlen teil. smbd Der smbd-Daemon verwaltet die freigegebenen Ressourcen zwischen dem Samba-Server und seinen Clients. Er stellt SMBClients in einem oder mehreren Netzwerken Datei-, Druck- und Suchdienste zur Verfügung und verarbeitet alle Nachrichten, die zwischen dem Samba-Server und den Clients ausgetauscht werden. Außerdem ist dieser Daemon für die Benutzerauthentifizierung, das Sperren von Ressourcen und für die Datenfreigabe über das SMB-Protokoll verantwortlich. Neu in Version 2.2 ist ein weiterer Daemon: winbindd Dieser Daemon wird zusammen mit dem Name Service Switch verwendet, um an Informationen über Benutzer und Gruppen
eines Windows NT-Servers zu gelangen. Außerdem erlaubt er es Samba, Benutzer durch einen Windows NT/2000-Server zu autorisieren. Die Samba-Distribution enthält weiterhin einige UnixKommandozeilen-Programme: findsmb Ein Programm, das das lokale Netzwerk nach Computern durchsucht, die auf das SMB-Protokoll antworten, und Informationen auf ihnen ausgibt. make_smbcodepage Dieses Programm wird beim Arbeiten mit Sambas Internationalisierungsfunktionen verwendet. Es teilt Samba mit, wie in verschiedenen Zeichensätzen zwischen Groß- und Kleinschreibung umgeschaltet wird. make_unicodemap Ein weiteres Internationalisierungsprogramm, das zum Kompilieren von Unicode-Map-Dateien benutzt wird, die Samba einsetzt, um DOS-Codepages oder Unix-Zeichensätze in 16-BitUnicode zu übersetzen. net Mit diesem neuen Programm, das in Samba 3.0 enthalten ist, können Administrationsaufgaben auf entfernten Servern erledigt werden. nmblookup Ein Programm, das NBT-Namens-Lookups ermöglicht, um bei einem vorgegebenen Computernamen die IP-Adresse eines Rechners zu ermitteln. pdbedit Ein neues Programm, das mit Samba 3.0 ausgeliefert wird und bei der Verwaltung von Benutzer-Accounts in SAM-Datenbanken hilft. rpcclient Mit diesem Programm können MS-RPC-Funktionen auf WindowsClients ausgeführt werden. smbcacls Ein Programm, das verwendet wird, um ACLs auf Windows NTDateisystemen zu setzen oder anzuzeigen. smbclient Ein ftp-artiger Unix-Client für den Zugriff auf SMB-Freigaben. Der Befehl smbclient wird in Kapitel 5 näher behandelt. smbcontrol Ein einfaches Administrationswerkzeug, das Nachrichten an
nmbd oder smbd sendet. smbgroupedit Ein Befehl, mit dem Zuordnungen zwischen Windows NTGruppen und Unix-Gruppen definiert werden können. Dieser Befehl ist neu in Samba 3.0. smbmnt Ein Hilfsprogramm, das zusammen mit smbmount verwendet wird. smbmount Ein Programm, das ein smbfs-Dateisystem mountet und es dadurch entfernten SMB-Freigaben erlaubt, in das Dateisystem des Samba-Hosts gemountet zu werden. smbpasswd Ein Programm, das es einem Administrator erlaubt, die Kennwörter zu ändern, die von Samba verwendet werden. smbsh Ein Werkzeug, das ähnlich einer Kommando-Shell funktioniert, um den Zugriff auf ein entferntes SMB-Dateisystem zu erlauben und es Unix-Programmen zu ermöglichen, darauf zu arbeiten. Dieser Befehl wird in Kapitel 5 behandelt. smbspool Ein Druck-Spooling-Programm, das verwendet wird, um Dateien an entfernte Drucker zu senden, die in einem SMB-Netzwerk freigegeben sind. smbstatus Dieses Programm meldet den Zustand der aktiven Netzwerkverbindungen auf einem Samba-Server. smbtar Ein Programm zum Sichern von Daten in Freigaben, ähnlich dem Unix-Befehl tar. smbumount Ein Programm zum Abmounten von smbfs-Dateisystemen, das zusammen mit smbmount eingesetzt wird. testparm Dieses einfache Programm prüft die Samba-Konfigurationsdatei. testprns Ein Programm, das testet, ob Drucker auf dem Samba-Host vom smbd-Daemon erkannt werden. wbinfo Ein Dienstprogramm, das verwendet wird, um den winbinddDaemon abzufragen. Jede wichtige neue Samba-Version wird vor ihrer Ankündigung ausführlich getestet. Wenn Probleme oder unerwünschte
Nebenwirkungen auftreten, werden diese schnell beseitigt. Als wir diese Zeilen schrieben, war die neueste stabile Distribution Samba 2.2.6. Dieses Buch konzentriert sich auf die Funktionalität von Samba 2.2.6, weniger auf die älteren Versionen von Samba.
Woher bekomme ich Samba? Quell- und Binärdistributionen von Samba gibt es auf Mirror-Sites im Internet. Die Haupt-Website für Samba ist unter http://www.samba. org / zu finden. Von dort können Sie eine Mirror-Site in Ihrer Nähe wählen. Die meisten Linux- und viele Unix-Hersteller bieten Binärpakete. Diese sind möglicherweise bequemer zu installieren und zu warten als die Quell- oder Binärpakete des Samba-Teams, da die Hersteller üblicherweise versuchen, ein Paket zu liefern, das den Eigenschaften ihres speziellen Produkts entgegenkommt. 1Sie
können auch in der Netzwerkumgebung mit der rechten Maustaste auf die freigegebene Ressource klicken und den Menüpunkt Netzlaufwerk verbinden wählen.
2Seien
Sie davor gewarnt, dass viele Lizenzvereinbarungen für Endbenutzer es nicht gestatten, ein Programm auf einem Netzlaufwerk zu installieren, so dass mehrere Clients darauf zugreifen können. Prüfen Sie den der jeweiligen Software beigelegten Lizenzvertrag, um ganz sicherzugehen.
3Möglicherweise
finden Sie auch die Abkürzung NetBT, vor allem in Microsoft-Literatur.
4Unter
http://www.samba.org/cifs/docs/what-is-smb.html finden Sie Richards ausgezeichnete Zusammenfassung von SMB.
5Beachten
Sie, dass sich die Netzwerkumgebung in den neueren Windows-Versionen Windows Me/2000/XP an einigen Stellen etwas anders verhält als in den älteren Versionen Windows 95/98/ NT.
Kapitel 2 Samba auf einem Unix-System installieren Sie wissen jetzt, was Samba für Sie und Ihre Benutzer leisten kann. Nun ist es an der Zeit, Ihr Netzwerk einzurichten. Lassen Sie uns mit der Installation von Samba beginnen. Sowohl Samba tanzen als auch Samba installieren lernt man in kleinen Schritten. Dieses Kapitel hilft Ihnen, mit dem richtigen Fuß zu beginnen. Um es möglichst anschaulich zu gestalten, installieren wir Samba 2.2.6 auf einem Linux-System mit der Kernel-Version 2.4. Die Installationsschritte sind aber auf allen von Samba unterstützten Plattformen identisch.
In der Distribution enthaltene Versionen Samba ist so populär, dass es bei vielen Unix-Distributionen bereits installiert ist. Falls Sie sich für eine solche Version von Samba entscheiden, können Sie den größten Teil dieses Kapitels überfliegen oder ganz weglassen. Allerdings müssen Sie dann bei dieser Samba-Version sowie den Kompilierungsoptionen bleiben, die der Hersteller für Sie eingestellt hat. Diese Version von Samba kann niemals neuer sein als das Release des Betriebssystems. Sie werden also den neuesten Entwicklungen zwangsläufig immer hinterherhinken. Andererseits können Sie sich sicher sein, dass eine im Paket enthaltene Version korrekt installiert ist. Vermutlich müssen Sie nur einige einfache Veränderungen an der smb.confDatei vornehmen, um loslegen zu können. Samba ist inzwischen so gut, dass Sie wahrscheinlich nicht unbedingt die neueste Ausgabe brauchen, um Ihre grundlegenden Ansprüche zu befriedigen. Sie werden deshalb mit einer dem Betriebssystem beigelegten Version durchaus zufrieden sein. Falls Sie sich für diese Möglichkeit entscheiden, sollten Sie beachten, dass sich Ihre Samba-Dateien, einschließlich der sehr wichtigen smb.conf, an anderen Stellen befinden könnten, als wenn Sie Samba aus einer Binäroder Quelldistribution installieren würden. Beispielsweise befinden sich bei den Red Hat-, Debian- und Mandrake-Linux-Distributionen die smb.conf und einige andere mit Samba im Zusammenhang stehende Dateien im Verzeichnis /etc/samba. Ist Samba auf Ihrem System bereits installiert, können Sie mit dem folgenden Befehl feststellen, um welche Version es sich handelt: $ smbd -V Version 2.2.6
(Falls das nicht funktioniert, steht smbd möglicherweise nicht im Suchpfad Ihrer Shell. Wenn es in Ihrer Unix-Variante die Befehle locate oder whereis gibt, benutzen Sie diese, um das smbd-Programm zu finden.) Sie könnten auch ein systemspezifisches Werkzeug verwenden, um ein Paketverwaltungsprogramm abzufragen. Bei Red Hat Linux geben Sie zum Beispiel den Befehl rpm, um die installierten Samba-Pakete zu ermitteln: $ rpm -qa | grep samba samba-client-2.0.8-1.7.1 samba-2.0.8-1.7.1 samba-common-2.0.8-1.7.1
Hier sehen Sie, dass es sich um Samba 2.0.8 handelt, aufgeteilt in drei RPM-Pakete (Red Hat Package Manager), im Bundle mit Red Hat 7.1. Haben Sie eine alte Version von Samba, könnten Sie dann zumindest beim Hersteller nach einer neueren Version fragen. Falls Sie sich ansonsten sicher sind, dass Sie aus einer Binär- oder Quelldistribution heraus installieren werden, können Sie die RPM-Pakete löschen: # rpm -e samba # rpm -e samba-client # rpm -e samba-common
Schauen Sie in die Dokumentation Ihres Systems, um die für Sie passende Methode zu ermitteln, falls Sie kein Red Hat Linux benutzen.
Binär oder Quelle? Für viele Unix-Plattformen gibt es auch vorkompilierte »binäre« Pakete. Diese Pakete enthalten Binaries für jedes Samba-Programm sowie die Standard-Samba-Dokumentation. Beachten Sie, dass Sie sich zwar eine Menge Zeit und Probleme ersparen, wenn Sie eine Binärdistribution installieren, aber auch einige Punkte bedenken sollten, bevor Sie entscheiden, ob Sie die Binärversion verwenden oder die Quelle selbst kompilieren: ●
Die Binärpakete können um ein oder zwei (möglicherweise sogar mehr) kleinere Releases hinter der neuesten Version der Software
●
hinterherhinken. Dies gilt vor allem nach einer Reihe kleinerer Änderungen und für weniger verbreitete Plattformen. Vergleichen Sie die Release-Hinweise für die Quell- und Binärpakete, um sicherzugehen, dass es keine neuen Funktionen gibt, die Sie auf Ihrer Plattform brauchen. Falls Sie eine vorkompilierte Binärversion verwenden, die dynamisch verbunden ist, müssen Sie sicherstellen, dass Sie die korrekten, von den Programmen benötigten Bibliotheken besitzen. Verfügt Ihr System noch nicht über die erforderliche Version einer Bibliothek, müssen Sie unter Umständen eine neue Version installieren. In der README-Datei oder der make-Datei, die die Binärdistribution begleiten, sollten alle besonderen Erfordernisse aufgeführt sein.
Viele Systeme mit Shared Libraries enthalten ein nettes kleines Werkzeug namens ldd. Dieses Programm teilt Ihnen mit, welche Bibliotheken eine bestimmte Binärversion benötigt und welche Bibliotheken im System diesen Anforderungen genügen. Eine Prüfung des smbd-Programms auf unserer Testmaschine ergab beispielsweise Folgendes: $ ldd smbd libdl.so.2 => /lib/libdl.so.2 (0x40026000) libnsl.so.1 => /lib/libnsl.so.1 (0x4002a000) libpam.so.0 => /lib/libpam.so.0 (0x40041000) libc.so.6 => /lib/libc.so.6 (0x40049000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Inkompatibilitäten zwischen Samba und speziellen Bibliotheken auf Ihrer Maschine sollten in der Dokumentation der Distribution hervorgehoben sein. ●
●
Ist Ihr vorkompiliertes Binary statisch verbunden, können ebenfalls Probleme auftreten. Es gab bereits Fälle, in denen die statisch verbundenen C-Bibliotheksaufrufe in Samba-Programmen nicht synchron mit dem Betriebssystemkern liefen, obwohl »dies eigentlich nicht passieren sollte«. Denken Sie daran, dass jede Binärdistribution voreingestellte Werte für die Zielplattform, wie Standardverzeichnisse und Konfigurationsoptionen, enthält. Prüfen Sie auch hier die Dokumentation und die make-Datei im Quellverzeichnis, um herauszufinden, welche Anweisungen und Variablen während der Kompilierung verwendet wurden. In einigen Fällen sind diese möglicherweise nicht für Ihre Situation geeignet.
Einige wenige Konfigurationsoptionen können Sie mit KommandozeilenOptionen zur Laufzeit statt bei der Kompilierung ändern. Wenn Ihre ausführbare Datei beispielsweise Protokoll-, Sperr- oder Statusdateien an die »falsche« Stelle (etwa nach /usr/local ) schreibt, können Sie dies ändern, ohne Samba neu kompilieren zu müssen. Ein beachtenswerter Punkt ist, dass die Samba-Quellen einen ANSI-CCompiler benötigen. Verwendet Ihre Plattform einen Nicht-ANSI-Compiler, wie zum Beispiel den cc-Compiler bei SunOS Version 4, müssen Sie zuerst einen ANSI-konformen Compiler installieren, etwa gcc.1 Falls Sie sich nicht mit der Installation eines Compilers herumschlagen wollen, können Sie mit einer binären Distribution beginnen. Die größte Flexibilität und Kompatibilität erreichen Sie aber mit der Kompilierung der aktuellen Quelldateien. Eine typische Installation dauert ungefähr eine Stunde und umfasst das Herunterladen und Kompilieren der Quelldateien, das Einrichten der Konfigurationsdateien und das Testen des Servers. Hier ein Überblick über die einzelnen Schritte: 1. 2. 3. 4. 5. 6. 7. 8. 9.
Quell- oder Binärdateien herunterladen. Installationsdokumentation lesen. Eine make-Datei konfigurieren. Den Server und die Hilfsprogramme kompilieren. Die Server-Dateien installieren. Eine Samba-Konfigurationsdatei erstellen. Die Konfigurationsdatei testen. Die Samba-Daemons starten. Die Samba-Daemons testen.
Die Samba-Distribution herunterladen Wenn Sie die neueste Version der Samba-Software herunterladen wollen, begeben Sie sich am besten zu http://www.samba.org. Sie werden auf dieser Seite Links zu diversen identischen Samba-Sites auf der ganzen Welt sehen, und zwar einerseits zu Informations- und andererseits zu DownloadSites. Wählen Sie eine Site in Ihrer Nähe, um eine optimale Übertragungsgeschwindigkeit zu erreichen. Die Standard-Sites von Samba enthalten neben der Dokumentation und Anleitungen Archive von Mailinglisten, Samba-Neuigkeiten und natürlich die Quelldateien sowie die binäre Distribution. Die Sites zum Herunterladen von Samba (auch F T P-Sites genannt) enthalten lediglich die Quelldateien und die binäre Distribution. Solange Sie keine bestimmte ältere Version von Samba oder eine binäre Distribution wünschen, laden Sie die aktuellen Quelldateien von der Ihnen am nächsten gelegenen Site herunter. Diese
aktuelle Distribution hat grundsätzlich den Namen samba-latest.tar.gz
Bei Release 2.2.6 ist diese Datei ungefähr 5 MByte groß. Die Quelldistribution wurde mit tar archiviert und dann mit dem GNUProgramm gzip komprimiert. Zum Entpacken verschieben Sie die Datei in das Verzeichnis, in dem sich das Samba-Quellverzeichnis befinden soll. Wechseln Sie dann mit cd in dieses Verzeichnis und führen Sie folgenden Befehl aus: $ tar xvfz samba-latest.tar.gz
Falls Sie das GNU-Programm tar (das auch das Dekomprimieren erledigt) nicht besitzen, gehen Sie so vor: $ gunzip samba-latest.tar.gz $ tar xvf samba-latest.tar
In diesem Fall müssen Sie eventuell zuerst das GNU-Programm gunzip installieren. Der tar-Befehl gibt während seiner Ausführung eine Liste der installierten Dateien aus.
Lesen Sie die Dokumentation Eigentlich sollte es eine Selbstverständlichkeit sein, zuerst die Dokumentation zu lesen, aber wie oft hat man ein Paket entpackt und anschließend blind getippt: $ configure; make; make install
um anschließend erst einmal eine Tasse Kaffee trinken zu gehen! Tun Sie sich den Gefallen und seien Sie dieses Mal ein bisschen sorgfältiger. Im obersten Verzeichnis, das Sie gerade installiert haben, gibt es eine Datei namens WHATSNEW.txt, die die neuesten Hinweise über diese Ausgabe der Software enthält. Falls Sie eine frühere Version aktualisieren, finden Sie hier wichtige Informationen über behobene Fehler oder Konfigurationsparameter, die hinzugefügt wurden oder nicht mehr unterstützt werden. Sowohl bei der Quell- als auch bei der Binärdistribution finden Sie im
Verzeichnis docs zahlreiche Dokumente in verschiedenen Formaten. Eine Datei ist besonders wichtig: docs/htmldocs/UNIX_INSTALL.html
Dies sind die offiziellen Anweisungen des Samba-Teams zur Installation von Samba auf einem Unix-System, die Sie neben unseren Hinweisen als weitere Hilfe nutzen können. Im Allgemeinen werden Sie die Dateien in den folgenden Verzeichnissen recht nützlich finden: docs/faq Dies sind die FAQ-Dateien (Frequently Asked Questions) von Samba. docs/htmldocs Hier gibt es die allgemeine Dokumentation im HTML-Format. docs/textdocs Hier finden Sie weitere Dokumentationen im einfachen Textformat. docs/manpages Hierum brauchen Sie sich nicht zu kümmern; während der Installation werden diese Dateien ebenfalls installiert, so dass Sie den Befehl man verwenden können, um sie zu lesen. Sie können jedoch mit Hilfe dieses Verzeichnisses ermitteln, welche Manpages zur Verfügung stehen.
Samba konfigurieren Samba konfiguriert sich selbst automatisch vor der Kompilierung. Dies reduziert zwar die Wahrscheinlichkeit rechnerspezifischer Probleme, aber möglicherweise wünschen Sie sich bestimmte Optionen, nachdem Samba installiert wurde. Die Quelldistribution von Samba 2.2 und darüber verfügt zunächst nicht über eine make-Datei. Stattdessen wird eine durch ein GNU-configureSkript erzeugt, das sich im Verzeichnis samba-2.2.x /source/ befindet. Das configure-Skript kümmert sich um die rechnerspezifischen Belange beim Erstellen von Samba.
Bevor Sie das configure-Skript ausführen, müssen Sie
sich unbedingt als root-Benutzer am System anmelden. Ansonsten erhalten Sie eine solche Warnung: configure: warning: running as non-root will disable some tests
Sie wollen jedoch nicht, dass beim Erzeugen der Sambamake-Datei Tests deaktiviert werden; dadurch könnten sich während des Kompilierens oder Ausführens von Samba auf Ihrem System Fehler einschleichen. Während der Ausführung gibt das configure-Skript Meldungen aus, die Ihnen mitteilen, was es tut. Die Ausgabe könnte außerdem Fehlermeldungen enthalten. Um sicherzugehen, dass Sie diese ausgesprochen wichtigen Fehlermeldungen auch sehen, schlagen wir Ihnen vor, die Standardausgabe von configure durch einen Filter zu schicken, um sie abzufangen und zu verhindern, dass sie ungesehen aus dem Bild verschwindet. Eine Methode besteht darin, den Befehl more zu verwenden: # ./configure | more
Eine weitere Methode zeigen wir Ihnen gleich. Sie können zwar configure wie eben gezeigt ohne Optionen ausführen, aber vielleicht wollen Sie ja die Unterstützung weiterer Funktionen erreichen. Dazu geben Sie auf der Kommandozeile Optionen an: # ./configure --with-winbind
Dies konfiguriert die Samba-make-Datei so, dass die winbindAuthentifizierung unterstützt wird. Geben Sie folgenden Befehl ein, um eine vollständige Liste der Optionen zu erhalten: # ./configure --help
Jede Option aktiviert oder deaktiviert verschiedene Merkmale. Sie aktivieren üblicherweise eine Funktion, indem Sie die Option --withfunktion angeben. Die gewünschte Funktion wird dann kompiliert und installiert. Geben Sie dagegen eine Option --without-funktion an, wird die entsprechende Funktion deaktiviert. Eine vollständige Liste der Konfigurationsoptionen finden Sie in Anhang E. Hier an dieser Stelle wollen wir nur drei dieser Optionen herausstellen, da wir auf sie weiter hinten in diesem Buch noch näher eingehen:
--with-msdfs Aktiviert die Unterstützung für Microsoft-Dfs (Distributed file system; verteiltes Dateisystem), wodurch verteilte Netzwerkressourcen in einem einzigen, leicht zu navigierenden Verzeichnisbaum zusammengefasst werden können. Siehe Kapitel 8. --with-smbwrapper Aktiviert die Unterstützung für den SMB-Wrapper. Dadurch wird Programmen, die auf dem Unix-Host laufen, der Zugriff auf freigegebene SMB-Ordner erlaubt, so als würde es sich bei diesen um Unix-Dateisysteme handeln. Wir empfehlen den Einsatz dieser Option. Siehe Kapitel 5. --with-smbmount Aktiviert die Unterstützung für smbmount. Dies erlaubt das Aufsetzen (Mounten) von freigegebenen SMB-Ordnern auf das Unix-Dateisystem. Zum Zeitpunkt der Entstehung dieses Buches wurde diese Funktion nur für Linux unterstützt. Dies wird ebenfalls in Kapitel 5 behandelt. Jede Option ist standardmäßig deaktiviert, und keine dieser Funktionen ist für Samba unentbehrlich. Sie könnten sie jedoch in Ihre Konfiguration aufnehmen (so wie wir es in unserem Beispiel auch tun), um sie zumindest in späteren Kapiteln einmal auszuprobieren. In Tabelle 2-1 sehen Sie darüber hinaus einige weitere Parameter, die Sie mit dem configure-Skript angeben können, falls Sie Teile der SambaDistribution an anderen Stellen ablegen wollen, beispielsweise um mehrere Festplatten oder Partitionen zu nutzen. Beachten Sie, dass die Standardwerte sich manchmal auf ein Präfix beziehen, das weiter vorn in der Tabelle angegeben ist.
Tabelle 2-1 Zusätzliche configure-Optionen Option
Bedeutung
Standardwert
--prefix=verzeichnis
Installiert architekturunabhängige Dateien im angegebenen Basisverzeichnis.
/usr/local/samba
--eprefix=verzeichnis
Installiert architekturbezogene Dateien im angegebenen Basisverzeichnis.
/usr/local/samba
--bindir=verzeichnis
Installiert vom Benutzer ausführbare Dateien im angegebenen Verzeichnis.
eprefix/bin
--sbindir=verzeichnis
Installiert vom Administrator ausführbare Dateien im angegebenen Verzeichnis.
Installiert ausführbare --libexecdir=verzeichnis Programme im angegebenen Verzeichnis.
eprefix/bin
eprefix/libexec
--datadir=verzeichnis
Installiert schreibgeschützte architekturabhängige Daten im angegebenen Verzeichnis.
prefix/share
--libdir=verzeichnis
Installiert Programmbibliotheken im angegebenen Verzeichnis.
eprefix/lib
Installiert Paket-Include--includedir=verzeichnis Dateien im angegebenen Verzeichnis.
prefix/include
--infodir=verzeichnis
Installiert zusätzliche Informationsdateien im angegebenen Verzeichnis.
prefix/info
--mandir=verzeichnis
Installiert Manpages im angegebenen Verzeichnis.
prefix/man
Hier sehen Sie eine Beispielausführung des configure-Skripts, das eine Samba 2.2.6-make-Datei für die Linux-Plattform erzeugt. Beachten Sie, dass Sie das Skript im Verzeichnis source starten müssen und dass wir Ihnen eine andere Möglichkeit zeigen, die Ausgabe des Skripts aufzuzeichnen: $ cd samba-2.2.6/source/ $ su Password: # ./configure --with-smbwrapper --with-smbmount \
--with-msdfs --with-syslog --with-utmp 2>&1 | tee config.my.log loading cache ./config.cache checking for gcc... (cached) gcc
checking whether the C compiler (gcc -O ) works... yes checking whether the C compiler (gcc -O ) is a crosscompiler... no checking whether we are using GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes checking for a BSD-compatible install... (cached) /usr/bin/ install -c
(Inhalt ausgelassen)
checking configure summary configure OK creating ./config.status creating include/stamp-h creating Makefile creating include/config.h
Im Allgemeinen sind alle Nachrichten von configure, die nicht mit checking oder creating beginnen, als Fehler anzusehen. Es ist oft hilfreich, die Ausgabe des Konfigurationsskripts in eine Datei umzuleiten, so dass Sie schnell nach Fehlern suchen können (wir haben das oben mit dem Befehl tee getan). Wenn während der Konfiguration ein Fehler aufgetreten ist, finden Sie ausführliche Meldungen in der Datei config.log, die das configureSkript im lokalen Verzeichnis anlegt, sowie in der Datei config.my.log, die wir durch Umleiten der Ausgabe über den Befehl tee erzeugt haben. Diese Dateien sind sich in Name und Inhalt sehr ähnlich, Sie sollten jedoch beide auf Fehlermeldungen prüfen, bevor Sie weitermachen! Wenn die Konfiguration funktioniert, erscheint die Ausgabe checking configure summary, gefolgt von der Meldung configure OK und vier oder fünf Meldungen für erstellte Dateien. So weit, so gut.
Kompilierung und Installation von Samba Sie sollten jetzt in der Lage sein, die ausführbaren Dateien von Samba zu
erstellen. Die Kompilierung ist ebenfalls einfach: Gehen Sie in das sourceVerzeichnis und geben Sie make auf der Kommandozeile ein. Das Werkzeug make wird erläuternde Nachrichten und Erfolgsmeldungen ausgeben, beginnend mit: Using FLAGS = -O -Iinclude ...
Diese Zusammenstellung enthält Kompilierungen sowohl für smbd als auch für nmbd und endet mit einem Verknüpfungsbefehl für bin/nmblookup. Als Beispiel folgt eine Ausgabe von make für Samba Version 2.2.6 auf einem Linux-Server: # make 2>&1 | tee make.log Using FLAGS = -O -Iinclude -I./include -I./ubiqx -I./ smbwrapper -D_LARGEFILE64 _SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE usr/local/samba/va
-DLOGFILEBASE="/
r" -DCONFIGFILE="/usr/local/samba/lib/smb.conf" -DLMHOSTSFILE="/ usr/local/samba/ lib/lmhosts" -DSWATDIR="/usr/local/samba/swat" -DSBINDIR="/ usr/local/samba/bin " -DLOCKDIR="/usr/local/samba/var/locks" -DCODEPAGEDIR="/usr/ local/samba/lib/cod epages" -DDRIVERFILE="/usr/local/samba/lib/printers.def" DBINDIR="/usr/local/sa mba/bin" -DHAVE_INCLUDES_H -DPASSWD_PROGRAM="/bin/passwd" DSMB_PASSWD_FILE="/u sr/local/samba/private/smbpasswd" -DTDB_PASSWD_FILE="/usr/local/ samba/private/sm bpasswd.tdb" Using FLAGS32 = -O -Iinclude -I./include -I./ubiqx -I./ smbwrapper -D_LARGEFILE 64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE usr/local/samba/
-DLOGFILEBASE="/
var" -DCONFIGFILE="/usr/local/samba/lib/smb.conf" DLMHOSTSFILE="/usr/local/samb
a/lib/lmhosts" -DSWATDIR="/usr/local/samba/swat" -DSBINDIR="/ usr/local/samba/b in" -DLOCKDIR="/usr/local/samba/var/locks" -DCODEPAGEDIR="/usr/ local/samba/lib/c odepages" -DDRIVERFILE="/usr/local/samba/lib/printers.def" DBINDIR="/usr/local/ samba/bin" -DHAVE_INCLUDES_H -DPASSWD_PROGRAM="/bin/passwd" DSMB_PASSWD_FILE=" /usr/local/samba/private/smbpasswd" -DTDB_PASSWD_FILE="/usr/ local/samba/private/ smbpasswd.tdb" Using LIBS = -ldl -lnsl -lpam Compiling smbd/server.c Compiling smbd/files.c Compiling smbd/chgpasswd.c Compiling smbd/connection.c Compiling smbd/utmp.c Compiling smbd/session.c Compiling smbd/dfree.c Compiling smbd/dir.c
(Inhalt ausgelassen)
Compiling rpc_server/srv_srvsvc.c Compiling rpc_server/srv_srvsvc_nt.c Compiling rpc_server/srv_util.c Compiling rpc_server/srv_wkssvc.c Compiling rpc_server/srv_wkssvc_nt.c
Compiling rpc_server/srv_pipe.c Compiling rpc_server/srv_dfs.c Compiling rpc_server/srv_dfs_nt.c Compiling rpc_server/srv_spoolss.c Compiling rpc_server/srv_spoolss_nt.c Compiling lib/util_getent.c Compiling rpc_parse/parse_lsa.c Compiling rpc_parse/parse_net.c Compiling rpc_parse/parsen/smbmount Compiling client/smbmnt.c Linking bin/smbmnt Compiling client/smbumount.c Linking bin/smbumount Compiling utils/nmblookup.c Linking bin/nmblookup
Falls Sie während der Kompilierung auf Probleme stoßen, suchen Sie zuerst in der Samba-Dokumentation nach einer einfachen Lösung. Sie können außerdem die Samba-Mailinglisten durchsuchen und Nachrichten dorthin schicken. Mehr dazu finden Sie am Ende von Kapitel 12 und auf der SambaHomepage. Die meisten Kompilierungsprobleme sind systembezogen und fast immer leicht zu beheben. Sie haben nun die Dateien kompiliert und können sie in die angegebenen Verzeichnisse installieren. Verwenden Sie dazu den Befehl: # make install
Wenn Sie Samba aktualisieren, werden Ihre alten Samba-Dateien mit der Erweiterung .old gesichert, so dass Sie mit dem Befehl make revert zur alten Version zurückkehren können. Nach dem Ausführen von make install sollten Sie die .old-Dateien (sofern sie existieren) an einen anderen Ort verschieben oder umbenennen. Ansonsten würden bei der nächsten Samba-Installation die bisherigen .old-Dateien ohne Warnung
überschrieben, und die frühere Version ginge verloren. Wenn Sie Samba mit den Standardpfaden für Dateien konfiguriert haben, werden die neuen Dateien in den in Tabelle 2-2 angegebenen Verzeichnissen installiert. Denken Sie daran, die Installation von einem Benutzerzugang aus auszuführen, der über Schreibberechtigungen auf diesen Zielverzeichnissen verfügt. Üblicherweise ist dies beim root-Zugang der Fall.
Tabelle 2-2 Samba-Installationsverzeichnisse Verzeichnis
Beschreibung
/usr/local/samba
Basisverzeichnis
/usr/local/samba/bin
Binaries
/usr/local/samba/lib
smb.conf, lmhosts, Konfigurationsdateien usw.
/usr/local/samba/man
Samba-Dokumentation
/usr/local/samba/private verschlüsselte Kennwortdatei für Samba /usr/local/samba/swat
SWAT-Dateien
/usr/local/samba/var
Samba-Protokolldateien, Sperrdateien, Suchlistenangaben, Dateien für gemeinsam genutzten Speicher, Dateien für die ProzessIDs
Im weiteren Verlauf dieses Buches beziehen wir uns gelegentlich auf den Ort des Basisverzeichnisses als /usr/local/samba. In den meisten Konfigurationen handelt es sich dabei um das Basisverzeichnis des installierten Samba-Pakets; es kann jedoch von System zu System variieren.
Passen Sie auf, falls Sie /usr zu einer schreibgeschützten Partition gemacht haben. Sie werden Protokolle, Sperrdateien und Kennwortdateien an eine andere Stelle schreiben wollen. Dies ist die Installation, die wir auf unserem Computer durchgeführt haben.
Sie können sehen, dass wir /usr/local/samba als Basisverzeichnis für die Distribution gewählt haben: # make install 2>&1 | tee make-install.log Using FLAGS = -O -Iinclude -I./include -I./ubiqx -I./ smbwrapper -D_LARGEFILE64 _SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE usr/local/samba/va
-DLOGFILEBASE="/
r" -DCONFIGFILE="/usr/local/samba/lib/smb.conf"
(Inhalt ausgelassen)
The binaries are installed. You can restore the old binaries (if there were any) using the command "make revert". You can uninstall the binaries using the command "make uninstallbin" or "make uninstall" to uninstall binaries, manpages and shell scripts.
(Inhalt ausgelassen)
====================================================================== The SWAT files have been installed. Remember to read the swat/ README for information on enabling and using SWAT. ======================================================================
Wenn die letzte Meldung SWAT eintrifft, haben Sie alle Dateien erfolgreich installiert. Herzlichen Glückwunsch! Sie haben nun Samba auf Ihrem System!
Ihre Installation aktualisieren Irgendwann wird eine neue Version von Samba veröffentlicht, und Sie werden aktualisieren wollen. Das ist einfach. Wiederholen Sie einfach die Schritte, die Sie für die Installation Ihrer aktuellen Version durchgeführt haben. Laden Sie die Quelldistribution von der Samba-Website herunter und installieren Sie sie, führen Sie anschließend wie gehabt die Befehle ./ configure, make und make install aus. Falls Sie vergessen haben, welche Optionen Sie mit dem configure-Skript benutzt haben, schauen Sie in die Datei source/config.status der Quelldistribution Ihrer vorherigen Version. Die ersten Zeilen dieser Datei zeigen die Optionen, die beim letzten Aufruf von configure zum Einsatz kamen. Wenn Sie den Befehl make install ausführen, um Ihre neue Version zu installieren, werden die Dateien der vorherigen Version durch die neuen ersetzt. Danach müssen Sie die Samba-Daemons neu starten, um Ihre neue Version zum Laufen zu bringen. Im Abschnitt »Starten der SambaDaemons« weiter hinten in diesem Kapitel erhalten Sie Anweisungen darüber, wie Sie vorzugehen haben.
Samba rekonfigurieren Falls Sie Samba bereits kompiliert haben und nun den gleichen Quellcode mit anderen configure-Optionen neu kompilieren wollen, müssen Sie die folgenden drei Befehle im source-Verzeichnis ausführen, bevor Sie das configure-Skript erneut starten können: # autoconf # make clean # rm config.cache
Dies stellt sicher, dass Sie aus einem sauberen Zustand heraus beginnen und Ihr vorheriger configure-Befehl keine Daten hinterlässt, die Ihre Neufassung beeinträchtigen. Jetzt können Sie ./configure und danach make und make install ausführen.
Die Suchpfade einstellen Vermutlich wollen Sie die Befehle, die in der Samba-Distribution enthalten sind, ausführen, ohne ihre vollständigen Verzeichnispfade angeben zu müssen. Damit das funktioniert, muss das Verzeichnis, in dem sich die ausführbaren Samba-Dateien befinden - standardmäßig handelt es sich dabei um /usr/local/samba/bin - in die Umgebungsvariable PATH Ihrer Shell aufgenommen werden. Diese Umgebungsvariable wird normalerweise in einer oder mehreren Startdateien der Shell gesetzt. Im Fall der bash sind
dies /etc/profile (systemweit) sowie .bash_profile und .bashrc im HomeVerzeichnis der einzelnen Benutzer. Um die Manpages von Samba mit Hilfe des Befehls man lesen zu können, muss das Verzeichnis, in dem sich die Manpages befinden - standardmäßig / usr/local/samba/man - in der MANPATH-Umgebungsvariablen stehen. Bei Red Hat Linux wird dies erreicht, indem man die folgenden beiden Zeilen in /etc/man.config aufnimmt: MANPATH
/usr/local/samba/man
MANPATH_MAP local/samba/man
/usr/local/samba/bin
/usr/
SWAT aktivieren Das Samba Web Administration Tool (SWAT) wird als Daemon unter inetd oder xinetd ausgeführt und stellt einen formularbasierten Editor in Ihrem Webbrowser zur Verfügung, mit dem Sie die Samba-Konfigurationsdatei erzeugen und verändern können. Damit SWAT funktioniert, müssen Einträge dafür in die Konfigurationsdateien /etc/services und /etc/inetd.conf (oder /etc/xinetd.d/swat ) aufgenommen werden. Gehen Sie folgendermaßen vor, um die Einträge hinzuzufügen: 1. Prüfen Sie die Datei /etc/services; falls sie die folgende Zeile nicht enthält, fügen Sie diese am Ende der Datei ein: swat
901/tcp
2. Jetzt zu inetd oder xinetd. Dabei handelt es sich um »Internet-SuperDaemons«, die das bedarfsweise Starten von Daemons erledigen, so dass diese nicht untätig im Speicher herumliegen und Systemressourcen verbrauchen. Die meisten Systeme verwenden inetd, bei einigen Versionen von Unix wird aber auch xinetd eingesetzt. Dies gilt vor allem für Red Hat Linux (Version 7 und neuer), das wir in unseren Beispielen verwenden. Sie können mit Hilfe des Befehls ps feststellen, welchen der beiden Daemons Ihr System ausführt. Fügen Sie für inetd eine Zeile in die Datei /etc/inetd.conf ein. (In der Manpage der inetd.conf finden Sie das genaue Format der Datei inetd.conf, falls sich dies vom folgenden Beispiel unterscheidet.) Vergessen Sie nicht, den Pfad zum SWAT-Binary zu ändern, falls Sie dies an einer anderen Stelle als im voreingestellten Verzeichnis /usr/local/samba installiert haben: swat swat
stream
tcp
nowait
root
/usr/local/samba/bin/swat
Zwingen Sie nun inetd, seine Konfigurationsdatei neu einzulesen, indem Sie ein SIGHUP-(Hangup-)Signal senden: # /bin/kill -HUP -a inetd
Beachten Sie, dass wir eine Version des kill-Befehls verwenden, die die Option -a unterstützt, damit wir den Prozess mit seinem Namen angeben können. Bei FreeBSD und Linux können Sie den Befehl killall2 einsetzen: # killall -HUP inetd
Wenn Sie Linux oder FreeBSD benutzen und Ihre Version von kill keine Option -a besitzt, müssen Sie den Befehl ps einsetzen, um die Prozess-ID zu ermitteln und diese an kill zu übergeben: # ps ax | grep inetd 780 ?
0:00 inetd
S
0:00 grep
1981 pts/4 inetd
S
# kill -HUP 780
Benutzt Ihr System xinetd, fügen Sie eine Datei namens swat in Ihr /etc/ xinetd.d-Verzeichnis ein, die Folgendes enthält: # description: swat is the Samba Web Administration Tool, which #
allows an administrator to configure Samba using a web
#
browser interface, with the URL http://localhost:901
service swat. { socket_type
= stream
wait
= no
protocol
= tcp
only_from
= localhost
user
= root
log_on_failure
+= USERID
server
= /usr/local/samba/bin/swat
port
= 901
disable
= no
}
Anschließend muss ein Signal3 an xinetd gesendet werden, damit dieser seine Konfigurationsdateien erneut einliest: # /bin/kill -HUP -a xinetd
Und das war es schon für die Installation. Bevor Sie Samba starten können, müssen Sie jedoch eine Konfigurationsdatei dafür erstellen.
Eine grundlegende Samba-Konfigurationsdatei Der Schlüssel zur Konfiguration von Samba ist die Konfigurationsdatei smb. conf. Diese Datei kann sehr einfach oder auch außerordentlich kompliziert sein, und im Rest dieses Buches geht es darum, Sie mit dieser Datei vertraut zu machen. Wir zeigen Ihnen erst einmal, wie Sie einen einzigen Dateidienst einrichten, mit dem Sie die Samba-Daemons starten und sehen können, dass alles nach Plan läuft. In späteren Kapiteln werden Sie lernen, wie Sie Samba für kompliziertere und interessantere Aufgaben konfigurieren. Der Installationsvorgang erstellt nicht automatisch eine smb.confKonfigurationsdatei, auch wenn die Samba-Distribution mehrere Muster dieser Datei enthält. Um die Server-Software zu testen, verwenden Sie aber die folgende Datei, die Sie mit einem Texteditor erzeugen können. Sie sollte smb.conf heißen und im Verzeichnis /usr/local/samba/lib liegen:4 [global] workgroup = METRAN [test] comment = Bitte nur zu Testzwecken verwenden path = /usr/local/samba/tmp
read only = no guest ok = yes
Diese kurze Konfigurationsdatei weist den Samba-Server an, das Verzeichnis /usr/local/ samba/tmp auf dem Server als SMB-Freigabe namens test anzubieten. Der Server wird außerdem zu einem Teil der Arbeitsgruppe METRAN, in der sich auch jeder Client befinden muss. Falls Sie bereits einen Namen für Ihre Arbeitsgruppe gewählt haben, verwenden Sie im vorangegangenen Beispiel diesen Namen an Stelle von METRAN. Wenn Sie Ihr Symba-System an ein existierendes Netzwerk anschließen und den Arbeitsgruppennamen wissen müssen, können Sie einen anderen Systemadministrator fragen oder auf einem Windows-System in der Arbeitsgruppe folgende Schritte ausführen: ●
●
●
Windows 95/98/Me/NT: Öffnen Sie die Systemsteuerung und doppelklicken Sie hier auf das Netzwerk-Symbol. Klicken Sie auf die Registerkarte Identifikation und suchen Sie hier nach der Bezeichnung »Arbeitsgruppe:«. Windows 2000: Öffnen Sie die Systemsteuerung und doppelklicken Sie auf das System-Symbol. Klicken Sie auf die Registerkarte Netzwerkidentifikation. Der Name der Arbeitsgruppe steht unter dem Computernamen. Windows XP: Öffnen Sie in der klassischen Ansicht die Systemsteuerung. Doppelklicken Sie hier auf das System-Symbol. Klicken Sie anschließend auf das Register Computername.
Wir werden die Freigabe [test] im nächsten Kapitel verwenden, um die Windows-Clients einzurichten. Jetzt können Sie die Konfiguration erst einmal beenden, indem Sie auf Ihrem Unix-Server folgende Befehle als rootBenutzer ausführen: # mkdir /usr/local/samba/tmp # chmod 777 /usr/local/samba/tmp
Sie könnten auch eine oder zwei Dateien in das Verzeichnis /usr/local/ samba/tmp kopieren, damit Sie etwas haben, anhand dessen Sie überprüfen können, dass alles funktioniert, wenn Ihre Windows-Systeme fertig konfiguriert sind. Wir müssen noch darauf hinweisen, dass diese Konfiguration aus Sicht der Systemsicherheit die schlechteste aller möglichen ist. Im Moment wollen wir Samba jedoch nur testen, deshalb lassen wir die Sicherheitsaspekte noch außer Acht. Außerdem kann es Schwierigkeiten mit verschlüsselten Kennwörtern bei Windows-Clients geben; diese Konfiguration wird hier am wenigsten Probleme bereiten.
Verschlüsselte Kennwörter Wenn Ihre Windows-Clients Windows 98 oder Windows NT 4 Service Pack 3 oder höher (einschließlich Windows 2000 und Windows XP) verwenden und Sie eine Samba-Version vor 3.0 einsetzen, müssen Sie folgenden Eintrag in den [global]-Abschnitt der Samba-Konfigurationsdatei aufnehmen: [global] encrypt passwords = yes
Außerdem müssen Sie das Programm smbpasswd (üblicherweise im Verzeichnis /usr/local/samba/bin/ ) verwenden, um die Kombinationen aus Benutzername und Kennwort für die einzelnen Benutzer von Samba in die Datenbank mit verschlüsselten Kennwörtern einzugeben. Wenn Sie zum Beispiel wollen, dass der Unix-Benutzer steve Freigaben von einem ClientSystem nutzen kann, müssten Sie folgenden Befehl eingeben: # smbpasswd -a steve New SMB password: Retype new SMB password: Added user steve.
Wird der erste Benutzer eingefügt, gibt das Programm eine Meldung aus, die besagt, dass die Datenbank der verschlüsselten Kennwörter nicht existiert. Keine Angst, die Datenbank wird dann erzeugt. Stellen Sie sicher, dass die Benutzername-Kennwortkombinationen, die Sie in die Datenbank eingeben, mit denjenigen auf der Windows-Client-Seite übereinstimmen. Sie müssen smbpasswd für jeden Client-Benutzer ausführen. Bei Samba 3.0 sind die Kennwörter standardmäßig verschlüsselt, der Parameter encrypt passwords = yes in der Konfigurationsdatei ist daher optional. Sie müssen jedoch trotzdem den Befehl smbpasswd ausführen, um Benutzer in die Datei mit den verschlüsselten Kennwörtern aufzunehmen.
SWAT verwenden Das Anlegen einer Konfigurationsdatei ist mit SWAT noch einfacher als das Schreiben der Datei von Hand. Sie starten SWAT, indem Sie mit Ihrem Webbrowser eine Verbindung zu http://localhost:901 herstellen und sich als root mit dem root-Passwort anmelden (siehe Abbildung 2-1).
Abbildung 2-1 SWAT-Anmeldung
Abbildung 2-2 Die Seite »Global Variables« des SWAT
Nach dem Anmelden klicken Sie auf den Button GLOBALS im oberen Bereich des Bildschirms. Sie sollten dann die Seite Global Variables sehen,
die in Abbildung 2-2 gezeigt wird. Beachten Sie, dass SWAT in diesem Beispiel den Namen der Arbeitsgruppe der von Ihnen erzeugten smb.conf-Datei entnommen hat. (Hat es das nicht getan, müssen Sie zurückgehen und diesen Schritt korrekt ausführen.) Stellen Sie sicher, dass das security-Feld auf USER gesetzt ist. Falls Sie Samba 2.2 ausführen und Ihre Windows-Clients wenigstens mit Windows 98 oder Windows NT 4 SP 3 oder neueren Versionen laufen, suchen Sie im Abschnitt Security Options nach encrypt passwords. Setzen Sie diese Option auf Yes. Die einzige weitere Option aus dem Menü, die Sie noch ändern müssen, ist diejenige, die angibt, welches System im lokalen Netzwerk die NetBIOSAdressen auflöst; dieses System wird als WINS-Server bezeichnet. Setzen Sie ganz unten auf der Seite das Feld wins support auf Yes, es sei denn, Sie haben bereits einen WINS-Server in Ihrem Netzwerk. Ist dies der Fall, schreiben Sie stattdessen die IP-Adresse des WINS-Servers in das wins server-Feld. Kehren Sie anschließend an den Anfang der Seite zurück und drücken Sie den Button Commit Changes, um die Änderungen in die Datei smb.conf zu schreiben. Abbildung 2-3 Die »Share Parameters«-Seite von SWAT
Klicken Sie als Nächstes auf das Symbol SHARES. Sie sollten eine Seite sehen, die Abbildung 2-3 ähnelt. Wählen Sie test (rechts neben dem Button Choose Share) und klicken Sie auf den Button Choose Share. Die Seite Share Parameters sollte daraufhin erscheinen, wie in Abbildung 2-3 dargestellt. Die Felder comment und path sind mit den entsprechenden Angaben aus Ihrer smb.conf-Datei ausgefüllt. Falls Sie auf der GLOBALS-Seite angegeben haben, dass Sie verschlüsselte Kennwörter benutzen wollen, klicken Sie auf den Button PASSWORD. Im oberen Bereich des Fensters sehen Sie den Abschnitt Server Password Management. Geben Sie Ihren Unix-Benutzernamen und das Kennwort in die leeren Felder ein und klicken Sie auf den Button Add New User. Dies funktioniert genauso wie das Programm smbpasswd und erzeugt einen Eintrag in der Datei /usr/local/samba/private/smbpasswd, der Ihnen die Authentifizierung von einem Windows-Client aus erlaubt. Klicken Sie nun auf den Button VIEW. SWAT zeigt Ihnen folgende smb.confDatei: # Samba config file created using SWAT # from localhost (127.0.0.1) # Date: 2002/09/05 04:56:43
# Global parameters workgroup = METRAN encrypt passwords = Yes wins support = Yes
[test] comment = Bitte nur zu Testzwecken verwenden! path = /usr/local/samba/tmp read only = No
Wenn Sie diese Konfigurationsdatei angelegt haben, können Sie den nächsten Schritt überspringen, da die von SWAT erstellte Ausgabe
garantiert keine Syntaxfehler enthält.
Oplocks deaktivieren Die von Ihnen gerade erstellte smb.conf-Datei ist sicherlich gut genug für das anfängliche Einrichten und Testen. Sie können sie als Ausgangspunkt für die Entwicklung der Konfiguration Ihres richtigen Samba-Servers benutzen. Bevor Sie jedoch dorthin gelangen, wollen wir Sie auf eine Sache aufmerksam machen. Falls Sie zu der Sorte von Administrator gehören, die sich stark um die Integrität der Daten bemüht, sollten Sie vor dem Weiterarbeiten folgende Änderung in Ihre smb.conf-Datei aufnehmen: [global] oplocks = no
Benutzen Sie einen Texteditor, um die Zeile oplocks = no in den Abschnitt [global] Ihrer smb.conf-Datei zu schreiben. Bei diesem Beispiel - wie auch bei anderen Beispielen in diesem Buch - müssen Sie die Zeile [global] nicht noch einmal in Ihre Konfigurationsdatei aufnehmen. Wir wollen damit lediglich verdeutlichen, in welchen Abschnitt der Parameter gehört. Der Parameter oplocks = no deaktiviert opportunistische Sperren von Clients. Die Leistungsfähigkeit wird dadurch zwar deutlich verringert, andererseits verhindern Sie damit, dass allzu lässige Windows-Clients und/ oder unzuverlässige Netzwerk-Hardware Dateien auf dem Samba-Server beschädigen. Wir werden opportunistische Sperren (Oplocks) im Abschnitt »Sperren und Oplocks« in Kapitel 8 genauer behandeln und empfehlen Ihnen, die dahinter stehenden Ideen zu verstehen, bevor Sie einen Produktions-Server mit Samba aufsetzen, der Datenbankdateien oder andere wertvolle Daten vorhält.
Die Konfigurationsdatei testen Wenn Sie Ihre Konfigurationsdatei nicht mit SWAT erstellt haben, sollten Sie sie auf Syntaxfehler hin überprüfen und diese beseitigen. Es mag albern klingen, eine nur acht Zeilen große Konfigurationsdatei mit einem Programm zu prüfen, aber es ist eine gute Übung für die »richtigen« Dateien, die wir später schreiben werden. Das Prüfprogramm testparm untersucht eine smb.conf-Datei auf Syntaxfehler hin und meldet diese zusammen mit den Diensten, die auf Ihrem System aktiviert sind. Wir zeigen Ihnen dies an einem Beispiel. Sie
werden beobachten, dass wir in aller Eile den Begriff workgroup als workgrp geschrieben haben (die Ausgabe des Prüfprogramms ist häufig lang, so dass wir empfehlen, sie mit dem Befehl tee in einer Datei aufzuzeichnen): Load smb config files from smb.conf Unknown parameter encountered: "workgrp" Ignoring unknown parameter "workgrp" Processing section "[test]" Loaded services file OK. Press Enter to see a dump of your service definitions # Global parameters [global] workgroup = WORKGROUP netbios name = netbios aliases = server string = Samba 2.2.6 interfaces = bind interfaces only = No
(Inhalt ausgelassen)
[test] comment = Bitte nur zu Testzwecken verwenden! path = /usr/local/samba/tmp read only = No
Die interessanten Teile sind der Anfang und das Ende. Im oberen Teil der Ausgabe sehen Sie Hinweise für alle möglichen Syntaxfehler in der Konfigurationsdatei, und unten führt die Ausgabe die Dienste auf, die der
Server anzubieten gedenkt. Ein Hinweis: Stellen Sie sicher, dass Sie und der Server die gleichen Erwartungen haben.
Firewall-Konfiguration Wie alle anderen Dienste, die über TCP/IP laufen, können auch die SMBNetzwerkdienste, die Samba anbietet, über das Internet erreicht werden, es sei denn, die Firewall Ihrer Einrichtung ist richtig konfiguriert. Folgende Ports werden von Samba für den SMB-Netzwerkbetrieb und SWAT verwendet: Port 137 Wird für die NetBIOS-Netzwerksuche benutzt. Port 138 Wird für den NetBIOS-Namensdienst benutzt. Port 139 Wird für die Datei- und Druckerfreigabe und andere Operationen benutzt. Port 445 Wird von Windows 2000/XP benutzt, wenn NetBIOS over TCP/IP deaktiviert ist. Port 901 Wird von SWAT benutzt. Die Internet-Firewall Ihrer Organisation sollte wenigstens alle Ports in der obigen Liste für den Verkehr in beiden Richtungen sperren. Glauben Sie nicht, dass es ausreicht, nur eingehende Verbindungen zu unterbinden; es gibt Cracks, die Windows-Clients so austricksen, dass diese über das SMBProtokoll Daten aus dem lokalen Netzwerk in das Internet schicken, selbst wenn ein lokales Netzwerk private IP-Adressen verwendet, die von Routern nicht weitergeleitet werden. Falls Sie SMB-Verkehr über das Internet an entfernte Standorte schicken wollen, ist es am besten, ein virtuelles privates Netzwerk (VPN) einzusetzen. Nähere Informationen zu diesem Thema finden Sie im O'Reilly-Buch Virtual Private Networks. Darüber hinaus wollen Sie möglicherweise auf dem Samba-Host eine Firewall einrichten, um dafür zu sorgen, dass die SMB-Pakete im Netzwerk Ihrer Einrichtung nicht weiter reisen als nötig. Beispielsweise kann Port 901 für entfernte Zugriffe gesperrt werden, so dass SWAT nur auf dem SambaHost ausgeführt werden kann. Falls Sie mit Samba nur einen Bruchteil der Client-Systeme in Ihrer Einrichtung bedienen, sollten Sie es in Erwägung ziehen, SMB-Pakete (d.h. Pakete an den Ports 137-139 und 445) nur von bzw. zu diesen Clients zu erlauben. Weitere Informationen über das Konfigurieren von Firewalls finden Sie im Buch Einrichten von Internet Firewalls von O'Reilly.
Starten der Samba-Daemons
Es gibt zwei Samba-Prozesse, smbd und nmbd, die ausgeführt werden müssen, damit Samba korrekt läuft. Für das Starten gibt es drei Möglichkeiten: ● ● ●
manuell automatisch, während des Bootens des Systems über inetd oder xinetd
Die Daemons manuell starten Wenn Sie es eilig haben, können Sie die Samba-Daemons manuell starten. Geben Sie als root einfach die folgenden Befehle ein: # /usr/local/samba/bin/smbd -D # /usr/local/samba/bin/nmbd -D
Samba läuft nun auf Ihrem System und wartet auf Verbindungen. Denken Sie jedoch daran, dass die Daemons erneut manuell gestartet werden müssen, wenn sie sich aus irgendeinem Grund (z.B. bei einem Neustart des Systems) beendet haben.
Automatischer Start Damit die Samba-Daemons beim Hochfahren des Systems automatisch gestartet werden, müssen Sie die Befehle, die im vorherigen Abschnitt aufgeführt wurden, in Ihre Unix-Startskripten aufnehmen. Die genaue Methode hängt von der von Ihnen verwendeten Unix-Variante ab. BSD-Unix Bei einem BSD-Unix müssen Sie folgende Zeilen in die Datei rc.local schreiben. Diese Datei finden Sie üblicherweise in den Verzeichnissen /etc oder /etc/rc.d: if [ -x /usr/local/samba/bin/smbd]; then echo "Starting smbd..." /usr/local/samba/bin/smbd -D echo "Starting nmbd..." /usr/local/samba/bin/nmbd -D fi
Dieser Code ist sehr einfach: Er prüft, ob die Datei smbd existiert und Ausführungsrechte besitzt. Ist dies der Fall, werden beide Samba-Daemons beim Hochfahren des Systems gestartet. System V-Unix Bei System V kann es etwas komplizierter werden. Je nach Ihrer UnixVersion reicht es möglicherweise, an einer rc.local-Datei eine einfache Änderung wie bei BSD-Unix vorzunehmen. Üblicherweise verwendet System V jedoch Verzeichnisse mit Verweisen auf Skripten, die die Daemons im System steuern. Daher müssen Sie das System darüber unterrichten, wie es die Samba-Daemons starten und stoppen soll. Der erste Schritt dazu besteht darin, den Inhalt des Verzeichnisses /etc/rc.d/init. d zu modifizieren, indem etwas Ähnliches wie das folgende Shell-Skript hinzugefügt wird. Wir geben dem Skript in diesem Beispiel einmal den Namen smb : #!/bin/sh
# Prüft, ob die Samba-Konfigurationsdatei existiert. [ -f /usr/local/samba/lib/smb.conf ] || exit 0
start(
)
{ echo -n "SMB-Dienste werden gestartet: " /usr/local/samba/bin/smbd -D ERROR=$? echo
echo -n "NMB-Dienste werden gestartet: " /usr/local/samba/bin/nmbd -D ERROR2=$? if [ $ERROR2 -ne 0 ]
then ERROR=1 fi echo
return $ERROR }
stop(
)
{ echo -n "SMB-Dienste werden beendet: " /bin/kill -TERM -a smbd ERROR=$? echo
echo -n "NMB-Dienste werden beendet: " /bin/kill -TERM -a nmbd ERROR2=$? if [ $ERROR2 -ne 0 ] then ERROR=1 fi echo
return $ERROR
}
case "$1" in start) start ;; stop) stop ;; *) echo "Verwendung: $0 {start|stop}" exit 1 esac
exit $?
Dank dieses Skripts können Sie smbd und nmbd starten und stoppen: # /etc/rc.d/init.d/smb start SMB-Dienste werden gestartet: NMB-Dienste werden gestartet: # ps ax | grep mbd 1268 ?
S
0:00 /usr/local/samba/bin/smbd -D
1270 ?
S
0:00 /usr/local/samba/bin/nmbd -D
1465 pts/2
S
0:00 grep mbd
# /etc/rc.d/init.d/smb stop SMB-Dienste werden beendet: NMB-Dienste werden beendet:
Falls Sie Probleme damit haben, ein Startskript für Ihr System zu schreiben, schauen Sie einmal, ob Sie eine Paket-Version von Samba finden (von Ihrem Unix-Hersteller oder der Samba-FTP-Site). Möglicherweise finden Sie dort ein Startskript, mit dem Sie erst einmal beginnen können. Normalerweise ändern sich diese Skripten von Release zu Release nicht sehr (wenn überhaupt), es sollte daher kein Problem darstellen, ein Skript einer älteren Samba-Version zu verwenden. Eine andere Möglichkeit besteht darin, einen Blick in das packaging-Verzeichnis der SambaQuelldistribution zu werfen. In diesem Verzeichnis gibt es Unterverzeichnisse für viele Unix-Versionen mit entsprechenden Startskripten für diese Versionen. Und selbst wenn Ihre Version nicht vertreten ist, gibt es wahrscheinlich ein Startskript einer ähnlichen Version, das Sie als Ausgangspunkt nehmen können. Abschließend müssen wir symbolische Links in die smb-Skripten in den /etc/ rc.d/rcX.d-Verzeichnissen aufnehmen: # ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc3.d/S35smb # ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc5.d/S35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc0.d/K35smb # ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc1.d/K35smb # ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc2.d/K35smb # ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc4.d/K35smb # ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc6.d/K35smb
Die ersten beiden Befehle, deren Link-Namen mit einem »S« beginnen, veranlassen Samba zu starten, wenn die Runlevel 3 oder 5 erreicht werden. Das sind Runlevel, in denen normalerweise NFS (Network File Sharing) aktiviert ist. Die zweite Gruppe von Befehlen, deren Link-Namen mit »K« beginnen, veranlassen Samba, sich zu beenden, wenn eines der anderen Runlevel (0, 1, 2, 4 oder 6) erreicht wird.
Die Links, die mit »S« beginnen, werden verwendet, um die Daemons zu starten. Die Links dagegen, die mit »K« beginnen, beenden sie. Wird das Runlevel geändert, werden die mit »K« beginnenden Links im entsprechenden Verzeichnis (z.B. im Verzeichnis rc3.d für Runlevel 3) ausgeführt, gefolgt von den Links, die mit »S« beginnen. Wir könnten Samba sogar neu starten, wenn zwischen den Runlevels 3 und 5 umgeschaltet wird, indem wir je einen K35smb-Link in die Verzeichnisse rc3.d und rc5.d einfügen. Die Zahl nach dem K oder S in den Link-Namen dient dazu, die Reihenfolge einzustellen, in der die Daemons mit den Links im Verzeichnis gestartet oder beendet werden. Schauen Sie sich die Inhalte der Verzeichnisse rc3.d oder rc5.d einmal genauer an, um festzustellen, wie dies in Ihrem System eingerichtet ist. Wir benutzen 35, um dem Verhalten des Samba-RPMPakets von Red Hat zu entsprechen. Es ist wichtig sicherzustellen, dass beim Start von Samba bereits alle Dienste gestartet wurden, die es benötigt. Beim Beenden bietet es sich an, Samba zu beenden, bevor die Dienste beendet werden, die es benötigt. Damit vermeiden Sie endlose Fehlermeldungen in den Protokolldateien. Diese Reihenfolge ist jedoch nicht so wichtig. Darwin und Mac OS X Eine Installation von Samba ist der Darwin-Distribution beigelegt, die in Mac OS X enthalten ist.5 Die Samba-Daemons werden während des Hochfahrens des Systems durch das Skript /System/Library/StartupItems/ Samba/Samba gestartet. Um die Ausführung dieses Skripts anzustoßen, bearbeiten Sie die Datei /etc/hostconfig und ändern den Parameter SMBSERVER, damit er folgendermaßen aussieht: SMBSERVER=-YESAbbildung 2-4 Das Sharing-Feld der Systemeinstellungen von Mac OS X
Bei Mac OS X bietet die grafische Benutzeroberfläche eine Alternative zur Kommandozeile. Starten Sie das Programm Systemeinstellungen und wählen Sie das Feld Sharing (siehe Abbildung 2-4). Aktivieren Sie auf der Registerkarte Dienste die Option Windows File Sharing. Damit wird die erwähnte Änderung an der Datei /etc/hostconfig vorgenommen und das Startskript ausgeführt. Falls Sie Samba jedoch selbst unter Mac OS X installieren wollen, sollten Sie nicht auf die Installation zurückgreifen, die mit dem Betriebssystem geliefert wurde. Wenden Sie die weiter vorn in diesem Kapitel beschriebenen Schritte an, um die Software im Verzeichnis /usr/local/ samba oder einem anderen Bereich, der von Aktualisierungen des Betriebssystems nicht beeinflusst wird, zu installieren. (Denken Sie daran, mit smbpasswd Benutzer einzurichten, falls Sie verschlüsselte Kennwörter benutzen, wie ebenfalls weiter vorn beschrieben. Dieser Schritt wird durch die Einträge in /var/db/samba/hash automatisch erledigt, wenn Sie den in Mac OS X integrierten Server verwenden.) Sobald es läuft, können Sie das
Samba-Startskript für Ihre Installation bearbeiten: #!/bin/sh # Samba starten.
. /etc/rc.common
if [ "${SMBSERVER:=-NO-}" = "-YES-" ]; then ConsoleMessage "SMB-Server startet"
if [ -f /usr/local/samba/lib/smb.conf ]; then /usr/local/samba/bin/smbd -D /usr/local/samba/bin/nmbd -D fi fi
Bedenken Sie allerdings, dass Aktualisierungen des Betriebssystems Ihre Änderungen auslöschen können. Eine Lösung wäre es, das Skript unveränderlich zu machen: # chflags uchg /System/Library/StartupItems/Samba/Samba
Testen des automatischen Starts Falls Sie einige Minuten Ausfallzeit erübrigen können, starten Sie nun Ihr System neu und prüfen wieder mit dem Befehl ps, ob die Daemons smbd und nmbd laufen. Falls Sie jedoch einen Server verwalten, der durchgehend in Betrieb sein muss, empfehlen wir Ihnen, den Server in einem Wartungsfenster neu zu starten und den Test durchzuführen. Anderenfalls könnte es passieren, dass Sie beim Start des Systems nach dem nächsten unplanmäßigen Ausfall vom mysteriösen Ausbleiben der SMBNetzwerkdienste überrascht werden!
Start über inetd
Der inetd 6-Daemon ist der Internet-»Super-Daemon« von Unix. Er lauscht an den Ports, die in /etc/services definiert sind, und führt bei einer eingehenden Anforderung das entsprechende, in /etc/inetd.conf aufgeführte Programm aus. Der Vorteil dieser Methode ist, dass eine große Anzahl von Daemons zwar bereitsteht, um auf Abfragen zu reagieren, aber nicht alle gleichzeitig laufen müssen. Stattdessen wartet inetd an ihrer Stelle auf Verbindungsanforderungen und startet bei Bedarf den entsprechenden Daemon. Der Nachteil ist eine etwas höhere Systembelastung beim Anlegen eines neuen Daemon-Prozesses sowie die Tatsache, dass Sie zwei Dateien statt einer bearbeiten müssen, um alles einzurichten. Der inetd-Daemon ist praktisch, wenn Sie nur einen oder zwei Samba-Benutzer haben oder Ihr Computer bereits zu viele Daemons ausführt. Es ist außerdem einfacher, eine Aktualisierung durchzuführen, ohne eine bestehende Verbindung zu unterbrechen. Wenn Sie die Samba-Daemons über inetd starten wollen, öffnen Sie zuerst die Datei /etc/services in einem Texteditor. Fügen Sie die folgenden beiden Zeilen hinzu, falls diese noch nicht existieren sollten: netbios-ssn
139/tcp
netbios-ns
137/udp
Bearbeiten Sie nun die Datei /etc/inetd.conf. Suchen Sie nach den folgenden beiden Zeilen und fügen Sie sie hinzu, falls sie noch nicht existieren. Wenn es bereits smbd- und nmbd-Zeilen in der Datei gibt, bearbeiten sie diese so, dass sie auf die neuen, von Ihnen installierten Dateien smbd und nmbd verweisen. Ihre Unix-Variante verwendet möglicherweise in dieser Datei eine etwas andere Syntax; ziehen Sie in solchen Fällen die bestehenden Einträge sowie die Manpage der inetd.conf als Leitfaden heran: netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd netbios-ns nmbd
dgram
udp wait
root /usr/local/samba/bin/nmbd
Beenden Sie schließlich alle laufenden smbd- und nmbd-Prozesse und senden Sie dem inetd-Prozess ein Hangup-(HUP-)Signal, damit er seine Konfigurationsdatei neu einliest: # /bin/kill -TERM -a smbd # /bin/kill -TERM -a nmbd # /bin/kill -HUP -a inetd
Danach sollte Samba ausgeführt werden. Wie wir bereits angemerkt haben, liefern Red Hat und möglicherweise einige andere Unix-Hersteller xinetd an Stelle von inetd. Falls Sie xinetd benutzen, müssen Sie eine Konfigurationsdatei in das Verzeichnis /etc/ xinetd.d setzen.
Die Samba-Daemons testen Sie sind mit der Einrichtung des Samba-Servers fast fertig. Jetzt müssen Sie nur noch sicherstellen, dass alles so funktioniert, wie Sie das erwarten. Hier leistet das Programm smbclient gute Dienste. Dieses Programm stellt fest, welche Freigaben ein Server für das Netzwerk zur Verfügung stellt. Ist alles korrekt eingerichtet, sollten Sie Folgendes tun können: # /usr/local/samba/bin/smbclient -U% -L localhost added interface ip=172.16.1.1 bcast=172.16.1.255 nmask=255.255.255.0 Domain=[METRAN] OS=[Unix] Server=[Samba 2.2.6]
Sharename
Type
Comment
---------
----
-------
test
Disk
Bitte nur zu Testzwecken verwenden
IPC$
IPC
IPC Service (Samba 2.2.6)
ADMIN$
Disk
IPC Service (Samba 2.2.6)
Server
Comment
---------
-------
TOLTEC
Samba 2.2.6 auf toltec
Workgroup
Master
---------
-------
METRAN
TOLTEC
Keine Panik, falls ein Problem auftritt! Versuchen Sie, die Daemons manuell zu starten, und prüfen Sie die Ausgaben des Systems oder die DebugDateien unter /usr/local/samba/ var/log.smb, um die Ursache festzustellen. Falls Sie an ein ernsteres Problem glauben, lesen Sie Kapitel 12. Dort finden Sie Hinweise zur Fehlersuche bei den Samba-Daemons. Wenn Ihre Konfiguration läuft - herzlichen Glückwunsch! Sie haben jetzt den Samba-Server erfolgreich mit einer Verzeichnisfreigabe eingerichtet. Diese Konfiguration ist zunächst einfach, aber wir können sie erst mal im nächsten Kapitel verwenden, um die Windows 95/98/Me- und NT/2000/XPClients einzurichten und zu testen. Anschließend wird es richtig interessant, weil wir Dienste hinzufügen, wie etwa Home-Verzeichnisse, Drucker und Sicherheitsmerkmale, sowie die Integration des Servers in eine größere Windows-Domäne vornehmen. 1Ausführbare
Dateien von gcc sind für fast jeden modernen Computer erhältlich. Eine Liste der Sites mit gcc und anderer GNU-Software finden Sie unter http://www.gnu.org/.
2Verwechseln
Sie dies nicht mit dem Solaris-Befehl killall, der als Teil der Shutdown-Sequenz des Systems ausgeführt wird!
3Je
nach der von Ihnen verwendeten Version von xinetd und der Art und Weise, wie dieser kompiliert wurde, müssen Sie an Stelle des HUPSignals ein USR1-Signal oder ein anderes Signal senden. In der Manpage für xinetd (8) auf Ihrem System finden Sie Näheres.
4Falls
Sie Samba nicht selbst kompiliert, sondern als Binary heruntergeladen haben, schauen Sie in die Dokumentation des Pakets, um festzustellen, wo sich die Datei smb.conf befinden könnte. Sie können auch das Programm testparm ausführen und in der ersten Zeile der Ausgabe nach dem Standort von smb.conf suchen. Wurde Samba auf Ihrem Unix-System vorinstalliert, befindet sich eine smb.conf-Datei wahrscheinlich irgendwo auf Ihrem System.
5In
diesem Buch betrachten wir Darwin Version 6.0 und OS X Version 10.2.
6Bei
frühen Releases von Samba 2.2 gab es Berichte über zeitweilig auftretende Fehler beim Start über inetd. Wir geben Ihnen diese Information, damit Sie bei späteren Releases Bescheid wissen, wenn dieses Problem hoffentlich erkannt und behoben wurde.
Kapitel 3 Windows-Clients konfigurieren Das Konfigurieren von Windows für die Arbeit mit Ihrem neuen Samba-Server ist ganz einfach. SMB ist die von Microsoft verwendete Sprache für die Freigabe von Ressourcen im lokalen Netzwerk, so dass ein Großteil der Installation und Einrichtung auf den Windows-Clients bereits erledigt ist.
Windows-Netzwerkkonzepte Windows unterscheidet sich auf vielerlei Weise von Unix. Dies schließt auch die Art der Unterstützung von Netzwerken ein. Bevor Sie sich aufmachen und sich durch die Dialogboxen klicken, um die einzelnen Windows-Versionen zu konfigurieren, müssen wir Ihnen die Grundlagen der Netzwerktechnik und -konzepte vermitteln, die für alle Mitglieder der Windows-Betriebssystemfamilie gelten. Bei allen Windows-Versionen werden wir uns vorrangig mit den folgenden Problemen befassen: ●
●
● ●
Sicherstellen, dass die erforderlichen Netzwerkkomponenten installiert und an die Netzwerkschnittstelle gebunden sind. Konfigurieren des Netzwerks mit gültiger IP-Adresse, Netzmaske, Gateways, WINS- und DNS-Servern. Zuweisen von Arbeitsgruppen- und Computernamen. Einrichten von Benutzernamen und Kennwörtern.
Außerdem gibt es zwischen den einzelnen Windows-Versionen kleinere Unterschiede bezüglich der Kommunikation und Koordination zwischen Windows und Unix. Es kann einen schier verrückt machen, wenn man daran denkt, auf welche Weise sich Unix von Windows unterscheidet oder wie sehr sich die einzelnen Mitglieder der Windows-Familie bezüglich der zu Grunde liegenden Technik in Verhalten oder Aussehen unterscheiden. Im Moment wollen wir uns jedoch auf die Ähnlichkeiten konzentrieren und schauen, ob wir einige Gemeinsamkeiten finden.
Komponenten Unix-Systeme sind traditionell eher monolithischer Natur. Möchte man einen Kernel mit Eigenschaften erhalten, die an den eigenen Bedarf angepasst sind, muss man ihn üblicherweise neu kompilieren oder linken. Moderne Versionen verfügen jedoch über die Fähigkeit, Gerätetreiber oder verschiedene andere Betriebssystemfunktionen als Module zu laden oder auszuschließen, während das System läuft. In der Regel muss das System dazu nicht einmal neu gestartet werden. Windows ermöglicht eine Konfiguration über das Installieren oder Deinstallieren von Komponenten. Im Bereich des Netzwerkbetriebs gibt es drei Arten von Komponenten:1 ● ●
Protokolle Clients
●
Dienste
Da Samba auf der Grundlage des TCP/IP-Protokolls arbeitet, muss dieses natürlich installiert sein. Protokolle lassen sich aber auch deinstallieren. Falls beispielsweise das Netware-Protokoll (IPX/SPX) im Netzwerk nicht benötigt wird, können Sie es wieder entfernen. Das NetBEUI-Protokoll sollte nach Möglichkeit entfernt werden. Wenn NetBEUI zur gleichen Zeit betrieben wird wie NetBIOS over TCP/IP, wird das System veranlasst, unter zwei unterschiedlichen Protokollen nach Diensten zu suchen, von denen wahrscheinlich doch nur eines in Benutzung ist. Ist Windows mit einem oder mehreren ungenutzten Protokollen konfiguriert, treten Verzögerungen von 30 Sekunden Länge auf, wenn es versucht, mit dem ungenutzten Protokoll zu kommunizieren. Schließlich bricht es ab und probiert das nächste Protokoll aus, bis es eines findet, das funktioniert. Das Ergebnis dieser fruchtlosen Suche ist eine schreckliche Performance. Die beiden anderen Einträge in der Liste, Clients und Dienste, haben Sie vermutlich hier schon erwartet. Client-Komponenten führen Aufgaben aus, die mit der Verbindung zu Netzwerk-Servern zu tun haben. Dienstkomponenten dienen dazu, das lokale System zu einem Server mit Ressourcen im Netzwerk zu machen. In Kapitel 1 haben wir Ihnen gesagt, dass SMB-Systeme sowohl als Clients als auch als Server handeln können. Das bedeutet, sie bieten Ressourcen im Netzwerk an und fordern gleichzeitig selbst welche. Entsprechend dieser Aussage ist es möglich, eine Komponente für SMB-Client-Dienste und separat eine Dienstkomponente zu installieren, die Datei- und Druckerfreigaben auf dem lokalen System für den Zugriff von anderen Systemen im Netzwerk bereitstellt. Bindungen Sobald eine Netzwerkkomponente installiert ist, muss sie an einen Adapter oder eine Hardware-Schnittstelle gebunden werden, damit sie im Netzwerk genutzt werden kann. Auf den ersten Blick sieht das vielleicht wie eine unnötige Verkomplizierung der ganzen Angelegenheit aus. Es handelt sich jedoch dabei um ein konzeptuelles Modell, das es erlaubt, Verknüpfungen zwischen Hardware und Software klar darzustellen und sie leicht über eine grafische Oberfläche zu verändern. Wir wollen sicherstellen, dass auf unserem Windows-Client sowohl TCP/IP als auch die Client-Komponente für ein SMB-Netzwerk installiert sind sowie dass diese an die Netzwerkschnittstelle gebunden sind, die die Verbindung zu unserem SambaNetzwerk herstellt. In den meisten Fällen handelt es sich dabei um einen EthernetAdapter.
Die IP-Adresse Wie jedes Unix-System (oder jedes andere System, das TCP/IP verwendet) benötigen auch Ihre Windows-Systeme eine IP-Adresse. Wenn Sie in Ihrem Netzwerk DHCP einsetzen, können Sie Windows so konfigurieren, dass es seine IP-Adresse automatisch über einen DHCP-Server bezieht. Ansonsten müssen Sie eine statische IP-Adresse zusammen mit einer Netzmaske manuell zuweisen.2 Befinden Sie sich in einem privaten Netzwerk, in dem Sie die Möglichkeit haben, Ihre eigenen IP-Adressen zuzuweisen, können Sie Adressen aus einem der folgenden drei Bereiche wählen:3
● ● ●
10.0.0.1 bis 10.255.255.254 172.16.0.1 bis 172.31.255.254 192.168.0.1 bis 192.168.255.254
Diese Adressbereiche sind für private Netzwerke reserviert, die nicht direkt an das Internet angeschlossen sind. Weitere Informationen über den Einsatz dieser privaten Netzwerkadressen finden Sie in RFC 1918. Wenn Sie allerdings nicht Ihr eigenes separates Netzwerk verwalten, fragen Sie Ihren Systemadministrator nach verfügbaren Adressen in Ihrem Netzwerk sowie nach einer passenden Netzmaske. Sie sollten sich auch darauf einstellen, die IP-Adresse des Standard-Gateways für das Netzwerk einzugeben. In einigen Netzwerken ist das Standard-Gateway das System oder der Router, der das lokale Netzwerk mit dem Internet verbindet. In anderen Fällen verbindet das Standard-Gateway ein Subnetz mit einem größeren Abteilungsoder Unternehmensnetzwerk.
Die Namensauflösung Die Namensauflösung bezeichnet den Vorgang des Übersetzens der vom Menschen lesbaren Hostnamen, wie hopi, oder der vollqualifizierten Domainnamen (Fully Qualified Domain Names; FQDNs), wie mixtec.metran.cx, in IP-Adressen wie etwa 172.16.1.11 oder 172.16.1.7. Unix-Systeme können die Namensauflösung im einfachsten Fall mit Hilfe einer /etc/ hosts-Datei durchführen. Üblicherweise sind an der Namensauflösung Dienste wie DNS (Domain Name System) und NIS (Network Information Service) beteiligt. Das bedeutet, dass die Namensauflösung nicht unbedingt von einem isolierten Teil des Betriebssystems oder einem Daemon erledigt wird, sondern ein System darstellt, das eine ganze Reihe verstreuter Bestandteile aufweisen kann (obwohl der Name Service Switch mit seiner /etc/nsswitch.conf-Konfigurationsdatei hilft, sie zusammenzuhalten). Die spezielle Implementierung der Namensauflösung unter Windows unterscheidet sich zwar von der unter Unix, sie wird aber ebenfalls durchgeführt, indem eine Reihe von Ressourcen abgefragt werden. Einige davon ähneln ihren Unix-Gegenstücken (oder sind sogar mit ihnen identisch). Namensauflösung über Broadcast Im Unterschied dazu gibt es einen Aspekt, bei dem Windows Unix überhaupt nicht ähnelt. Wird eine Windows-Workstation ohne WINS-Name-Server eingerichtet, verwendet sie die Broadcast-Methode der Namensauflösung, die wir in Kapitel 1 beschrieben haben4 und die zu einem stark ausgelasteten Netzwerk führt. Und selbst wenn Sie Name-Server für Ihr Windows-System zur Verfügung stellen, greift es möglicherweise auf die Broadcast-Namensauflösung zurück, falls es beim Abfragen der Name-Server keinen Erfolg hat. Aus diesem Grund empfehlen wir Ihnen, mehrere zuverlässige Name-Server für Ihre Windows-Computer im Netzwerk anzubieten. Falls das nun nicht reicht, um Sie für das Einrichten von WINS- und DNS-Servern zu begeistern, sollten Sie bedenken, dass die Broadcast-Namensauflösung in der Regel auf das lokale Netzwerk beschränkt ist, da Router auf Grund ihrer Konfiguration normalerweise Broadcast-Pakete nicht in andere Netze weiterleiten dürfen.
WINS Wir haben in Kapitel 1 bereits über WINS berichtet und müssen hier an dieser Stelle nicht mehr darüber sagen. WINS kann einfache NetBIOS-Computernamen wie huastec oder navajo in IP-Adressen übersetzen, die in einem SMB-Netzwerk erforderlich sind. Das Interessante ist hier natürlich, dass Samba als WINS-Server agieren kann, wenn Sie die folgende Zeile wins support = yes
in die smb.conf-Datei Ihres Samba-Servers aufnehmen. Das kann eine gute Sache sein, und wir empfehlen Ihnen auf jeden Fall, so vorzugehen. Sie erhalten damit einen zuverlässigen WINS-Server, um die Anzahl der Broadcast-Pakete zu verringern, und Sie brauchen auch nicht Windows NT/2000/XP zu betreiben, um ihn zu bekommen.
Beim Einsatz von Samba als WINS-Server müssen Sie unbedingt beachten, dass Samba (bis wenigstens Version 2.2) nicht in der Lage ist, sich mit anderen WINS-Servern zu synchronisieren. Falls Sie also einen Samba-Server als WINS-Server Ihres WindowsSystems festlegen, müssen Sie sorgfältig Acht geben, keine weiteren (d.h. sekundären) WINS-Server anzugeben. Tun Sie es dennoch, werden aller Wahrscheinlichkeit nach Probleme auftreten, da die Server nicht in der Lage sind, ihre jeweiligen Datenbanken miteinander zu synchronisieren. Zur Verteidigung von Samba sei gesagt, dass Sie vermutlich kaum Bedarf an einem zweiten WINS-Server haben werden, wenn Sie einen SambaWINS-Server einsetzen (der auf einem normalerweise zuverlässigen Unix-Host läuft). LMHOSTS Alle Windows-Versionen unterstützen eine Backup-Methode zur Namensauflösung in Form einer Datei namens LMHOSTS 5, die eine Tabelle (eine so genannte Lookup Table) der Computernamen und IP-Adressen enthält. Diese gibt es aus »historischen Gründen«. Sie stellt eine ziemlich umständliche Methode der Namensauflösung dar, da sie vom Administrator (d.h. von Ihnen!) verlangt, Kopien der Datei LMHOSTS auf allen Windows-Systemen im Netzwerk auf dem aktuellen Stand zu halten. Um wirklich effektiv funktionieren zu können, müsste LMHOSTS jedes Mal aktualisiert werden, wenn ein neues System in das Netzwerk aufgenommen (oder aus ihm entfernt) wird. Natürlich gäbe es Möglichkeiten, diesen Vorgang zu automatisieren, besser wäre es aber, einfach einen WINS-Name-Server zu betreiben, der extra dafür vorgesehen ist, dieses spezielle Problem zu lösen. Es gibt vermutlich eine Reihe von Gründen, weshalb Sie sich mit LMHOSTS-Dateien
herumschlagen wollen. Manchmal - auch wenn das selten vorkommt - gibt es keinen WINS-Server im Netzwerk. Oder vielleicht gibt es einen WINS-Server, aber dieser ist unzuverlässig. In beiden Fällen kann das Windows-System, wenn es eine gültige LMHOSTS-Datei besitzt, dazu beitragen, dass das Netzwerk nicht durch diese schrecklichen Broadcast-Namensanfragen in die Knie geht. Das Format der LMHOSTS-Datei ist einfach und ähnelt der /etc/hosts-Datei, die Sie von Unix-Systemen wahrscheinlich kennen. Hier sehen Sie als Beispiel den Inhalt einer solchen LMHOSTS-Datei: 172.16.1.1
toltec
172.16.1.2
aztec
172.16.1.3
mixtec
172.16.1.4
zapotec
172.16.1.5
huastec
172.16.1.6
maya
172.16.1.7
olmec
172.16.1.8
chichimec
172.16.1.11
hopi
172.16.1.12
zuni
172.16.1.13
dine
172.16.1.14
pima
172.16.1.15
apache
172.16.1.21
inca
172.16.1.22
qero
Wie Sie sehen, gleicht das Format dem der /etc/hosts, mit der Ausnahme, dass an Stelle eines FQDN (z.B. toltec.metran.cx) nur ein NetBIOS-Computername (toltec) angegeben ist. Sie können eine LMHOSTS-Datei für Ihr Windows-System beispielsweise erstellen, indem Sie eine /etc/hosts-Datei kopieren und die Teile streichen, die Sie nicht benötigen. Das funktioniert großartig, wenn Ihr Netzwerk keinen DNS- (oder NIS-) Name-Server besitzt und das Unix-System für seinen eigenen Namensdienst von /etc/hosts abhängig ist. Fragt Ihr Unix-System hingegen einen DNS-Server ab (was außer bei ganz kleinen Netzwerken praktisch überall vorkommt), sind Sie besser beraten, die Konfigurationsdateien des DNS-Servers als Quelle für die Computernamen und IP-Adressen heranzuziehen. Falls Sie keinen administrativen Zugang zum DNS-Server Ihres Netzwerks haben, könnten Sie Werkzeuge wie nslookup, nmap und dig einsetzen, um den Server abzufragen und die gewünschten Informationen zu erhalten.
DNS Das DNS ist verantwortlich für die Übersetzung der vom Menschen leicht lesbaren Internet-Hostnamen wie pima.metran.cx oder sales.oreilly.com in IP-Adressen. Beim ersten Lesen dieses Abschnitts werden Sie sich vielleicht fragen, was ein Abschnitt über DNS in einem Buch über NetBIOS und SMB-Netzwerke zu suchen hat. Erinnern Sie sich? Wir haben Ihnen gesagt, dass Windows in seiner Strategie zur Durchführung der Namensauflösung mehr als WINS (NetBIOS-Namensdienst) benutzen kann. Da das DNS auch IP-Adressen für einfache Hostnamen ausgeben kann (die normalerweise mit den NetBIOS-Computernamen identisch sind), ist es möglicherweise sinnvoll, Windows so zu konfigurieren, dass es über einen DNSServer in Ihrem Netzwerk Bescheid weiß. Das ist für neuere Windows-Versionen ein bisschen wichtiger als für ältere und gilt eher für Windows NT/2000/XP als für Windows 95/98/Me, da Microsoft sich heutzutage eher auf TCP/IP als Standardprotokoll und DNS als primären Namensdienst konzentriert. Um die Adresse Ihres DNS-Servers zu ermitteln, schauen Sie in die Datei /etc/resolv. conf auf Ihrem Samba-Server oder einem anderen Unix-System in Ihrem lokalen Netzwerk, das DNS verwendet. Diese Datei sieht folgendermaßen aus: #resolv.conf domain metran.cx nameserver 127.0.0.1 nameserver 172.16.1.53
In diesem Beispiel ist der erste Name-Server in der Liste 127.0.0.1. Das bedeutet, dass der Samba-Server auch als DNS-Server für dieses LAN fungiert.6 In diesem Fall würden Sie seine Netzwerk-IP-Adresse (nicht 127.0.0.1, seine Localhost-Adresse) für Ihren DNS-Server verwenden, wenn Sie Windows konfigurieren. Ansonsten benutzen Sie die anderen Adressen, die Sie in den mit nameserver beginnenden Zeilen vorfinden. Versuchen Sie einmal, eine davon in Ihrem eigenen Netzwerk auszuwählen. Alle in /etc/resolv.conf aufgeführten Name-Server sollten funktionieren, die Leistung ist aber besser, wenn Sie einen nahe gelegenen Server nehmen. Alle Windows-Versionen können so konfiguriert werden, dass sie mehrere DomainName-Server kennen, und Sie werden von dieser verbesserten Zuverlässigkeit Gebrauch machen wollen. Wenn der erste Domain-Name-Server nicht antwortet, fragt Windows andere in der Liste an. HOSTS In der gleichen Weise, in der die Datei LMHOSTS hinzugefügt werden kann, um WINS zu ergänzen, kann die Datei HOSTS auf einem Windows-System optional eingesetzt werden, um die DNS-Namensauflösung zu unterstützen. Die meisten unserer LMHOSTS betreffenden Kommentare gelten auch hier. Dieses Mal ist das Format der Datei nicht nur ähnlich dem der /etc/hosts auf einem Unix-System - das Format ist genau gleich. Sie können die /etc/hosts von Ihrem Samba-Server oder einem anderen Unix-System in das passende Verzeichnis auf Ihrem Windows-System kopieren.
Unter Windows 95/98/Me kommt die HOSTS-Datei in das WindowsInstallationsverzeichnis, also normalerweise nach C:\Windows. Beachten Sie, dass sich dort bereits eine Datei namens hosts.sam befindet, eine Beispiel-HOSTS-Datei, die von Microsoft vorgegeben wurde. Unter Windows NT/2000/XP wird die Datei HOSTS in das Verzeichnis \system32\ drivers\etc unterhalb des Windows-Installationsverzeichnisses (üblicherweise C: \WINNT) geschrieben.
Kennwörter Unix-Systeme benutzen Paare aus Benutzernamen und Kennwort, um die Benutzer entweder an einem lokalen System oder in einer NIS-Domain zu authentifizieren. Windows NT/2000/XP arbeiten ähnlich; ein Benutzer gibt seinen Benutzernamen und sein Kennwort an, um sich am lokalen System oder in einer Windows-Domäne anzumelden. Wenn das SMB-Netzwerk als Arbeitsgruppe eingerichtet wird, liegen die Dinge etwas anders. Es gibt keine Domäne, an der man sich anmelden könnte, obwohl die Freigaben im Netzwerk durch ein Kennwort geschützt werden könnten. In diesem Fall wird mit jeder kennwortgeschützten Freigabe ein Kennwort verknüpft und nicht mit einzelnen Benutzern. Die normale, benutzerbezogene Authentifizierung von Samba in einer Arbeitsgruppe unterscheidet sich von der unter Windows. Um auf Freigaben auf einem Samba-Host zuzugreifen, müssen Benutzer einen gültigen Benutzernamen und das dazugehörende Kennwort für einen Zugang auf dem Samba-Host angeben. Wir werden in Kapitel 9 näher darauf eingehen. Eine bedauerliche Komplikation tritt bei Kennwörtern auf. Im ersten Release von Windows 95 und in Windows NT 4.0 mit Service Pack 2 (SP2) oder niedriger sowie in allen vorherigen Versionen von Windows durften Kennwörter im Klartext über das Netzwerk verschickt werden. In Windows 95 mit dem Netzwerk-Redirector-Update7 jedoch sowie in Windows NT 4.0 SP3 und später und in allen folgenden Releases von Windows musste eine Registry-Einstellung modifiziert werden, um Klartextkennwörter zu erlauben. Diese moderneren Versionen von Windows bevorzugen es, verschlüsselte Kennwörter zu versenden. Falls Sie mit einer dieser Versionen arbeiten (und die Registry nicht verändern wollen), müssen Sie die Zeile encrypt passwords = yes
in den [global]-Abschnitt Ihrer smb.conf-Datei aufnehmen. Darüber hinaus müssen Sie den Befehl # smbpasswd -a benutzername
für jeden Benutzer auf dem Samba-Host ausführen, um deren Kennwörter in Sambas Sammlung der verschlüsselten Kennwörter aufzunehmen. Wir haben Ihnen in Kapitel 2 gezeigt, wie das geht. Falls Ihr erster Versuch, auf eine Samba-Freigabe zuzugreifen, eine Dialogbox
hervorbringt, in der nach einem Kennwort für IPC$ gefragt wird (wie in Abbildung 3-1 gezeigt), liegt das vermutlich daran, dass Sie entweder einen oder beide Schritte weggelassen haben und der Samba-Server das verschlüsselte Kennwort nicht erkannt hat, das das Windows-System ihm geschickt hat. Eine andere Dialogbox, die auftreten kann, wird in Abbildung 3-2 gezeigt. Diese wurde von einem Windows 2000Client präsentiert. Abbildung 3-1 Windows 98, nach dem IPC$-Kennwort fragend
Abbildung 3-2 Windows 2000-Fehlerdialog bei der Anmeldung
Der Rest dieses Kapitels ist in vier Abschnitte aufgeteilt. Der erste Abschnitt behandelt die Einrichtung von Windows 95/98/Me-Computern, die anderen Abschnitte befassen sich jeweils mit Windows NT 4.0, Windows 2000 und Windows XP. Jeder Abschnitt weist ungefähr die Reihenfolge auf, in der wir die Netzwerkkonzepte in diesem Abschnitt eingeführt haben. Sie müssen nur den Abschnitt lesen, der zu der von Ihnen verwendeten Windows-Version passt. Danach können Sie gleich mit dem Beginn des nächsten Kapitels fortfahren, in dem wir höhere Samba-Funktionen und Netzwerkbelange behandeln.
Denken Sie daran, dass wir das Beispiel aus Kapitel 2 weiterverwenden, in dem wir einen sehr einfachen Netzwerkprototyp einrichteten. Die von uns benutzte Arbeitsgruppe weist eine sehr geringe Sicherheit auf. Sobald die einfachen Dinge funktionieren, sollten Sie mit den weiter unten in diesem Buch befindlichen Kapiteln fortfahren, um zu lernen, wie Sie sowohl eine bessere Sicherheit als auch eine Samba-Domain implementieren.
Windows 95/98/Me-Computer einrichten Die Betriebssysteme Windows 95/98/Me sind einander sehr ähnlich. Bezüglich der in diesem Kapitel besprochenen Fragen ist es möglich, ihnen die gleichen Anweisungen zu geben.
Das Netzwerk einrichten Samba verwendet TCP/IP, um mit Clients im Netzwerk zu kommunizieren, Sie müssen also sicherstellen, dass auf jedem Windows-Client die Unterstützung für dieses Protokoll aktiviert ist. Im Gegensatz zum Betriebssystem Unix muss bei Windows die TCP/IP-Unterstützung nicht unbedingt installiert sein. Wenn Windows jedoch auf einem Computer mit einer Netzwerkkarte installiert ist oder einem System, auf dem bereits Windows läuft, eine Netzwerkkarte hinzugefügt wird, wird die TCP/IP-Unterstützung standardmäßig installiert, zusammen mit dem Client für Microsoft-Netzwerke, der die SMB-Datei- und Druckerfreigabe unterstützt. Um sicher zu sein, dass beide Dienste auf Ihrem Windows-System installiert sind, doppelklicken Sie auf das Netzwerk-Symbol in der Systemsteuerung. Der NetzwerkDialog aus Abbildung 3-3 wird geöffnet. Abbildung 3-3 Der Windows 95/98/Me-Netzwerk-Dialog
Sie sollten wenigstens die Komponente Client für Microsoft-Netzwerke auf dem System vorfinden. Außerdem ist hoffentlich ein Netzwerkgerät (vorzugsweise eine Ethernet-Karte) an das TCP/IP-Protokoll gebunden. Wenn es nur ein NetzwerkHardware-Gerät gibt, sehen Sie das TCP/IP-Protokoll unter dem Gerät aufgeführt, an das es gebunden ist (Abbildung 3-1). Möglicherweise sehen Sie außerdem »Datei- und Druckerfreigabe für MicrosoftNetzwerke«, das benutzt wird, um das System zu einem Server zu machen. Darüber hinaus könnten Sie noch NetBEUI oder Client für Novell Netware sehen. Entfernen Sie NetBEUI, es sei denn, Sie sind sich sicher, dass Sie es brauchen. Und falls es keine Novell-Server in Ihrem Netzwerk gibt, können Sie Novell (IPX/SPX) ebenfalls entfernen. Um einen Dienst zu entfernen, markieren Sie einfach seinen Namen und klicken dann auf den Button Entfernen. TCP/IP hinzufügen Falls TCP/IP nicht aufgeführt ist, müssen Sie es installieren. Sie können das Protokoll hinzufügen, indem Sie die Windows-CD-ROM in Ihr CDLaufwerk einlegen und dann den Button Hinzufügen unter dem Komponentenfenster anklicken. Geben Sie an, dass Sie ein Protokoll hinzufügen wollen, indem Sie Protokoll auswählen. Klicken Sie im folgenden Dialogfeld, das so ähnlich aussehen sollte wie das in Abbildung 3-4, auf Hinzufügen.... Abbildung 3-4 Auswählen einer Komponentenart
Wählen Sie danach als Hersteller Microsoft und als Protokoll TCP/IP, wie in Abbildung 3-3 gezeigt, und klicken Sie dann auf OK. Anschließend werden Sie in den NetzwerkDialog zurückgeführt. Klicken Sie auf OK, um diesen zu schließen. Windows installiert die notwendigen Komponenten von der CD-ROM und fordert dann einen Neustart des Systems. Folgen Sie dieser Aufforderung und starten Sie das System neu. Jetzt sind Sie fertig. Ist Client für Microsoft-Netzwerke nicht in der Liste zu finden, können Sie es auf die gleiche Weise hinzufügen. Der einzige wirkliche Unterschied besteht darin, dass Sie einen Client an Stelle eines Protokolls installieren, daher müssen Sie »Client« auswählen und nicht »Protokoll«. TCP/IP konfigurieren Besitzen Sie mehr als ein Netzwerkgerät (beispielsweise sowohl eine Ethernet-Karte als auch ein Modem), ist das Protokoll für die Hardware-Bindungen durch Pfeile gekennzeichnet, wie in Abbildung 3-5 zu sehen. Abbildung 3-5 Auswahl eines Protokolls zur Installation
Wählen Sie das TCP/IP-Protokoll, das mit dem Netzwerkgerät verknüpft ist, mit dem Sie auch auf das Samba-Netzwerk zugreifen. Haben Sie nur ein Netzwerkgerät, klicken Sie einfach auf den Eintrag TCP/IP. Klicken Sie nun auf den Button Eigenschaften, um das Dialogfeld Eigenschaften von TCP/IP zu öffnen. Dieses sollte so ähnlich aussehen wie das in Abbildung 3-6. Abbildung 3-6 Auswahl des richtigen TCP/IP-Protokolls
Die Registerkarte IP-Adresse Die Registerkarte IP-Adresse ist in Abbildung 3-7 zu sehen. Abbildung 3-7 Die Registerkarte IP-Adresse
Falls Sie DHCP in Ihrem Netzwerk benutzen, um den Windows-Systemen die IPAdressen automatisch zur Verfügung zu stellen, aktivieren Sie den Radio-Button »IPAdresse automatisch beziehen«. Klicken Sie ansonsten auf den Radio-Button »IPAdresse festlegen« und geben Sie die Adresse des Clients sowie die Subnetzmaske in die vorgegebenen Felder ein. Sie oder Ihr Netzwerkverwalter sollten für den Client eine Adresse im gleichen Subnetz (LAN) ausgewählt haben wie der Samba-Server. Die Registerkarte WINS-Konfiguration Wenn Sie bei Samba WINS aktiviert haben oder einen anderen WINS-Server in Ihrem Netzwerk benutzen wollen, müssen Sie Windows die Adresse des Servers mitteilen. Nach dem Auswählen der Registerkarte WINS-Konfiguration sehen Sie den Dialog, der in Abbildung 3-8 gezeigt wird. Abbildung 3-8 Die Registerkarte WINS-Konfiguration
Gezeigt wird hier die Registerkarte von Windows 98/Me; unter Windows 95 sieht sie ein bisschen anders aus - sie zeigt getrennte Felder für die IP-Adressen des primären und des Sicherungs-WINS-Servers. Wählen Sie den Radio-Button »WINS-Auflösung aktivieren« und geben Sie die Adresse des WINS-Servers an der vorgesehenen Stelle ein. Klicken Sie anschließend auf Hinzufügen. Das Feld Bereichs-ID bleibt frei.
Auf Grund eines Bugs in Windows 95/98 verschwindet die IPAdresse des WINS-Servers manchmal, nachdem der OK-Button angeklickt wurde. Dies geschieht nur dann, wenn lediglich ein primärer WINS-Server angegeben wurde. Sie umgehen dies, indem Sie beide Felder, das des primären und das des sekundären WINS-Servers, ausfüllen. Geben Sie dazu in beide Felder die gleiche IP-Adresse ein. Registerkarte DNS-Konfiguration Wenn Sie kein DHCP verwenden, müssen Sie die IP-Adresse eines oder mehrerer DNS-Server angeben. Klicken Sie auf die Registerkarte DNS, aktivieren Sie anschließend den Radio-Button »DNS aktivieren« und geben Sie die IP-Adresse eines oder mehrerer DNS-Server in das entsprechende Feld ein (siehe Abbildung 3-9), um die Adresse des Servers dem Feld Suchreihenfolge für DNS-Server hinzuzufügen. Abbildung 3-9 Die Registerkarte DNS-Konfiguration
Geben Sie darüber hinaus den Hostnamen (der mit dem NetBIOS-Computernamen identisch ist) des Windows 95/98/Me-Computers und Ihre Internet-Domain an. (Sie müssen den Computernamen später noch einmal angeben, zusammen mit der Arbeitsgruppe. Passen Sie auf, dass Sie jedes Mal den gleichen Namen eingeben.) Im Zusammenhang mit Samba können Sie das Feld Suchreihenfolge für Domänensuffix getrost ignorieren. Die LMHOSTS-Datei Wollen Sie eine LMHOSTS-Datei installieren, legen Sie diese in Ihr WindowsInstallationsverzeichnis (normalerweise C:\Windows). Im gleichen Verzeichnis hat
Microsoft eine Beispiel-LMHOSTS-Datei namens lmhosts.sam zur Verfügung gestellt, die Sie heranziehen können, wenn Sie weitere Informationen über das Format dieser Datei benötigen. Die Registerkarte NetBIOS Diese Registerkarte gibt es bei Windows 98/Me, nicht jedoch bei Windows 95. Sie müssen hier nur darauf achten, dass das Optionsfeld aktiviert ist, das NetBIOS über TCP/IP ermöglicht. Ist TCP/IP Ihr einziges installiertes Protokoll (wie wir zuvor empfohlen haben), ist diese Auswahlmöglichkeit ausgegraut. Das Optionsfeld ist dann markiert; Sie könnten es also nicht deaktivieren, selbst wenn Sie wollten. Die Registerkarte Bindungen Die letzte Registerkarte, die Sie sich anschauen sollten, ist Bindungen (siehe Abbildung 3-10). Abbildung 3-10 Die Registerkarte Bindungen
Sie müssen Client für Microsoft-Netzwerke anklicken, wodurch Sie angeben, dass TCP/ IP verwendet wird. Falls Sie die Option »Datei- und Druckerfreigabe für MicrosoftNetzwerke« im Dialog vorfinden, aktivieren Sie sie ebenfalls, wie in Abbildung 3-10 gezeigt.
Den Computernamen und die Arbeitsgruppe einstellen Klicken Sie schließlich im Dialog Eigenschaften von TCP/IP auf OK. Sie gelangen wieder zurück in den Netzwerk-Dialog. Wenn Sie nun die Registerkarte Identifikation auswählen, sehen Sie ein Dialogfeld, dargestellt in Abbildung 3-11.
Abbildung 3-11 Die Registerkarte Identifikation
Hier stellen Sie den NetBIOS-Namen Ihres Systems ein (der von Microsoft gern auch als »Computername« bezeichnet wird). Normalerweise ist es am besten, hier den gleichen Namen zu benutzen wie für den DNS-Hostnamen, falls Sie Ihrem System einen solchen gegeben haben. Lautet beispielsweise der DNS-Name Ihres Systems huastec.metran.cx, geben Sie als NetBIOS-Namen für den Computer in dieser Registerkarte huastec ein. Sie können hier auch den Arbeitsgruppennamen einstellen. In unserem Fall handelt es sich um METRAN, falls Sie jedoch in Kapitel 2 beim Erzeugen der SambaKonfigurationsdatei einen anderen verwendet haben, nehmen Sie natürlich diesen. Verwenden Sie nur nicht den Namen WORKGROUP (den vorgegebenen Arbeitsgruppennamen), da Sie sich sonst in der gleichen Arbeitsgruppe wiederfinden wie jeder falsch konfigurierte Windows-Computer auf diesem Planeten! Außerdem können Sie für diesen Computer einen Kommentar eingeben. Beschreiben Sie ihn gut, damit Sie wissen, um welchen Rechner es sich handelt und wo er sich befindet, wenn Sie den Kommentar in einer Liste auf einem anderen Computer sehen. Jede andere Person im Netzwerk kann Ihren Kommentar sehen, veröffentlichen Sie deshalb keine Informationen, die Crackern helfen könnten, in Ihren Rechner einzudringen. Klicken Sie schließlich auf den OK-Button und folgen Sie den Anweisungen, die Windows Ihnen gibt. (Eventuell müssen Sie die Windows-CD-ROM einlegen und/oder den Rechner neu starten.)
Benutzername und Kennwort
Möglicherweise haben Sie bei Windows bereits einen Benutzernamen und ein Kennwort angegeben. Damit Sie sich jedoch am Samba-Server authentifizieren können, müssen Ihr Windows-Benutzername und das Kennwort einem gültigen Zugang auf dem Samba-Server entsprechen. Es ist recht einfach, auf einem Windows 95/98/Me-System einen neuen Benutzer sowie dessen Kennwort anzulegen. Starten Sie den Computer einfach neu oder melden Sie sich ab. Wenn Sie nach einem Benutzernamen und einem Kennwort gefragt werden, geben Sie Ihren Unix-Benutzernamen und das Kennwort ein. (Falls Sie verschlüsselte Kennwörter verwenden, müssen Sie auf dem Unix-Host smbpasswd ausführen, um diese in die Kennwortdatenbank von Samba aufzunehmen, sollten Sie dies noch nicht erledigt haben.) Sie können mit Hilfe dieser Methode so viele Benutzer hinzufügen, wie Sie wollen. Auf diese Weise können Sie es mehr als einem Benutzer erlauben, das Windows-System zu verwenden, um Zugriff auf die Samba-Freigaben zu erlangen. Haben Sie versehentlich das falsche Kennwort eingegeben oder hat Ihr UnixKennwort sich geändert, ändern Sie Ihr Kennwort auf dem Windows-System. Doppelklicken Sie dazu in der Systemsteuerung auf das Kennwörter-Symbol. Dadurch öffnet sich der Dialog Eigenschaften von Kennwörter. Klicken Sie auf die Registerkarte Kennwörter ändern. Sie sehen den Dialog aus Abbildung 3-12. Klicken Sie nun auf den Button »Windows-Kennwort ändern...«. Sie gelangen so in das Dialogfeld Windows-Kennwort ändern, das Sie in Abbildung 3-13 sehen können. Geben Sie in die entsprechenden Texteingabefelder zuerst Ihr altes Kennwort und anschließend Ihr neues Kennwort ein. Die Eingabe des neuen Kennworts müssen Sie wiederholen, um es zu bestätigen. Klicken Sie auf OK und danach auf Schliessen in der Dialogbox Eigenschaften von Kennwörter. Starten Sie den Rechner neu oder melden Sie sich ab. Wenn Sie sich wieder anmelden, verwenden Sie Ihr neues Kennwort. Abbildung 3-12 Das Dialogfeld Eigenschaften von Kennwörter
Abbildung 3-13 Der Dialog Windows-Kennwort ändern
Zum ersten Mal anmelden Wenn Sie die Registerkarte Kennwörter ändern im Fenster Eigenschaften von Kennwörter nicht finden können, liegt das daran, dass das Netzwerk noch nicht fertig eingerichtet wurde. Vorausgesetzt, Sie sind bis hierhin allen Anweisungen gefolgt, müssen Sie nun nur noch einen Neustart ausführen. Wenn das System startet, fordert es Sie auf, sich mit Benutzernamen und Kennwort anzumelden. Das war es jetzt! Ihr Samba-Server läuft, und Sie haben Ihren Windows 95/98/MeClient dazu gebracht, mit ihm zu kommunizieren. Von Windows 95/98 auf den Samba-Server zugreifen Doppelklicken Sie das Symbol Netzwerkumgebung auf dem Desktop. Sie sollten Ihren Samba-Server als Mitglied der Arbeitsgruppe aufgeführt finden (siehe Abbildung 314). Abbildung 3-14 Die Windows 95/98-Netzwerkumgebung
Wenn Sie auf den Server-Namen doppelklicken, sehen Sie die Ressourcen, die der Server im Netzwerk anbietet, wie in Abbildung 3-15 dargestellt (in diesem Fall handelt es sich um das Verzeichnis test). Abbildung 3-15 Der freigegebene Ordner test auf dem Server Toltec
Von Windows Me auf den Samba-Server zugreifen Doppelklicken Sie auf dem Desktop auf das Symbol Netzwerkumgebung. Sie sollten das freigegebene Verzeichnis test sehen, wie in Abbildung 3-16 dargestellt. Abbildung 3-16 Netzwerkumgebung unter Windows Me
Doppelklicken Sie auf das Symbol Gesamtes Netzwerk. Wie in Abbildung 3-17 dargestellt, finden Sie hier ein Symbol für Ihre Arbeitsgruppe. Abbildung 3-17 Das Fenster Gesamtes Netzwerk mit der Arbeitsgruppe Metran
Wenn Sie auf das Arbeitsgruppensymbol doppelklicken, öffnet sich ein Fenster, in dem alle Computer aus der Arbeitsgruppe angezeigt werden. Darunter sollte auch Ihr Samba-Server zu finden sein (siehe Abbildung 3-18). Abbildung 3-18 Computer in der Arbeitsgruppe Metran
Doppelklicken Sie auf das Symbol des Samba-Servers. Sie erhalten ein Fenster, in dem seine freigegebenen Ressourcen gezeigt werden (in diesem Fall das Verzeichnis test). In Abbildung 3-19 ist dies dargestellt. Abbildung 3-19 Darstellung der Freigaben auf dem Server Toltec
Finden Sie den Server nicht in der Liste, liegt das möglicherweise daran, dass das Durchsuchen des Netzwerks nicht richtig funktioniert oder der Server einige Minuten braucht, um in der Suchliste aufzutauchen. In beiden Fällen können Sie auf den StartButton klicken und dort im Menü den Befehl »Ausführen...« wählen. In der sich öffnenden Dialogbox können Sie den Namen Ihres Servers und den Namen der Freigabe test im Windows-UNC-Format \\server\test eingeben, wie wir in Kapitel 1 demonstriert haben. Auf Ihrem Desktop sollte ein Fenster erscheinen, in dem der Inhalt des Ordners angezeigt wird. Falls dies nicht funktioniert, gibt es vermutlich ein Problem mit der Namensauflösung. Versuchen Sie es noch einmal, diesmal mit der IPAdresse des Servers an Stelle seines Computernamens: \\172.16.1.1\test
Sollte es dann immer noch nicht funktionieren, lesen Sie gleich den Abschnitt »Der Fehlerbaum« in Kapitel 12, um festzustellen, was mit dem Netzwerk nicht stimmt, und um diesen Fehler zu beheben.
Funktioniert es hingegen, dann gratulieren wir! Versuchen Sie einmal, Dateien mittels Drag-and-Drop auf und vom Server zu kopieren. Sie werden überrascht sein, wie gut das geht.
Windows NT 4.0-Computer einrichten Das Konfigurieren von Windows NT funktioniert ein bisschen anders als das Konfigurieren von Windows 95/98/Me. Um Samba mit Windows NT benutzen zu können, benötigen Sie sowohl den Arbeitsstationsdienst als auch das TCP/IPProtokoll. Beide sind zwar standardmäßig in NT enthalten, wir werden uns aber dennoch mit deren Installation und Konfiguration befassen, um sicherzustellen, dass sie richtig eingerichtet wurden.
Die grundlegende Konfiguration Dieser Abschnitt zeigt Ihnen, wie Sie bei der TCP/IP-bezogenen Konfiguration von Windows NT vorgehen müssen, um NT dazu zu bringen, mit Samba zusammenzuarbeiten. Falls Sie nähere Informationen zur Windows NTNetzwerkadministration benötigen, empfehlen wir Ihnen das Buch Windows NT TCP/ IP Netzwerk-Administration von Craig Hunt und Robert Bruce Thompson (O'Reilly). Sie müssen die folgenden Schritte als Administrator oder als Benutzer in der Gruppe Administratoren ausführen. Das TCP/IP-Protokoll installieren Doppelklicken Sie in der Systemsteuerung auf das Netzwerk-Symbol, klicken Sie in der Netzwerk-Dialogbox auf die Registerkarte Protokolle und schauen Sie nach, ob das TCP/IP-Protokoll bereits installiert wurde, wie in Abbildung 3-20 zu sehen. Abbildung 3-20 Die Registerkarte Protokolle
Wurde das Protokoll noch nicht installiert, müssen Sie es hinzufügen. Klicken Sie auf den Button Hinzufügen. Daraufhin öffnet sich das Dialogfeld Auswahl: Netzwerkprotokoll, das Sie in Abbildung 3-21 sehen. Das TCP/IP-Protokoll sollte als
eines der letzten Protokolle aufgeführt sein. Abbildung 3-21 Das Dialogfeld Auswahl: Netzwerkprotokoll
Wählen Sie TCP/IP als Protokoll und bestätigen Sie Ihre Wahl. Falls möglich, installieren Sie nur das TCP/IP-Protokoll. Sollten Sie auf der Registerkarte Protokolle noch etwas anderes sehen als TCP/IP und es handelt sich nicht um ein von Ihnen benötigtes Protokoll, können Sie es entfernen. Wenn Sie bei dem Versuch, ein Protokoll zu entfernen, eine Fehlermeldung erhalten, die Ihnen sagt, dass dieses Protokoll von einem anderen Dienst verwendet wird, müssen Sie zuerst in der Registerkarte Dienste diesen Dienst löschen, bevor Sie das Protokoll entfernen können. Um beispielsweise das Protokoll NWLink IPX/SPX-kompatibler Transport entfernen zu können, müssen Sie zuerst den Dienst Client Service für Netware löschen. Den Arbeitsstationsdienst installieren Klicken Sie nach der Installation von TCP/IP auf die Registerkarte Dienste im Netzwerk-Dialog und prüfen Sie, ob Sie einen Arbeitsstationsdienst haben, wie am Ende der Liste in Abbildung 3-22 zu sehen.8 Bei diesem Dienst handelt es sich eigentlich um den Microsoft-Netzwerk-Client, der es dem Computer erlaubt, auf SMB-Dienste zuzugreifen. Der Arbeitsstationsdienst ist zwingend erforderlich. Der Dienst wird standardmäßig sowohl auf Windows NT Workstation 4.0 als auch auf NT Server 4.0 installiert. Wenn er fehlt, können Sie ihn auf die gleiche Weise installieren wie TCP/IP. In diesem Fall müssen Sie auf den Button Hinzufügen klicken und dann den Arbeitsstationsdienst auswählen, wie in Abbildung 3-23 demonstriert wird. Abbildung 3-22 Die Registerkarte Dienste
Abbildung 3-23 Das Dialogfeld Auswahl: Netzwerkdienst
TCP/IP konfigurieren Nachdem Sie den Arbeitsstationsdienst installiert haben, kehren Sie zur Registerkarte Protokolle zurück und wählen im Fenster den Eintrag TCP/IP-Protokoll aus. Klicken Sie anschließend auf den Button Eigenschaften unter dem Fenster. Das Dialogfeld Eigenschaften von Microsoft TCP/IP wird angezeigt. In dieser Dialogbox gibt es fünf Registerkarten, und Sie müssen mit vier davon arbeiten: ● ● ● ●
IP-Adresse WINS-Adresse DNS Bindungen
Registerkarte IP-Adresse: Die Registerkarte IP-Adresse ist in Abbildung 3-24 zu sehen. Abbildung 3-24
Das Dialogfeld Eigenschaften von Microsoft TCP/IP für Windows NT
Markieren Sie den Radio-Button »IP-Adresse angeben« und geben Sie die IP-Adresse des Computers sowie die Netzmaske in den für den entsprechenden Anschluss (Ethernet-Karte) vorgesehenen Platz ein. Sie oder Ihr Netzwerkverwalter sollten für den Client eine Adresse im gleichen Subnetz (LAN) wie der Samba-Server ausgewählt haben. Hat beispielsweise der Server die Adresse 172.16.1.1 und lautet seine Netzmaske 255.255.255.0, könnten Sie die Adresse 172.16.1.13 (falls diese verfügbar ist) für die NT-Workstation sowie die gleiche Netzmaske verwenden. Verwenden Sie in Ihrem Netzwerk DHCP, wählen Sie stattdessen den Button »IPAdresse von einem DHCP-Server beziehen«. Das Gateway-Feld bezieht sich auf ein System, das üblicherweise als Router bezeichnet wird. Haben Sie Router, die an mehrere Netzwerke angeschlossen sind, sollten Sie die IP-Adresse desjenigen eingeben, der sich in Ihrem Subnetz befindet. In unserem Beispiel sind Gateway und Samba-Server ein und dasselbe System, das muss aber nicht so sein. Registerkarte WINS-Adresse: Klicken Sie auf die Registerkarte WINS-Adresse, die in Abbildung 3-25 zu sehen ist. Nun können Sie beginnen, Informationen über die Name-Server einzugeben. Geben Sie die Adresse Ihres WINS-Servers in das Feld ein, das mit Primärer WINS-Server bezeichnet ist. Stellt Ihr Samba-Server den WINS-Dienst zur Verfügung (haben Sie also die Zeile wins support = yes in die Datei smb.conf Ihres Samba-Servers aufgenommen), setzen Sie hier die IP-Adresse des Samba-Servers ein. Geben Sie ansonsten die Adresse eines anderen WINS-Servers in Ihrem Netzwerk ein. Abbildung 3-25
Die Registerkarte WINS-Adresse
Sie haben vermutlich bemerkt, dass es hier ein Feld für die Netzwerkkarte gibt. Dieses Feld muss den Ethernet-Adapter angeben, auf dem Sie TCP/IP ausführen, damit WINS den Namensdienst im richtigen Netzwerk zur Verfügung stellt. Haben Sie zum Beispiel sowohl einen LAN- als auch einen Einwähl-Adapter, müssen Sie dafür sorgen, dass hier die Netzwerkkarte für das LAN angegeben ist. Die Checkboxen in der unteren Hälfte des Dialogfelds dienen dazu, zwei andere Methoden zur Namensauflösung zu aktivieren, die Windows in seinen Namensdienst einbeziehen kann. Samba benötigt zwar keine von beiden, aber möglicherweise wollen Sie sie ja aktivieren, um die Zuverlässigkeit oder die Funktionalität des Namensdienstes für Ihren Client zu erhöhen. In Kapitel 7 finden Sie weitere Informationen zu Fragen der Namensauflösung. Wollen Sie einen DNS-Server benutzen, markieren Sie das Optionsfeld DNS für Windows-Auflösung aktivieren. Außerdem müssen Sie einige Konfigurationen vornehmen, damit das Windows-System den DNS-Server findet. Diese Maßnahmen sind nicht notwendig, wenn Sie DHCP verwenden. Registerkarte DNS: Klicken Sie auf die Registerkarte für DNS, wie in Abbildung 3-26 gezeigt. Geben Sie die IP-Adressen eines oder mehrerer DNS-Server in die entsprechenden Felder ein. Geben Sie außerdem den Hostnamen ein (dieser muss identisch mit dem NetBIOSComputernamen sein). Sie brauchen diese Werte später noch einmal in einem anderen Dialogfeld, achten Sie deshalb darauf, dass sie übereinstimmen. Geben Sie schließlich die DNS-Domain ein, in der sich das System befindet. Trägt Ihre Workstation beispielsweise den Domainnamen metran.cx, geben Sie diesen hier ein. Die anderen Optionen können Sie getrost ignorieren.
Abbildung 3-26 Die Registerkarte DNS
Die LMHOSTS-Datei: Wenn Sie eine LMHOSTS-Datei installieren wollen, müssen Sie diese in das Verzeichnis \system32\drivers\etc unter dem Windows-Installationsverzeichnis (üblicherweise C:\WINNT) legen. Um sicherzustellen, dass die Datei an die richtige Stelle gelangt, führt der einfachste Weg über den Button LMHOSTS importieren auf der Registerkarte WINS-Adresse. (Möchten Sie diese Aktion über das Netzwerk ausführen, müssen Sie zuerst Filesharing installieren!) Denken Sie daran, dass Sie das Optionsfeld LMHOSTS-Abfrage aktivieren auf der Registerkarte WINS-Adresse anklicken müssen, um diese Funktion zu aktivieren. Wenn Sie mit Ihren Einstellungen für die IP-Adresse, die WINS-Adresse und DNS zufrieden sind, klicken Sie auf OK, um in den Netzwerk-Dialog zurückzukehren. Bindungen: Klicken Sie nun auf die Registerkarte Bindungen und prüfen Sie die Bindungen der Netzwerk-Hardware, der Dienste und Protokolle. Setzen Sie das Feld »Anzeige der Bindungen für« auf »Alle Dienste« und klicken Sie auf alle +-Buttons in der Baumdarstellung. Die Darstellung sollte etwa so aussehen wie in Abbildung 3-27. Dort wird gezeigt, dass die NetBIOS-, Server- und Workstation-Schnittstellendienste mit dem WINS-Client verbunden sind, der das TCP/IP-Protokoll ausführt, und dass der WINS-Client an den Ethernet-Adapter des lokalen Netzwerks gebunden ist. Abbildung 3-27 Die Registerkarte Bindungen
Auf den restlichen Registerkarten des Netzwerk-Dialogfelds können Sie guten Gewissens die Vorgabewerte stehen lassen. Klicken Sie auf OK, um die Konfiguration zu vervollständigen. Sobald die richtigen Dateien (falls vorhanden) geladen sind, müssen Sie möglicherweise den Rechner neu starten, damit die Änderungen wirksam werden.
Computername und Arbeitsgruppe Als Nächstes müssen Sie dem System einen NetBIOS-Computernamen geben. Doppelklicken Sie in der Systemsteuerung auf das Netzwerk-Symbol, um das Netzwerk-Dialogfeld zu öffnen. Die erste Registerkarte in diesem Dialog sollte die Registerkarte Identifikation sein, wie in Abbildung 3-28 zu sehen ist. Abbildung 3-28 Die Registerkarte Identifikation
Hier müssen Sie Ihrem Computer einen Namen geben und an Stelle der Standardarbeitsgruppe diejenige Arbeitsgruppe eintragen, die Sie in der Datei smb. conf Ihres Samba-Servers angegeben haben. Klicken Sie auf den Button Ändern unterhalb der beiden Textfelder. Dadurch öffnet sich das Dialogfeld Identifikationsänderungen, in das Sie die Arbeitsgruppe und den Computernamen eintragen können (siehe Abbildung 3-29). Abbildung 3-29 Der Dialog Identifikationsänderungen
Sie haben den Computernamen bereits früher während der Konfiguration von TCP/IP als DNS-Hostnamen eingegeben, achten Sie daher darauf, dass die beiden Namen auch wirklich übereinstimmen. Der Name, den Sie hier festlegen, ist der NetBIOS-Name. Dieser Name darf sich vom TCP/IP-Hostnamen unterscheiden, das ist aber normalerweise keine so gute Idee. Machen Sie sich keine Sorgen darüber, dass Windows NT den Computernamen und die Arbeitsgruppe in Großbuchstaben schreibt; das System ist clever genug herauszufinden, was Sie meinen, wenn es sich mit dem Netzwerk verbindet.
Einen Benutzer anlegen In allen vorangegangenen Schritten haben Sie sich an Ihrem Windows NT-System als Administrator oder als Benutzer aus der Gruppe Administratoren angemeldet. Um auf Ressourcen auf dem Samba-Server zugreifen zu können, benötigen Sie einen Benutzernamen und ein Kennwort, die der Samba-Server als gültig akzeptiert. Im Allgemeinen ist es am besten, wenn Sie Ihrem NT-System einen Benutzer hinzufügen, der den gleichen Benutzernamen und das gleiche Kennwort besitzt wie ein Benutzer auf dem Samba-Hostsystem.
Die Anweisungen in diesem Abschnitt gehen davon aus, dass Ihr Netzwerk als Arbeitsgruppe eingerichtet ist. Falls Sie Ihr Netzwerk bereits als Domäne eingerichtet haben, wie wir in Kapitel 4 beschreiben werden, müssen Sie den Anweisungen zum Anlegen eines lokalen Benutzers auf dem Windows NT-Client-System nicht folgen. Melden Sie sich von dem Client aus einfach an der Domäne an, indem Sie einen Benutzernamen und ein Kennwort aus Sambas smbpasswd-Datenbank verwenden, und fahren Sie mit dem nächsten Abschnitt »Mit dem Samba-Server verbinden« fort. Um einen neuen Benutzer anzulegen, öffnen Sie das Start-Menü, navigieren durch das Programme-Untermenü zum Punkt Verwaltung (Allgemein) und wählen BenutzerManager. Klicken Sie auf das Menü Benutzer und wählen Sie den ersten Eintrag Neuer Benutzer..., wie in Abbildung 3-30 dargestellt. Abbildung 3-30 Das Fenster Benutzer-Manager
Dadurch öffnet sich das Dialogfeld Neuer Benutzer (siehe Abbildung 3-31). Abbildung 3-31 Der Dialog Neuer Benutzer
Füllen Sie es mit dem Benutzernamen und dem Kennwort aus, die Sie im vorherigen Kapitel hinzugefügt haben. Achten Sie darauf, dass nur das Optionsfeld mit der Bezeichnung Kennwort läuft nie ab markiert ist. (Das ist nicht voreingestellt!) Klicken Sie auf den Button Hinzufügen, um den Benutzer anzulegen. Anschließend klicken Sie auf Schliessen. Der neue Account sollte nun in die Liste des Dialogs BenutzerManager aufgenommen worden sein. Öffnen Sie jetzt das Start-Menü, wählen Sie Beenden und markieren Sie den RadioButton »Anwendungen schließen und als neuer Benutzer anmelden«. Klicken Sie auf den Button Ja und melden Sie sich als der neue Benutzer an.
Mit dem Samba-Server verbinden
Jetzt kommt der große Augenblick. Ihr Samba-Server läuft, und Sie haben Ihren NTClient so eingerichtet, dass er mit ihm kommuniziert. Doppelklicken Sie auf das Symbol der Netzwerkumgebung auf dem Desktop. Ihr Samba-Server sollte nun als Mitglied der Arbeitsgruppe aufgeführt sein, wie in Abbildung 3-32 zu sehen. Abbildung 3-32 Die Netzwerkumgebung unter Windows NT
Wenn Sie auf den Server-Namen doppelklicken, werden die Ressourcen angezeigt, die der Server im Netzwerk anbietet (siehe Abbildung 3-33). In diesem Fall werden der Windows NT-Workstation das Verzeichnis test und der Standarddrucker zur Verfügung gestellt. Abbildung 3-33 Vom Server Toltec angebotene Freigaben
Keine Panik, falls der Server nicht zu sehen ist. Wählen Sie Ausführen... aus dem Start-Menü. Ein Dialogfeld wird geöffnet, in das Sie den Namen Ihres Servers sowie sein freigegebenes Verzeichnis im Windows-Format eingeben können. Sie würden beispielsweise \\toltec\test eintippen, wie in Abbildung 3-34 demonstriert wird. An Stelle von »toltec« setzen Sie den Hostnamen Ihres Servers ein. Abbildung 3-34 Das Öffnen eines freigegebenen Verzeichnisses mit Hilfe des NetBIOSNamens des Servers in der UNC
Das funktioniert sogar, wenn die Suchdienste nicht richtig eingerichtet sind, was ein häufig auftretendes Problem darstellt. Sie können ein Problem mit dem Namensdienst auch umgehen, indem Sie die IP-Adresse des Servers (etwa 172.16.1.1 in unserem Beispiel) an Stelle des Hostnamens des Samba-Servers einsetzen, wie in Abbildung 335 gezeigt. Prüfen Sie erneut Ihre Konfiguration. Falls immer noch Fehler auftreten, lesen Sie den Abschnitt »Der Fehlerbaum« in Kapitel 12, um die Probleme zu beheben, die im Netzwerk vorliegen. Abbildung 3-35 Das Öffnen eines freigegebenen Verzeichnisses mit Hilfe der IP-Adresse des Servers in der UNC
Herzlichen Glückwunsch, wenn alles funktioniert! Versuchen Sie, Dateien zum und vom Server zu kopieren, indem Sie deren Symbole zum bzw. vom Ordner der SambaFreigabe ziehen. Sie werden freudig überrascht sein, wie gut das geht.
Windows 2000-Computer einrichten Windows 2000 beruht zwar auf der NT-Technik und funktioniert in vielerlei Hinsicht ähnlich wie Windows NT, die Konfiguration für die Benutzung mit Samba ist jedoch anders. Sie müssen die folgenden Schritte als Administrator oder als Benutzer aus der Gruppe Administratoren ausführen.
Netzwerkkomponenten Doppelklicken Sie in der Systemsteuerung auf das Symbol Netzwerk und DFÜVerbindungen. Sie sollten wenigstens ein LAN-Verbindung-Symbol sehen können. Gibt es mehr als eines, ermitteln Sie dasjenige, das dem Netzwerk-Adapter entspricht, der mit Ihrem Samba-Netzwerk verbunden ist. Klicken Sie mit der rechten
Maustaste auf das LAN-Verbindung-Symbol und wählen Sie den Befehl Eigenschaften. (Oder doppelklicken Sie auf das LAN-Verbindung-Symbol und klicken Sie in dem sich öffnenden Dialog auf den Button Eigenschaften.) Sie sollten jetzt das Dialogfeld Eigenschaften von LAN-Verbindung sehen, das in Abbildung 3-36 dargestellt wird. Abbildung 3-36 Der Windows 2000-Dialog Eigenschaften von LAN-Verbindung
Zuallererst werden Sie auf den Button Konfigurieren unter dem Feld für den Netzwerk-Adapter klicken wollen, um sicherzugehen, dass Sie die Meldung »Das Gerät ist betriebsbereit« im Gerätestatus-Fenster sehen. Gibt es ein Problem, korrigieren Sie dies, bevor Sie weitermachen. Sie sollten außerdem die Meldung »Gerät verwenden (aktivieren)« im Geräteverwendung-Feld des Dialogs sehen. Stellen Sie dieses Feld entsprechend ein, falls das noch nicht geschehen ist. Klicken Sie auf OK oder Abbrechen, um wieder in den Dialog Eigenschaften von LANVerbindung zu gelangen. Sie müssen wenigstens die folgenden beiden Komponenten sehen: ● ●
Client für Microsoft-Netzwerke Internetprotokoll (TCP/IP)
Falls weder Client für Microsoft-Netzwerke noch Internetprotokoll (TCP/IP) in Ihrer Liste auftauchen, müssen Sie diese hinzufügen. Dazu klicken Sie bei beiden Komponenten auf den Button Installieren..., wählen die Art der Komponente (Client oder Protokoll) und klicken dann auf den Button Hinzufügen... Wählen Sie als Nächstes die Komponente aus, die Sie hinzufügen wollen, und klicken Sie dann auf den OK-Button. Die Komponente muss nun in der Liste mit den anderen Komponenten auftauchen.
Einige Komponenten sollten aus der Liste entfernt werden: ● ● ● ●
NetBEUI-Protokoll NWLink NetBIOS NWLink IPX/SPX/NetBIOS-kompatibles Transportprotokoll Client Service für Netware
Falls Sie neben TCP/IP ein weiteres Protokoll in der Liste sehen und es sich nicht um ein benötigtes Protokoll handelt, können Sie es entfernen. Deinstallieren Sie NetBEUI, es sei denn, Sie sind sich sicher, dass Sie es brauchen, sowie auch die anderen drei, falls Sie Netware nicht unterstützen müssen. Erhalten Sie bei dem Versuch, ein Protokoll zu löschen, eine Fehlermeldung, die besagt, dass das Protokoll von einem anderen Dienst verwendet wird, müssen Sie zuerst diesen Dienst entfernen, bevor Sie das Protokoll löschen können. Um beispielsweise das NWLink IPX/SPX-kompatible Transportprotokoll löschen zu können, müssen Sie zuerst den Client Service für Netware entfernen. Um eine Komponente zu entfernen, wählen Sie die Komponente in der Liste aus, klicken dann auf Deinstallieren und anschließend im sich öffnenden Dialogfeld auf Ja. Manchmal muss Windows anschließend neu starten, damit die Änderung wirksam wird.
Bindungen Neben jedem Client, Dienst oder Protokoll im Dialog Eigenschaften von LANVerbindung sehen Sie ein Optionsfeld. Stellen Sie sicher, dass sowohl das Optionsfeld für Client für Microsoft-Netzwerke als auch das für Internetprotokoll (TCP/IP) aktiviert ist. Dadurch wird angezeigt, dass die Netzwerkkomponenten an den NetzwerkAdapter gebunden sind, der im oberen Teil des Dialogfelds zu sehen ist.
TCP/IP konfigurieren Klicken Sie nun auf Internetprotokoll (TCP/IP) und danach auf Eigenschaften, um den Dialog Eigenschaften von Internetprotokoll (TCP/IP) zu öffnen, den Sie in Abbildung 337 sehen können. Abbildung 3-37 Der Dialog Eigenschaften von Internetprotokoll (TCP/IP)
IP-Adresse Falls Sie in Ihrem Netzwerk DHCP verwenden, um IP-Adressen dynamisch zuzuweisen, wählen Sie den Radio-Button »IP-Adresse automatisch beziehen«. Ansonsten wählen Sie den Radio-Button »Folgende IP-Adresse verwenden:« und setzen die IP-Adresse des Computers sowie die Netzmaske in den entsprechenden Feldern ein. Sie oder Ihr Netzwerkverwalter sollten für den Client eine Adresse im gleichen Subnetz (LAN) wie der Samba-Server gewählt haben. Lautet beispielsweise die Adresse des Servers 172.16.1.1 und seine Netzmaske 255.255.255.0, könnten Sie die Adresse 172.16.1.14 verwenden, falls sie zur Verfügung steht, sowie die gleiche Netzmaske. Sie können außerdem die IP-Adresse des Standard-Gateways einsetzen. DNS-Server Klicken Sie im unteren Teil des Dialogs auf den Radio-Button »Folgende DNSServeradressen verwenden:« und setzen Sie die IP-Adresse Ihres DNS-Servers ein. Klicken Sie nun auf den Button Erweitert..., um den Dialog Erweiterte TCP/IPEinstellungen zu öffnen, und wählen Sie dort die Registerkarte WINS. WINS-Server
Geben Sie die Adresse Ihres WINS-Servers in das Feld mit der Bezeichnung »WINSAdressen in Verwendungsreihenfolge:« ein. Stellt Ihr Samba-Server einen WINSDienst zur Verfügung (mit anderen Worten, haben Sie die Zeile wins service = yes in die Datei smb.conf Ihres Samba-Servers aufgenommen), geben Sie hier die IPAdresse des Samba-Servers an. Setzen Sie ansonsten die Adresse eines anderen WINS-Servers in Ihrem Netzwerk ein. Abbildung 3-38 Der Dialog Erweiterte TCP/IP-Einstellungen mit der Registerkarte WINS
Wählen Sie im unteren Teil des Dialogfelds den Radio-Button »NetBIOS über TCP/IP aktivieren«. Abbildung 3-38 zeigt, wie der Dialog Erweiterte TCP/IP-Einstellungen jetzt aussehen sollte. Die LMHOSTS-Datei Falls Sie eine LMHOSTS-Datei installieren wollen, platzieren Sie diese in das Verzeichnis \system32\drivers\etc unterhalb Ihres WindowsInstallationsverzeichnisses (normalerweise C:\WINNT ). Der einfachste Weg sicherzustellen, dass die Datei an die richtige Stelle gelangt, führt über einen Klick auf den Button LMHOSTS importieren auf der Registerkarte WINS. (Möchten Sie diese Aktion über das Netzwerk ausführen, müssen Sie zuerst Filesharing installieren!) Denken Sie daran, dass Sie das Optionsfeld LMHOSTS-Abfrage aktivieren auf der Registerkarte WINS anklicken müssen, um diese Funktion zu aktivieren. Wenn Sie mit den Einstellungen für die IP-Adresse, die WINS-Adresse und DNS zufrieden sind, betätigen Sie die OK-Buttons in den jeweiligen Dialogen, um die
Konfiguration zu vervollständigen. Windows muss unter Umständen einige Dateien von der Windows 2000-CD-ROM laden, und eventuell müssen Sie den Rechner neu starten, damit die Änderungen wirksam werden.
Computer- und Arbeitsgruppennamen Doppelklicken Sie in der Systemsteuerung auf das System-Symbol, um das Dialogfeld Systemeigenschaften zu öffnen. Klicken Sie auf die Registerkarte Netzwerkidentifikation. Der Dialog sieht jetzt etwa so aus, wie in Abbildung 3-39 dargestellt. Abbildung 3-39 Der Dialog Systemeigenschaften mit der Registerkarte Netzwerkidentifikation
Um Ihrem Computer einen Namen und eine Arbeitsgruppe zu geben, klicken Sie auf den Button Eigenschaften. Dadurch öffnet sich der Dialog Änderungen der Benutzerinformationen (siehe Abbildung 3-40). Abbildung 3-40 Der Dialog Änderungen der Benutzerinformationen
Sie müssen Ihren Computer mit einem Namen versehen und die Arbeitsgruppe entsprechend der von Ihnen in der Datei smb.conf Ihres Samba-Servers angegebenen Gruppe ändern. Kümmern Sie sich nicht darum, dass Windows den Computernamen und die Arbeitsgruppe in Großbuchstaben schreibt; es ist clever genug herauszufinden, was Sie meinen, wenn es eine Verbindung zum Netzwerk aufnimmt. Klicken Sie auf den Button Erweitert..., um den Dialog DNS-Suffix und NetBIOSComputername zu öffnen, der in Abbildung 3-41 zu sehen ist. Abbildung 3-41 Der Dialog DNS-Suffix und NetBIOSComputername
Geben Sie den DNS-Domainnamen dieses Computers in das mit Primäres DNS-Suffix des Computers: bezeichnete Feld ein und klicken Sie dann auf OK. Sie sollten nun den vollständigen Namen (FQDN) dieses Systems unter der Bezeichnung »Vollständiger Computername:« sehen. Klicken Sie auf OK und starten Sie bei der entsprechenden Aufforderung den Rechner neu, um die Änderungen der
Konfiguration wirksam werden zu lassen. Melden Sie sich erneut mit Ihrem Administratorzugang an.
Es gab Berichte über Probleme mit der Authentifizierung bei Samba, wenn ein Benutzername auf einem Windows 2000-System identisch ist mit seinem Computernamen.
Anlegen eines Benutzers mit Zugriff auf Samba Bisher waren Sie an Ihrem Windows 2000-System als Benutzer aus der Administratoren-Gruppe angemeldet. Um auf Ressourcen auf dem Samba-Server zuzugreifen, benötigen Sie einen Benutzernamen und ein Kennwort, die vom SambaServer als gültig erkannt werden. Verfügt Ihr administrativer Zugang über einen solchen Benutzernamen und ein solches Kennwort, können Sie diese verwenden. Aber vermutlich wollen Sie auf Ihr System und das Netzwerk lieber von einem nichtadministrativen Zugang aus zugreifen.
Die Anweisungen in diesem Abschnitt gehen davon aus, dass Sie Ihr Netzwerk als Arbeitsgruppe eingerichtet haben. Falls Sie Ihr Netzwerk dagegen bereits als Domäne eingerichtet haben, was wir in Kapitel 4 beschreiben werden, müssen Sie den Anweisungen zum Anlegen eines lokalen Benutzers auf dem Windows 2000Client-System nicht folgen. Melden Sie sich an der Domäne einfach mit einem Benutzernamen und einem Kennwort aus der smbpasswd-Datenbank von Samba an und fahren Sie mit dem nächsten Abschnitt »Mit dem Samba-Server verbinden« fort. Um einen neuen Benutzer anzulegen, öffnen Sie die Systemsteuerung und doppelklicken auf das Symbol Benutzer und Kennwörter, um den Dialog Benutzer und Kennwörter, zu sehen in Abbildung 3-42, zu öffnen. Abbildung 3-42 Der Dialog Benutzer und Kennwörter
Zuerst müssen Sie sicherstellen, dass das Optionsfeld mit der Bezeichnung »Benutzer müssen für den Computer Benutzernamen und Kennwort eingeben.« aktiviert ist. Klicken Sie als Nächstes auf den Button Hinzufügen..., um das erste Dialogfeld des Assistenten zum Hinzufügen eines neuen Benutzers (siehe Abbildung 3-43) zu öffnen. Abbildung 3-43 Einen neuen Benutzer anlegen
Füllen Sie die vorhandenen Felder aus. Verwenden Sie dabei den Benutzernamen eines gültigen Benutzerzugangs auf dem Samba-Host und klicken Sie dann auf Weiter >, um das Kennwort des Benutzers einzugeben und zu bestätigen. Dieses Kenwort muss mit dem Kennwort des Benutzers auf dem Samba-Host
übereinstimmen. Falls Sie verschlüsselte Kennwörter benutzen, achten Sie darauf, dass dieser Benutzername und dieses Kennwort mit denjenigen identisch sind, die Sie beim Ausführen des smbpasswd-Programms verwendet haben. Klicken Sie nochmals auf Weiter >. Dadurch öffnet sich der letzte Dialog, den Sie in Abbildung 3-44 sehen können. Abbildung 3-44 Festlegen einer Gruppe für den neuen Benutzer
Wählen Sie eine Gruppe für den Benutzer (die vorgegebene Gruppe Standardbenutzer sollte in Ordnung sein) und klicken Sie auf den Button Fertig stellen. Der neue Zugang muss nun in der Liste des Dialogfelds Benutzer und Kennwörter auftauchen. Klicken Sie auf OK, um den Vorgang abzuschließen. Kehren Sie nun in das Fenster Benutzer und Kennwörter der Systemsteuerung zurück und wählen Sie die Registerkarte Erweitert. Klicken Sie anschließend auf den Button Erweitert. Klicken Sie auf den Ordner Benutzer auf der linken Seite des sich öffnenden Fensters Lokale Benutzer und Gruppen und doppelklicken Sie dann auf der rechten Seite des Fensters auf den Zugang, den Sie gerade angelegt haben. Es erscheint das Fenster Eigenschaften. Dort aktivieren Sie das Optionsfeld mit der Bezeichnung Kennwort läuft nie ab. Sie sind fertig! Betätigen Sie in allen Dialogboxen die OK-Buttons und schließen Sie alle offenen Fenster. Öffnen Sie das Start-Menü, klicken Sie auf Beenden und wählen Sie Benutzername abmelden aus dem Drop-down-Menü. Klicken Sie auf OK und melden Sie sich dann unter dem Benutzernamen an, den Sie gerade angelegt haben.
Mit dem Samba-Server verbinden Jetzt kommt der große Augenblick. Ihr Samba-Server läuft, und Sie haben Ihren Windows 2000-Client so eingerichtet, dass er mit ihm kommuniziert. Doppelklicken Sie zuerst auf das Symbol Netzwerkumgebung auf dem Desktop und anschließend auf das Symbol Benachbarte Computer, um die Arbeitsgruppe zu durchsuchen. Sie sollten den Samba-Server als Mitglied der Arbeitsgruppe aufgeführt sehen, wie in
Abbildung 3-45 dargestellt wird. Abbildung 3-45 Das Fenster Benachbarte Computer, in dem die Computer in der Arbeitsgruppe zu sehen sind
Wenn Sie auf den Server-Namen doppelklicken, werden die Ressourcen angezeigt, die der Server dem Netzwerk anbietet (siehe Abbildung 3-46). Abbildung 3-46 Vom Server Toltec angebotene Freigaben
In diesem Fall werden der Windows 2000-Workstation das Verzeichnis test und der Standarddrucker angeboten. Keine Panik, falls Sie den Server nicht in der Liste sehen. Wählen Sie Ausführen aus dem Start-Menü. Im sich öffnenden Dialog können Sie den Namen Ihres Servers und seines freigegebenen Verzeichnisses im WindowsFormat eingeben. Sie würden beispielsweise \\toltec\test tippen, wie in Abbildung 347 gezeigt. Natürlich setzen Sie an Stelle von »toltec« den Hostnamen Ihres Servers ein. Abbildung 3-47 Das Öffnen eines freigegebenen Verzeichnisses mit Hilfe des NetBIOS-Namens des Servers in der UNC
Das funktioniert sogar, wenn die Suchdienste nicht richtig eingerichtet sind, was ein häufig auftretendes Problem darstellt. Sie können ein Problem mit dem Namensdienst auch umgehen, indem Sie die IP-Adresse des Servers (wie etwa 172.16.1.1 in unserem Beispiel) an Stelle des Hostnamens des Samba-Servers eingeben, wie in Abbildung 3-48 gezeigt wird. Abbildung 3-48 Das Öffnen eines freigegebenen Verzeichnisses mit Hilfe der IP-Adresse des Servers in der UNC
Falls all dies nicht hilft, lesen Sie den Abschnitt »Der Fehlerbaum« in Kapitel 12, um
Probleme mit dem Netzwerk zu beheben. Wir gratulieren Ihnen, wenn alles funktioniert! Versuchen Sie, Dateien zum und vom Server zu kopieren. Sie werden freudig überrascht sein, wie gut alles geht. Nachdem Sie nun den Samba-Server und seine Clients eingerichtet haben, können Sie mit dem nächsten Kapitel fortfahren.
Windows XP-Computer einrichten Windows XP ist Windows 2000 zwar sehr ähnlich, allerdings besitzt es eine andere Benutzeroberfläche. Außerdem gibt es eine Reihe feiner Unterschiede. Beispielsweise verläuft der Weg zur Systemsteuerung anders als in vorangegangenen WindowsVersionen - man muss auf den Eintrag Systemsteuerung im Start-Menü klicken (es gibt keinen Eintrag namens Einstellungen im Start-Menü von XP). XP zeigt die Systemsteuerung standardmäßig in der Kategorienansicht. Klicken Sie in diesem Fall auf Zur klassischen Ansicht wechseln in der oberen linken Ecke des Fensters. Unsere Anweisungen beziehen sich auf das Arbeiten mit der Systemsteuerung in der klassischen Ansicht. Sie müssen die folgenden Schritte als Administrator oder als Benutzer aus der Gruppe Administratoren ausführen.
Netzwerkkomponenten Doppelklicken Sie in der Systemsteuerung auf das Symbol Netzwerk- und DFÜVerbindungen. Sie sollten wenigstens ein LAN-Verbindung-Symbol sehen. Gibt es mehr als eines, ermitteln Sie dasjenige, das dem Netzwerk-Adapter entspricht, der an Ihr Samba-Netzwerk angeschlossen ist. Klicken Sie mit der rechten Maustaste auf das LAN-Verbindung-Symbol und wählen Sie Eigenschaften aus dem Menü. (Oder doppelklicken Sie auf das LAN-Verbindung-Symbol und klicken Sie dann auf den Eigenschaften-Button im sich öffnenden Dialog.) Sie müssten nun den Dialog Eigenschaften von LAN-Verbindung vor sich haben, wie in Abbildung 3-49 gezeigt. Abbildung 3-49 Der Dialog Eigenschaften von LANVerbindung
Zuallererst werden Sie auf den Button Konfigurieren unter dem Feld für den Netzwerk-Adapter klicken wollen, um sicherzugehen, dass Sie die Meldung »Gerät ist betriebsbereit« im Gerätestatus-Fenster sehen. Gibt es ein Problem, korrigieren Sie dies, bevor Sie weitermachen. Sie sollten außerdem die Meldung »Gerät verwenden (aktivieren)« im Geräteverwendung-Feld des Dialogs sehen. Stellen Sie dieses Feld entsprechend ein, falls das noch nicht geschehen ist. Klicken Sie auf OK oder Abbrechen, um wieder in den Dialog Eigenschaften von LAN-Verbindung zu gelangen. Sie sollten wenigstens die folgenden beiden Komponenten sehen: ● ●
Client für Microsoft-Netzwerke Internetprotokoll (TCP/IP)
Falls weder Client für Microsoft-Netzwerke noch Internetprotokoll (TCP/IP) in Ihrer Liste auftauchen, müssen Sie diese hinzufügen. Dazu klicken Sie bei beiden Komponenten auf den Button Installieren..., wählen die Art der Komponente (Client oder Protokoll) und klicken dann auf den Button Hinzufügen... Wählen Sie als Nächstes die Komponente aus, die Sie hinzufügen wollen, und klicken Sie dann auf den OK-Button. Die Komponente muss nun in der Liste mit den anderen Komponenten auftauchen. Falls Sie neben TCP/IP ein weiteres Protokoll in der Liste sehen und es sich nicht um ein benötigtes Protokoll handelt, können Sie es entfernen. Taucht NetBEUI in der Liste auf, dann deinstallieren Sie es nach Möglichkeit. Deinstallieren Sie auch alle mit Netware zusammenhängenden Komponenten, wenn Sie Netware nicht unterstützen müssen. Erhalten Sie bei dem Versuch, ein Protokoll zu löschen, eine Fehlermeldung, die besagt, dass das Protokoll von einem anderen Dienst verwendet wird, müssen Sie zuerst diesen Dienst entfernen, bevor Sie das Protokoll löschen können. Um beispielsweise das NWLink IPX/SPX-kompatible Transportprotokoll löschen zu können, müssen Sie zuerst den Client Service für Netware entfernen. Um eine Komponente zu entfernen, klicken Sie darauf, anschließend auf den Button Deinstallieren und dann in der sich öffnenden Dialogbox auf Ja. Manchmal müssen Sie Windows neu starten, um die Änderungen wirksam werden zu lassen.
Bindungen Neben jedem Client, Dienst oder Protokoll im Dialog Eigenschaften von LANVerbindung sehen Sie ein Optionsfeld. Stellen Sie sicher, dass sowohl das Optionsfeld für Client für Microsoft-Netzwerke als auch das für Internetprotokoll (TCP/IP) aktiviert ist. Dadurch wird angezeigt, dass die Netzwerkkomponenten an den NetzwerkAdapter gebunden sind, der im oberen Teil des Dialogs zu sehen ist.
TCP/IP konfigurieren Klicken Sie nun auf Internetprotokoll (TCP/IP) und danach auf Eigenschaften, um den Dialog Eigenschaften von Internetprotokoll (TCP/IP) zu öffnen, den Sie in Abbildung 350 sehen können. Abbildung 3-50 Der Dialog Eigenschaften von Internetprotokoll (TCP/IP)
IP-Adresse Falls Sie in Ihrem Netzwerk DHCP verwenden, um IP-Adressen dynamisch
zuzuweisen, wählen Sie den Radio-Button »IP-Adresse automatisch beziehen«. Ansonsten wählen Sie den Radio-Button »Folgende IP-Adresse verwenden:« und setzen die IP-Adresse des Computers sowie die Netzmaske in den entsprechenden Feldern ein. Sie oder Ihr Netzwerkverwalter sollten für den Client eine Adresse im gleichen Subnetz (LAN) wie der Samba-Server gewählt haben. Lautet beispielsweise die Adresse des Servers 172.16.1.1 und seine Netzmaske 255.255.255.0, könnten Sie die Adresse 172.16.1.12 verwenden, falls sie zur Verfügung steht, sowie die gleiche Netzmaske. Sie können außerdem die IP-Adresse des Standard-Gateways einsetzen. DNS-Server Klicken Sie im unteren Teil des Dialogfelds auf den Radio-Button »Folgende DNSServeradressen verwenden:« und setzen Sie die IP-Adresse Ihres DNS-Servers ein. Nun klicken Sie auf den Button Erweitert..., um den Dialog Erweiterte TCP/IPEinstellungen zu öffnen. Dort wählen Sie die Registerkarte WINS. WINS-Server Geben Sie die Adresse Ihres WINS-Servers in das Feld mit der Bezeichnung »WINSAdressen in Verwendungsreihenfolge:« ein. Stellt Ihr Samba-Server den WINS-Dienst zur Verfügung (mit anderen Worten, gibt es die Zeile wins support = yes in der Datei smb.conf Ihres Samba-Servers), geben Sie hier die IP-Adresse des Samba-Servers an. Setzen Sie ansonsten die Adresse eines anderen WINS-Servers in Ihrem Netzwerk ein. Wählen Sie im unteren Teil des Dialogfelds den Radio-Button mit der Bezeichnung NetBIOS über TCP/IP aktivieren. Abbildung 3-51 zeigt, wie der Dialog Erweiterte TCP/ IP-Einstellungen an dieser Stelle aussehen sollte. Abbildung 3-51 Der Dialog Erweiterte TCP/IP-Einstellungen mit der Registerkarte WINS
Die LMHOSTS-Datei Falls Sie eine LMHOSTS-Datei installieren wollen, platzieren Sie diese in das Verzeichnis \system32\drivers\etc unterhalb Ihres WindowsInstallationsverzeichnisses (normalerweise C:\WINNT ). Am sichersten platzieren Sie die Datei an der richtigen Stelle, wenn Sie auf den Button LMHOSTS importieren auf der Registerkarte WINS klicken. (Möchten Sie diese Aktion über das Netzwerk ausführen, müssen Sie zuerst Filesharing installieren!) Denken Sie daran, dass Sie das Optionsfeld LMHOSTS-Abfrage aktivieren auf der Registerkarte WINS anklicken müssen, um diese Funktion zu aktivieren. Wenn Sie mit den Einstellungen für die IP-Adresse, die WINS-Adresse und DNS zufrieden sind, betätigen Sie die OK-Buttons in den jeweiligen Dialogen (und den Button Schliessen im Dialogfeld Eigenschaften von LAN-Verbindung), um die Konfiguration zu vervollständigen. Windows muss unter Umständen einige Dateien von der Windows XP-CD-ROM laden, und eventuell müssen Sie den Rechner neu starten, damit die Änderungen wirksam werden.
Computer- und Arbeitsgruppennamen Doppelklicken Sie in der Systemsteuerung auf das Symbol System, um den Dialog
Systemeigenschaften zu öffnen. Klicken Sie auf die Registerkarte Computername. Der Dialog sieht jetzt so ähnlich aus wie der in Abbildung 3-52. Abbildung 3-52 Der Dialog Systemeigenschaften mit der Registerkarte Computername
Um Ihrem Computer einen Namen und eine Arbeitsgruppe zu geben, klicken Sie auf den Button Ändern... Daraufhin wird der Dialog Computername ändern geöffnet (siehe Abbildung 3-53). Abbildung 3-53 Der Dialog Computername ändern
Sie müssen Ihren Computer mit einem Namen versehen und die Arbeitsgruppe entsprechend der von Ihnen in der Datei smb.conf Ihres Samba-Servers angegebenen Gruppe ändern. Kümmern Sie sich nicht darum, dass Windows den Computernamen und die Arbeitsgruppe in Großbuchstaben schreibt; es ist clever genug herauszufinden, was Sie meinen, wenn es eine Verbindung zum Netzwerk aufnimmt. Klicken Sie auf den Button Weitere..., um den Dialog DNS-Suffix und NetBIOSComputername, zu sehen in Abbildung 3-54, zu öffnen. Abbildung 3-54 Der Dialog DNS-Suffix und NetBIOSComputername
Geben Sie den DNS-Domainnamen dieses Computers in das Feld mit der Bezeichnung Primäres DNS-Suffix des Computers: ein und klicken Sie auf OK. Sie müssten nun den vollqualifizierten Domainnamen (FQDN) dieses Systems unter der Bezeichnung Vollständiger Computername: im Dialogfeld Computername ändern sehen. Klicken
Sie auf den OK-Button und starten Sie den Rechner neu, um die Änderungen wirksam werden zu lassen. Melden Sie sich erneut unter Ihrem Administratorzugang an.
Es gab Berichte über Probleme mit der Authentifizierung bei Samba, wenn ein Benutzername auf einem Windows XP-System identisch mit seinem Computernamen ist.
Anlegen eines Benutzers mit Zugriff auf Samba Bisher waren Sie an Ihrem Windows XP-System als Benutzer aus der Administratoren-Gruppe angemeldet. Um auf Ressourcen auf dem Samba-Server zuzugreifen, benötigen Sie einen Benutzernamen und ein Kennwort, die vom SambaServer als gültig erkannt werden. Verfügt Ihr administrativer Zugang über einen solchen Benutzernamen und ein solches Kennwort, können Sie diese verwenden. Aber vermutlich wollen Sie auf Ihr System und das Netzwerk lieber von einem nichtadministrativen Zugang aus zugreifen.
Die Anweisungen in diesem Abschnitt gehen davon aus, dass Ihr Netzwerk als Arbeitsgruppe eingerichtet ist. Haben Sie Ihr Netzwerk jedoch bereits als Domäne eingerichtet, was wir in Kapitel 4 beschreiben werden, müssen Sie die Anweisungen zum Anlegen eines lokalen Benutzers auf dem Windows XP-ClientSystem nicht befolgen. Melden Sie sich an der Domäne einfach von dem Client aus an, wobei Sie einen Benutzernamen und ein Kennwort aus der smbpasswd-Datenbank von Samba verwenden, und fahren Sie mit dem nächsten Abschnitt »Mit dem SambaServer verbinden« fort. Um einen neuen Benutzer anzulegen, öffnen Sie die Systemsteuerung und doppelklicken auf das Symbol Benutzerkonten. Dadurch öffnet sich das Benutzerkonten-Fenster, das Sie in Abbildung 3-55 sehen können. Abbildung 3-55 Das Benutzerkonten-Fenster
Klicken Sie auf die Aufgabe Neues Konto erstellen. Das Fenster, das Sie in Abbildung 3-56 sehen können, erscheint. Geben Sie einen Benutzernamen ein und klicken Sie anschließend auf den Weiter >-Button. Abbildung 3-56 Den Benutzernamen eingeben
Klicken Sie nun auf den Radio-Button mit der Bezeichnung »Eingeschränkt« (siehe Abbildung 3-57). Wenn Sie auf den Button Konto erstellen klicken, sehen Sie den Benutzernamen, den Sie gerade angelegt haben, neben einem Bild im unteren Teil des BenutzerkontenFensters. Sie müssen dem Zugang aber noch ein Kennwort zuweisen. Klicken Sie auf den Zugang, um das Fenster »Was möchten Sie am Konto von benutzer ändern?« zu öffnen. Anschließend klicken Sie auf Kennwort erstellen. Geben Sie das Kennwort ein. Zur Bestätigung müssen Sie es danach noch einmal eingeben. Abbildung 3-57 Die Art des Kontos festlegen
Dieses Kennwort muss mit dem Kennwort des Benutzers auf dem Samba-Host identisch sein. Falls Sie verschlüsselte Kennwörter verwenden, müssen Sie sicherstellen, dass dieser Benutzername und dieses Kennwort denjenigen entsprechen, die Sie beim Ausführen des Programms smbpasswd verwendet haben. Wenn Sie auf den Button Kennwort erstellen klicken, sind Sie mit dem Anlegen des Benutzers fertig. Öffnen Sie nun das Start-Menü und klicken Sie auf den Button Abmelden. Im sich öffnenden Dialog Windows abmelden müssen Sie erneut den Button Abmelden betätigen. Wenn Windows den Anmeldebildschirm präsentiert, klicken Sie einfach auf den gerade angelegten Benutzer und geben dann das Kennwort ein, um sich anzumelden.
Mit dem Samba-Server verbinden Jetzt kommt der große Augenblick. Ihr Samba-Server läuft, und Sie haben Ihren Windows XP-Client so eingerichtet, dass er mit ihm kommuniziert. Wählen Sie im Start-Menü Arbeitsplatz9, um das Fenster Arbeitsplatz zu öffnen. Klicken Sie auf Netzwerkumgebung im Feld Andere Orte im linken Teil des Fensters. Sie sollten ein Ordnersymbol für das Verzeichnis test sehen (siehe Abbildung 3-58).
Abbildung 3-58 Das Fenster Netzwerkumgebung
Klicken Sie nun auf Arbeitsgruppencomputer anzeigen im Feld Netzwerkaufgaben auf der linken Seite des Fensters. Ihr Samba-Server sollte als Mitglied der Arbeitsgruppe aufgelistet sein. Wenn Sie auf sein Symbol doppelklicken, sehen Sie ein Fenster, das so ähnlich aussieht, wie das in Abbildung 3-59 gezeigte. Abbildung 3-59 Vom Server Toltec angebotene Freigaben
Keine Panik, falls der Server in der Liste der Arbeitsgruppe nicht auftaucht. Wählen Sie Ausführen... aus dem Start-Menü. Im sich öffnenden Dialogfeld können Sie den Namen Ihres Servers sowie sein freigegebenes Verzeichnis im Windows-Format eingeben. Sie würden beispielsweise \\toltec\test tippen, wie in Abbildung 3-60 zu sehen. An Stelle von »toltec« benutzen Sie den Hostnamen Ihres Servers. Abbildung 3-60 Das Öffnen eines freigegebenen Verzeichnisses mit Hilfe des NetBIOS-Namens des Servers in der UNC
Dies funktioniert sogar, wenn die Suchdienste nicht richtig eingerichtet sind, was ein häufig auftretendes Problem darstellt. Sie können auch ein Problem mit dem Namensdienst umgehen, indem Sie die IP-Adresse des Servers (wie etwa 172.16.1.1 in unserem Beispiel) an Stelle des Hostnamens des Samba-Servers eingeben, wie in Abbildung 3-61 demonstriert wird. Abbildung 3-61
Das Öffnen eines freigegebenen Verzeichnisses mit Hilfe der IP-Adresse des Servers in der UNC
Falls all dies nicht hilft, lesen Sie den Abschnitt »Der Fehlerbaum« in Kapitel 12, um Probleme mit dem Netzwerk zu beheben. Herzlichen Glückwunsch, wenn alles funktioniert! Versuchen Sie, Dateien zum und vom Server zu kopieren, indem Sie deren Symbole in den und aus dem test-Ordner des Samba-Servers ziehen. Sie werden überrascht sein, wie gut alles geht. 1Wir lassen Gerätetreiber absichtlich aus, da diese Hardware-spezifisch sind und wir davon ausgehen, dass Sie vom Hersteller Installationsanweisungen erhalten. 2Achten Sie darauf, dass Sie die gleiche Netzmaske verwenden wie alle anderen Systeme im Netzwerk. Sie ermitteln die verwendete Netzmaske, indem Sie auf Unix- oder Windows-Systemen nachschauen, die bereits konfiguriert wurden. 3Denken Sie daran, dass IP-Adressen, die auf .0 enden, für Netzwerkadressen, und IP-Adressen, die auf .255 enden, für Broadcast-Adressen reserviert sind. Diese dürfen niemals einem anderen System im Netzwerk zugewiesen werden. 4Um genau zu sein, das System meldet sich selbst am Netzwerk als b-Knoten und nicht als h-Knoten an. 5Wir haben die Namen der Dateien LMHOSTS und HOSTS in Großbuchstaben geschrieben, um für zusätzliche Klarheit zu sorgen - um Sie nämlich daran zu erinnern, dass wir uns auf Dateien unter Windows und nicht unter Unix beziehen. Außerdem werden sie auch in anderen Büchern über Windows so geschrieben. Die Schreibweise der Buchstaben in den beiden Dateinamen spielt eigentlich keine Rolle. 6Die Adresse 127.0.0.1 wird als Localhost-Adresse bezeichnet und verweist immer auf sich selbst. Falls Sie beispielsweise auf einem Unix-Server ping 127.0.0.1 eingeben, müssen Sie immer eine Antwort erhalten, da Sie den Host selbst ansprechen. 7Dieses
Update wird in verschiedenen Update-Paketen von Microsoft angeboten.
8Beachten
Sie, dass in Windows NT manche Clients als »Dienste« bezeichnet werden. In diesen Anweisungen werden wir uns an die Microsoft-Terminologie halten. 9Wenn es an dieser Stelle einen Eintrag Netzwerkumgebung im Start-Menü gibt, können Sie ein wenig Zeit sparen und einfach darauf klicken. Es macht nichts, wenn dieser Eintrag jetzt noch nicht zu sehen ist, er erscheint später automatisch.
Kapitel 4 Windows NT-Domänen In den vorangegangenen Kapiteln haben wir uns auf den Netzwerkbetrieb mit Arbeitsgruppen konzentriert, um die Dinge einfach zu halten und Ihnen Netzwerke mit Samba auf eine möglichst schmerzlose Weise näher bringen zu können. Das Arbeiten mit Arbeitsgruppen hat jedoch seine Nachteile. Für viele Computer-Umgebungen lohnen die größere Sicherheit und die einheitlichen Anmeldemöglichkeiten der Windows NT-Domäne den zusätzlichen Aufwand, den die Implementierung einer Domäne mit sich bringt. Neben den Domäneneigenschaften, die in Kapitel 1 besprochen wurden, ermöglicht eine Domäne den Einsatz von Anmeldeskripten und Roaming-Profilen (auch als Roving-Profile bezeichnet). Ein Anmeldeskript ist eine Textdatei mit Befehlen, die während des Starts ausgeführt werden. Ein Profil stellt eine Sammlung von Informationen über die Desktop-Umgebung dar, einschließlich des Inhalts des Start-Menüs, der Symbole, die auf dem Desktop auftauchen, und anderer Charakteristika der grafischen Oberfläche, die von den Benutzern an ihre Wünsche angepasst werden können. Ein Roaming-Profil kann seinem Besitzer von Computer zu Computer folgen und lässt diesen dadurch immer in seiner vertrauten Umgebung arbeiten, unabhängig davon, von welchem Rechner er sich anmeldet. Eine Windows NT-Domäne bietet zentralisierte Kontrolle über das Netzwerk. Von einem Administrator können Richtlinien eingerichtet werden, um Aspekte der Umgebung des Benutzers zu definieren und die Kontrolle zu begrenzen, die dieser über das Netzwerk und dessen Computer haben kann. Administratoren können auch von jeder Windows NT/2000/XP-Workstation eine Fernwartung der Domänen-Controller durchzuführen. Samba 2.2 besitzt die Fähigkeit, als primärer Domänen-Controller zu agieren, wobei es Domänenanmeldungen von Windows 95/98/Me/NT/2000/XP-Computern unterstützt und es Windows NT/2000/XP1-Systemen erlaubt, der Domäne als Domänen-Member-Server beizutreten. Samba kann einer Domäne ebenfalls als Member-Server beitreten. Damit kann der primäre Domänen-Controller ein Windows NT/2000-System oder ein anderer Samba-Server sein.
Samba 2.2 unterstützt keine LDAP- und Kerberos-Authentifizierung für Active Directory, es kann also nicht als Windows 2000-Active Directory-DomänenController arbeiten. Samba kann allerdings als Member-Server in eine Active Directory-Domäne aufgenommen werden, wobei die Windows 2000-DomänenController entweder im Mixed oder im Native Mode laufen. Der Windows 2000Server unterstützt (selbst wenn er im Native Mode läuft) den Samba-Server, indem er als PDC-Emulator arbeitet und an Stelle der Authentifizierung im Kerberos-Stil eine Authentifizierung im Windows NT-Stil einsetzt. Wenn Sie einen Samba-Server in ein Netzwerk einfügen, das bereits eingerichtet ist, müssen Sie nicht entscheiden, ob Sie eine Arbeitsgruppe oder eine Domäne benutzen - es muss einfach nur kompatibel zu dem sein, was bereits vorhanden ist. Falls Sie jedoch die Wahl haben, empfehlen wir Ihnen, sowohl die Arbeitsgruppen- als auch die Domänenlösung sorgfältig zu untersuchen, bevor Sie mit einer großen Installation beginnen. Es macht eine Menge Arbeit, später von der einen zur anderen Variante zu wechseln. Zu guter Letzt sollten Sie auch noch die Tatsache bedenken, dass Microsoft bei der Entwicklung von Windows ebenfalls vermehrt auf Domänen setzt und plant, Windows-Netzwerke irgendwann ausschließlich aus Active Directory-Domänen aufzubauen. Falls Sie jetzt eine Windows NT-Domäne implementieren, werden Sie es später leichter haben, auf Active Directory umzusteigen, wenn Samba eine bessere Unterstützung dafür bietet.
In diesem Kapitel behandeln wir verschiedene Themen, die direkt mit dem Einsatz von Samba in einer Windows NT-Domäne zu tun haben. Dazu gehören folgende Bereiche: ● ● ● ● ● ●
Konfiguration und Einsatz von Samba als primärer Domänen-Controller Einrichten von Windows 95/98/Me-Systemen zum Anmelden an der Domäne Implementierung von Sicherheit auf Benutzerebene unter Windows 95/98/Me Einbinden von Windows NT/2000/XP-Systemen in die Domäne Konfiguration von Anmeldeskripten, Roaming-Profilen und Systemrichtlinien Einbinden eines Samba-Servers in eine Domäne als Member-Server
Samba als primärer Domänen-Controller Samba 2.2 ist in der Lage, die meisten gewünschten Funktionen eines primären DomänenControllers in einer Windows NT-Domäne anzubieten, Domänenanmeldungen und Authentifizierung für den Zugriff auf freigegebene Ressourcen zu erledigen sowie Anmeldeskripten, Roaming-Profile und Systemrichtlinien zu unterstützen.
Sie müssen wenigstens Samba 2.2 einsetzen, um sicherzustellen, dass die PDCFunktionalität für Windows NT/2000/XP-Clients vorhanden ist. Vor Samba 2.2 gab es nur eine eingeschränkte Benutzer-Authentifizierung für NT-Clients. In diesem Abschnitt werden wir Ihnen zeigen, wie Sie Samba als PDC für den Einsatz mit Windows 95/98/Me- und Windows NT/2000/XP-Clients konfigurieren. Die beiden Gruppen von WindowsVersionen interagieren unterschiedlich in Domänen und werden in einigen Fällen auf etwas unterschiedliche Weise unterstützt. Wenn Sie wissen, dass Sie nur Windows 95/98/Me oder nur Windows NT/2000/XP einsetzen werden, können Sie Samba so einrichten, dass nur die entsprechende Gruppe unterstützt wird. Es schadet jedoch auch nicht, beide gleichzeitig zu unterstützen.
Wenn Sie mehr Informationen über das Einrichten von Domänen haben wollen, schauen Sie sich einmal die Datei Samba-PDC-HOWTO.html im Verzeichnis docs/ htmldocs der Samba-Quelldistribution an. Samba muss der einzige Domänen-Controller dieser Domäne sein. Stellen Sie sicher, dass nicht bereits ein PDC aktiv ist und dass es keine Backup-Domänen-Controller (Backup Domain Controller; BDC) gibt. Samba 2.2 ist nicht in der Lage, mit Backup-Domänen-Controllern zu kommunizieren. Hätten Sie nun Domänen-Controller in Ihrer Domäne, die ihre Daten nicht miteinander abgleichen, wäre Ihr Netzwerk nicht funktionsfähig.
Samba 2.2 kann zwar nicht als Windows NT-BDC agieren bzw. mit einem Windows NT-BDC zusammenarbeiten, es ist jedoch möglich, einen anderen Samba-Server als Sicherung für einen Samba-PDC einzurichten. Nähere Informationen finden Sie in der Datei Samba-BDC-HOWTO.html im Verzeichnis docs/htmldocs der Samba-Quelldistribution. Um Samba als PDC zu konfigurieren, müssen die Datei smb.conf verändert, einige Verzeichnisse angelegt und der Server neu gestartet werden.
Modifizieren der Datei smb.conf Sie beginnen zunächst mit einer smb.conf-Datei, die Samba korrekt für den Arbeitsgruppenbetrieb einrichtet. Eine solche Datei haben wir in Kapitel 2 erstellt. Dort fügen Sie folgende Zeilen in den Abschnitt [global] ein: [global] ; verwenden Sie an Stelle von toltec den Namen Ihres Samba-Servers ; und an Stelle von METRAN den Namen Ihrer Arbeitsgruppe netbios name = toltec workgroup = METRAN encrypt passwords = yes
domain master = yes local master = yes preferred master = yes os level = 65
security = user domain logons = yes
; logon path teilt Samba mit, wo die Windows NT/2000/XP-Roaming-Profile abgelegt werden logon path = \\%L\profiles\%u\%m logon script = logon.bat
logon drive = H: ; logon home wird verwendet, um das Home-Verzeichnis sowie den Ablageort ; der Windows 95/98/Me-Roaming-Profile festzulegen logon home = \\%L\%u\.win_profile\%m
time server = yes
; an Stelle von jay verwenden Sie die Namen der Benutzer in der Windows NT/2000/XP; Gruppe Administratoren, die sich an der Domäne anmelden domain admin group = root jay
; der folgende Befehl funktioniert bei Red Hat Linux - andere Betriebssysteme ; benötigen möglicherweise einen anderen Befehl add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u
Fügen Sie nach dem Abschnitt [global] diese drei neuen Freigaben ein: [netlogon] path = /usr/local/samba/lib/netlogon writable = no browsable = no
[profiles] ; möglicherweise verwenden Sie ein anderes Verzeichnis für Ihre ; Windows NT/2000/XP-Roaming-Profile path = /home/samba-ntprof browsable = no writable = yes create mask = 0600 directory mask = 0700
[homes] read only = no browsable = no guest ok = no map archive = yes
Jetzt die Erklärung. Wenn Sie dieses Beispiel mit der Konfigurationsdatei aus Kapitel 2 vergleichen, werden Sie feststellen, dass die ersten drei Parameter-Einstellungen ähnlich sind. Wir beginnen im
Abschnitt [global] mit dem Setzen des NetBIOS-Namens des Samba-Servers. Wir verwenden den voreingestellten Namen - das ist der DNS-Hostname -, geben ihn jedoch explizit an, da der NetBIOS-Name in UNCs verwendet wird, die weiter hinten in smb.conf auftauchen. Die beiden nächsten Zeilen, die den Arbeitsgruppennamen festlegen und den Einsatz verschlüsselter Kennwörter bestimmen, sind identisch mit der smb.conf-Datei aus Kapitel 2. Allerdings liegen die Dinge jetzt ein wenig anders: Es steht zwar immer noch »workgroup« (Arbeitsgruppe) da, tatsächlich setzen wir jedoch den Namen der Domäne. Für eine Arbeitsgruppe wäre die Benutzung verschlüsselter Kennwörter optional; beim Einsatz einer Domäne sind sie dagegen notwendig. Die nächsten vier Zeilen weisen den Samba-PDC an, die Suchdienste einzusetzen. Die Zeile domain master = yes macht Samba zum Domänen-Hauptsuchdienst, der den Suchdienst für die Domäne über die Grenzen mehrerer Subnetze hinweg ausführt, falls dies erforderlich sein sollte. Trotz gewisser Ähnlichkeiten veranlasst die Option local master = yes Samba nicht, der Hauptsuchdienst in dem Subnetz zu sein, sondern weist es lediglich an, an Suchdienstwahlen teilzunehmen und diese gewinnen zu können. (Diese beiden Zeilen sind eigentlich Standardeinstellungen, die wir aus Gründen der Klarheit hinzufügen.) Die nächsten beiden Zeilen stellen sicher, dass Samba die Wahlen gewinnt. Der Parameter preferred master veranlasst Samba, beim Start eine Wahl zu erzwingen. Der Wert des Parameters os level ist höher als der aller anderen Systeme, wodurch Samba diese Wahl gewinnt. (Zum Zeitpunkt des Schreibens dieses Buches war ein os-Level von 65 ausreichend, um alle Windows-Versionen auszustechen - achten Sie allerdings darauf, dass kein anderer Samba-Server höher liegt!) Wir sorgen dafür, dass Samba sowohl der Domänen- als auch der lokale Hauptsuchdienst ist, da Windows NT/2000-PDCs die Rolle des Domänen-Hauptsuchdiensts immer für sich reservieren und Windows-Clients die Dinge immer in diesem Zustand vorzufinden erwarten, um den primären Domänen-Controller zu finden. Es ist auch möglich, einem anderen Computer im Netzwerk zu erlauben, die Rolle des lokalen Hauptsuchdiensts zu übernehmen, allerdings ist es einfacher und effizienter, wenn der gleiche Server als Domänen- und lokaler Hauptsuchdienst fungiert. Die nächsten beiden Zeilen im Abschnitt [global] sorgen dafür, dass Samba die eigentlichen Domänenanmeldungen erledigt. Wir setzen security = user, Samba verlangt also einen Benutzernamen und ein Kennwort. Tatsächlich ist dies identisch mit den Einstellungen für die Arbeitsgruppe, die wir in den Kapiteln 1 und 2 behandelt haben, denn dies ist die Voreinstellung. Wir fügen es nur deshalb explizit ein, um Verwirrung zu vermeiden. Eine andere gültige Einstellung ist security = domain, allerdings dient diese Einstellung dazu, dass ein anderer (Windows- oder Samba-)Domänen-Controller die Anmeldungen verarbeitet; sie sollte niemals in der smb.conf eines Samba-PDC zu finden sein. Die nächste Zeile, domain logons = yes, gibt Samba dann an, dass dieser Server Domänenanmeldungen erledigt. Das Definieren eines Anmeldepfads ist notwendig, um Roaming-Profile für Windows NT/2000/XPClients zu unterstützen. Die UNC \\%L\profiles\%u bezieht sich auf eine Freigabe auf dem SambaServer, in der die Profile abgelegt sind. Die Variablen %L und %u werden von Samba durch den Namen des Servers bzw. den Benutzernamen des angemeldeten Benutzers ersetzt. Der Abschnitt in smb.conf, der die [profiles]-Freigabe definiert, enthält die genaue Angabe darüber, wo die Profile auf dem Server abgelegt sind. Wir werden weiter unten in diesem Kapitel auf dieses Thema zurückkommen. Die Zeile logon script = logon.bat gibt den Namen einer MS-DOS-Batch-Datei an, die ausgeführt wird, wenn der Client sich an der Domäne anmeldet. Der hier festgelegte Pfad ist relativ zur [netlogon]-Freigabe, die später in der Datei smb.conf definiert wird. Die Einstellungen logon drive und logon home verfolgen mehrere Zwecke. Wenn Sie logon drive = H: setzen, kann das Home-Verzeichnis des Benutzers mit dem Laufwerkbuchstaben H: auf dem Client verknüpft werden. Der Parameter logon home wird auf den Ablageort des HomeVerzeichnisses auf dem Server gesetzt, und auch hier wird %u zur Laufzeit durch den Benutzernamen des angemeldeten Benutzers ersetzt. Das Home-Verzeichnis dient dazu, die Roaming-Profile für Windows 95/98/Me-Clients zu speichern. Diese Parameter sind mit der Freigabe [homes], die wir hinzufügen, verknüpft, wie wir noch erläutern werden. Durch time server = yes wird Samba veranlasst, sich selbst als Time-Service für das Netzwerk bekannt zu machen. Dies ist optional. Der Parameter domain admin group dient in Samba 2.2 dazu, Samba eine Liste der Benutzer zu
übergeben, die in der Domäne über administrative Rechte verfügen. Die Liste sollte alle SambaBenutzer enthalten, die sich von Windows NT/2000/XP-Systemen aus anmelden und Mitglieder der Gruppen der Administratoren oder Domänen-Administratoren sind, falls Roaming-Profile korrekt funktionieren sollen. Der letzte Parameter, der in den Abschnitt [global] eingefügt werden soll, ist add user script. Diesen benötigen Sie nur, wenn einer oder mehrere Ihrer Clients ein Windows NT/2000/XP-System ist. Im Abschnitt »Anlegen von Computerzugängen« weiter unten in diesem Kapitel werden wir Ihnen mehr zu diesem Thema sagen. Die restlichen Ergänzungen zu smb.conf sind die Definitionen für drei Freigaben. Die Freigabe [netlogon] ist notwendig, damit Samba Domänenanmeldungen verarbeiten kann, da WindowsClients während des Anmeldevorgangs eine Verbindung dorthin herstellen müssen und die Anmeldung fehlschlägt, wenn die Freigabe nicht existiert. Abgesehen davon, besteht die einzige Aufgabe von [netlogon] darin, als Speicher für Anmeldeskripten und Systemrichtliniendateien zu fungieren, auf die wir später noch genauer eingehen. Der Pfad zu einem Verzeichnis auf dem Samba-Server wird vorgegeben, und da die Clients die Anmeldeskripten und Systemrichtliniendateien von der Freigabe nur lesen, wird die Freigabe durch die Definition writable = no mit einem Schreibschutz versehen. Die Benutzer müssen die Freigabe nicht sehen. Setzen Sie also den Parameter browsable = no, damit die Freigabe unsichtbar wird. Die Freigabe [profiles] wird im Zusammenhang mit Windows NT/2000/XP-Roaming-Profilen benötigt. Der Pfad verweist auf ein Verzeichnis auf dem Samba-Server, in dem die Profile abgelegt werden. In diesem Fall müssen die Clients in der Lage sein, die Profildaten zu lesen und zu schreiben. Die Parameter create mask (das Lesen und Schreiben ist nur für den Eigentümer erlaubt) und directory mask (das Lesen, Schreiben und Durchsuchen ist nur für den Eigentümer erlaubt) werden so eingestellt, dass die Profildaten eines Benutzers nur von dem Benutzer gelesen und geschrieben werden können und kein anderer darauf zugreifen oder sie verändern kann. Die Freigabe [homes] ist notwendig, damit die Definitionen von logon drive und logon home funktionieren. Samba verwendet die Freigabe [homes], um das Home-Verzeichnis des Benutzers (das in /etc/passwd zu finden ist) als Freigabe hinzuzufügen. Die Freigabe erscheint nicht als »homes«, sondern kann auf dem Client über einen Ordner mit dem gleichen Namen wie der Benutzername des Benutzers zugegriffen werden. Wir werden dieses Thema in Kapitel 9 ausführlicher behandeln. An dieser Stelle könnten Sie testparm ausführen, um Ihre smb.conf-Datei zu prüfen.
Verzeichnisse auf dem Samba-Server anlegen Die Freigaben [netlogon] und [profiles], die nun in der neuen smb.conf-Datei definiert sind, verweisen auf Verzeichnisse auf dem Samba-Server. Es ist notwendig, diese Verzeichnisse mit den entsprechenden Rechten anzulegen: # mkdir /usr/local/samba/lib/netlogon # chmod 775 /usr/local/samba/lib/netlogon # mkdir /home/samba-ntprof # chmod 777 /home/samba-ntprof
Die verwendeten Verzeichnisnamen sind lediglich Beispiele. Sie können selbstverständlich Ihre eigenen Namen wählen.
Den Samba-Server neu starten Nun muss nur noch der Samba-Server neu gestartet werden, und die Änderungen treten in Kraft: # /etc/rc.d/init.d/smb restart
(Verwenden Sie diesen Befehl oder eine andere für Ihr System passende Methode, wie in Kapitel 2 ausgeführt.) Der Server ist nun bereit, Domänenanmeldungen zu akzeptieren.
Anlegen von Computerzugängen Um in einer Domäne interagieren zu können, muss ein Windows NT/2000/XP-System Mitglied der Domäne sein. Die Domänenmitgliedschaft wird über Computerzugänge implementiert, die Benutzerzugängen ähneln und es einem Domänen-Controller erlauben, Informationen zu speichern, mit denen sich Computer am Netzwerk authentifizieren. Das bedeutet, der Domänen-Controller muss in der Lage sein festzustellen, ob Anfragen, die von einem Computer kommen, von einem Computer stammen, von dem er »weiß«, dass dieser Teil der Domäne ist. Jedes Windows NT/2000/ XP-System in der Domäne besitzt einen Computerzugang in der Datenbank des DomänenControllers, bei der es sich in einer von Windows NT/2000 verwalteten Domäne um die SAMDatenbank handeln würde. Samba verwendet zwar einen anderen Ansatz (bei dem die Datei smbpasswd beteiligt ist), es behandelt jedoch Computerzugänge ähnlich wie Benutzerzugänge. Um einen Computerzugang zu erzeugen, konfiguriert ein Administrator ein Windows NT/2000/XPSystem so, dass es Teil der Domäne wird. Bei Samba 2.2 ist der »Domänen-Administrator« der root-Zugang auf dem Samba-Server. Sie müssen folgenden Befehl ausführen: # smbpasswd -a root
um den root-Benutzer in die Kennwortdatenbank von Samba einzufügen. Geben Sie in diesem Fall bei smbpasswd nicht das gleiche Kennwort an wie bei dem eigentlichen root-Zugang auf dem Server. Erzeugen Sie stattdessen ein anderes Kennwort, das ausschließlich für das Anlegen von Computerzugängen verwendet wird. Dies verringert die Wahrscheinlichkeit, dass das root-Kennwort herausgefunden werden kann. Beim Anlegen des Computerzugangs geschehen auf dem Samba-Server zwei Dinge. Der Datei smbpasswd wird ein Eintrag hinzugefügt, der einen »Benutzernamen« zeigt, bei dem es sich um den NetBIOS-Namen des Computers mit einem angehängten Dollar-Zeichen ($) handelt. Dieser Teil wird vom Befehl smbpasswd erledigt. Die müssen dafür nichts tun. Bei Samba 2.2 ist außerdem ein Eintrag in der Datei /etc/passwd erforderlich2, um dem Computerzugang eine Benutzer-ID (UID) auf dem Samba-Server zu geben. Dieser Zugang wird niemals für eine Anmeldung am Unix-System verwendet, er sollte also auch kein gültiges HomeVerzeichnis und keine gültige Login-Shell erhalten. Damit dieser Teil funktioniert, müssen Sie den Parameter add user script in Ihrer Samba-Konfigurationsdatei setzen. Dazu verwenden Sie einen Befehl, der den Eintrag in der richtigen Weise anlegt. Auf unserem Red Hat Linux-System setzen wir add user script auf: /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u
Dieser Befehl fügt einen Eintrag in /etc/passwd ein, der ähnlich dem folgenden Eintrag ist: aztec$:x:505:100::/dev/null:/bin/false
Beachten Sie auch hier, dass der Benutzername mit einem Dollar-Zeichen endet. Der gezeigte Benutzerzugang hat das »Home-Verzeichnis« /dev/null, die Gruppen-ID (GID) 100 und die »LoginShell« /bin/false. Das Flag -M in unserem useradd-Befehl verhindert das Anlegen des HomeVerzeichnisses. Samba ersetzt die Variable %u im Befehl useradd durch den NetBIOS-Namen des Computers, einschließlich des abschließenden Dollar-Zeichens. Der Grundgedanke dahinter ist, einen Eintrag mit einem gültigen Benutzernamen und einer gültigen UID zu erzeugen. Dies sind die einzigen Teile, die Samba benutzt. Es ist wichtig, dass die UID einmalig ist und nicht für andere Zugänge benutzt wird - vor allem nicht für solche, die mit Samba-Benutzern verknüpft sind.
Falls Sie eine andere Unix-Variante benutzen, müssen Sie den Befehl useradd durch einen Befehl ersetzen, der auf Ihrer Plattform die gleiche Funktion ausführt. Gibt es auf Ihrem System keinen Befehl wie useradd, können Sie sich auch ein Shell-Skript schreiben, das diese Aufgabe erledigt. In jedem Fall sollte der Befehl einen Kennwort-Hash hinzufügen, der nicht mit einem gültigen Kennwort korrespondiert. In der Datei /etc/shadow unseres Linux-Servers finden wir beispielsweise die folgenden beiden Zeilen: jay:%1%zQ7j7ok8$D/IubyRAY5ovM3bTrpUCn1:11566:0:99999:7::: zapotec$:!!:11625:0:99999:7:::
Die erste Zeile ist für den Benutzerzugang von jay. Das zweite Feld zeigt den Kennwort-Hash-Wert - das ist der lange String zwischen dem ersten und dem zweiten Doppelpunkt. Die zweite Zeile ist für den Computerzugang von zapotec, einem Domänen-Member-Server. Sein »Benutzername« endet mit einem Dollar-Zeichen ($), und das zweite Feld wurde in diesem Fall auf »!!« gesetzt. Dabei handelt es sich um einen beliebigen String, der nicht von einem Kennwort erzeugt wurde. Daher gibt es für diesen Zugang auf dem Linux-Host kein gültiges Kennwort. Praktisch jeder ASCIIString kann an Stelle von »!!« verwendet werden. Sie könnten beispielsweise stattdessen »DEAKTIVIERT« einsetzen.
Es ist möglich, die Einträge für /etc/passwd und smbpasswd manuell zu erzeugen. Allerdings empfehlen wir, diese Methode nur sehr sorgfältig und nur für erste Tests oder als letzten Ausweg einzusetzen. Der Grund dafür ist, dass die Sicherheit gewahrt bleiben muss. Wenn ein Computerzugang auf dem Server erzeugt worden ist, wird das nächste Windows NT/2000/XP-System im Netzwerk mit einem passenden NetBIOS-Namen zum Anmelden an der Domäne mit diesem Zugang verknüpft. Dies bietet Crackern eine Möglichkeit, Computerzugänge für ihre eigenen Zwecke zu missbrauchen.
Windows-Clients für Domänen-Anmeldungen konfigurieren Die clientseitige Konfiguration für Windows-Clients ist wirklich einfach. Sie müssen lediglich vom Arbeitsgruppen- auf den Domänenbetrieb umstellen, indem Sie Domänenanmeldungen aktivieren und im Fall von Windows NT/2000/XP noch das root-Kennwort angeben, das Sie smbpasswd zum Erzeugen von Computerzugängen übergeben haben. Dadurch wird das Windows NT/2000/XPSystem ein Mitglied der Domäne.
Windows 95/98/Me Um Domänenanmeldungen für Windows 95/98/Me zu aktivieren, öffnen Sie die Systemsteuerung und doppelklicken auf das Netzwerk-Symbol. Klicken Sie dann auf Client für Microsoft-Netzwerke und anschließend auf Eigenschaften. An dieser Stelle sollten Sie einen Dialog ähnlich dem aus Abbildung 4-1 sehen. Markieren Sie das Optionsfeld An Windows NT-Domäne anmelden im oberen Bereich des Dialogfelds und geben Sie den Namen der Domäne so ein, wie Sie ihn im Parameter workgroup der Samba-Konfigurationsdatei angegeben haben. Klicken Sie dann auf OK und starten Sie den Rechner neu, wenn Sie dazu aufgefordert werden. Abbildung 4-1 Einen Windows 95/98-Client für Domänenanmeldungen konfigurieren
Falls Windows sich darüber beschwert, dass Sie bereits an der Domäne angemeldet sind, haben Sie vermutlich schon eine aktive Verbindung zu einer Freigabe in der Arbeitsgruppe (wie etwa ein zugewiesenes Netzlaufwerk). Heben Sie die Verbindung zur Ressource einfach zeitweilig auf, indem Sie mit der rechten Maustaste auf ihr Symbol klicken und den Menüeintrag Trennen wählen. Wenn Windows neu startet, sollten Sie den normalen Anmeldedialog mit einem Zusatz sehen: einem Feld für eine Domäne. Der Name der Domäne müsste schon ausgefüllt sein, geben Sie einfach nur noch Ihr Kennwort ein und klicken Sie auf OK. An dieser Stelle kontaktiert Windows den primären Domänen-Controller (Samba), um festzustellen, ob das Kennwort korrekt ist. (Sie können diesen Vorgang in den Protokolldateien nachvollziehen.) Wenn das alles geschehen ist, gratulieren wir! Sie haben Samba für den Einsatz als Domänen-Controller für Windows 95/98/Me-Maschinen richtig konfiguriert, und Ihr Client hat sich erfolgreich angemeldet.
Sicherheit auf Benutzerebene für Windows 95/98/Me Nachdem Sie nun einen primären Domänen-Controller zum Authentifizieren von Benutzern haben, können Sie eine viel größere Sicherheit für Freigaben implementieren, die sich auf Windows 95/98/ Me-Systemen befinden.3 Um diese Funktionalität zu aktivieren, öffnen Sie die Systemsteuerung, doppelklicken auf das Netzwerk-Symbol und klicken im Dialogfeld auf die Registerkarte Zugriffssteuerung. Das Fenster müsste nun so aussehen wie das in Abbildung 4-2. Abbildung 4-2 Einrichten der Zugriffskontrolle auf Benutzerebene
Klicken Sie auf den Radio-Button Zugriffssteuerung auf Benutzerebene und geben Sie den Namen Ihrer Domäne in den Eingabebereich ein. Klicken Sie auf den OK-Button. Falls Sie den Dialog aus Abbildung 4-3 sehen, gibt es auf dem System bereits Freigaben. Abbildung 4-3 Fehlerdialog beim Ändern der Zugriffssteuerung auf Benutzerebene
In diesem Fall sollten Sie den Vorgang abbrechen und einen Vermerk über die einzelnen Freigaben des Computers anlegen, um das erneute Freigeben dieser Ressourcen zu erleichtern. Anschließend wiederholen Sie diesen Teil. (Um eine Liste der Freigaben zu erhalten, starten Sie die MS-DOSEingabeaufforderung und führen den Befehl net view \\Computername aus.) Ansonsten erhalten Sie eine Meldung, die Sie bittet, den Rechner neu zu starten, damit die Änderungen an der Konfiguration wirksam werden. Nach dem Neustart können Sie Freigaben mit einer Zugriffssteuerung auf Benutzerebene erzeugen. Dazu klicken Sie mit der rechten Maustaste auf den Ordner, den Sie freigeben wollen, und wählen Freigabe... Dadurch öffnet sich der Dialog Eigenschaften von Freigabe, der in Abbildung 4-4 zu sehen ist. Abbildung 4-4 Das Dialogfeld Eigenschaften von Freigabe
Klicken Sie auf den Radio-Button Freigegeben als: und weisen Sie der Freigabe einen Namen sowie einen Kommentar zu. Klicken Sie anschließend auf den Button Hinzufügen... Sie sehen das Dialogfeld Benutzer hinzufügen, das in Abbildung 4-5 dargestellt wird. Abbildung 4-5 Das Dialogfeld Benutzer hinzufügen
Was ist geschehen? Windows hat den primären Domänen-Controller (in diesem Fall Samba) kontaktiert und eine Liste der Domänenbenutzer und -gruppen angefordert. Sie können nun einen
Benutzer oder eine Gruppe auswählen und sie zu einer oder mehreren der drei Listen auf der rechten Seite des Fensters - Schreibgeschützt, Alle Zugriffsrechte oder Benutzerdefiniert hinzufügen, indem Sie auf die Buttons in der Mitte des Fensters klicken. Wenn Sie fertig sind, klicken Sie auf OK. Haben Sie Benutzer oder Gruppen auf die Benutzerdefiniert-Liste gesetzt, wird Ihnen der Dialog Zugriffsrechte ändern präsentiert, der in Abbildung 4-6 zu sehen ist. Darin können Sie die Rechte festlegen, die Sie gewähren wollen. Klicken Sie dann auf OK, um den Dialog zu schließen. Abbildung 4-6 Das Dialogfeld Zugriffsrechte ändern
Sie kehren nun zum Dialog Eigenschaften von Freigabe zurück, worin die Spalten Name: und Zugriffsrechte: mit den Rechten ausgefüllt sind, die Sie gerade erzeugt haben. Klicken Sie auf ok, um den Vorgang abzuschließen. Denken Sie daran, dass Sie diese Aktion für alle Ordner ausführen müssen, die Sie zuvor mit Sicherheit auf Freigabeebene freigegeben hatten.
Windows NT 4.0 Um Windows NT für Domänenanmeldungen zu konfigurieren, melden Sie sich am Computer als Administrator oder als ein anderer Benutzer aus der Gruppe der Administratoren an, öffnen die Systemsteuerung und doppelklicken auf das Netzwerk-Symbol. Wählen Sie das Register Identifikation, falls dieses nicht bereits ausgewählt ist. Klicken Sie auf den Button Ändern... Sie sollten nun den Dialog aus Abbildung 4-7 sehen. Darin können Sie festlegen, dass der Windows NT-Client ein Mitglied der Domäne wird, indem Sie auf das Optionsfeld Domäne: im Feld Mitglied von klicken. Geben Sie dann den Namen der Domäne ein, an der sich der Client anmelden können soll. Dies muss der gleiche Name sein wie der, den Sie mit Hilfe des Parameters workgroup in der Samba-Konfigurationsdatei festgelegt haben. Klicken Sie auf das Optionsfeld Computerkonto in der Domäne erstellen und setzen Sie im Texteingabefeld Benutzername: die Bezeichnung »root« ein. In das Feld Kennwort: schreiben Sie das rootKennwort, das Sie bei smbpasswd zum Erzeugen von Computerzugängen angegeben haben. Abbildung 4-7 Einen Windows NT-Client für Domänenanmeldungen
konfigurieren
Falls Windows sich darüber beschwert, dass Sie bereits angemeldet sind, haben Sie vermutlich schon eine aktive Verbindung zu einer Freigabe in der Arbeitsgruppe (wie etwa ein zugewiesenes Netzlaufwerk). Heben Sie die Verbindung zur Ressource einfach zeitweilig auf, indem Sie mit der rechten Maustaste auf ihr Symbol klicken und den Menüeintrag Trennen wählen. Wenn Sie auf den OK-Button geklickt haben, sollte Windows ein kleines Dialogfeld präsentieren, das Sie an der Domäne willkommen heißt. Klicken Sie auf den Schließen-Button im NetzwerkDialog und starten Sie den Computer auf Aufforderung neu. Sobald das System wieder gestartet ist, zeigt Ihnen die Maschine automatisch ein Anmeldefenster ähnlich dem für Windows 95/98/MeClients, mit der Ausnahme, dass der Domänen-Eingabebereich ein Drop-down-Menü besitzt, so dass Sie sich entscheiden können, ob Sie sich am lokalen System oder an der Domäne anmelden. Achten Sie darauf, dass Ihre Domäne ausgewählt ist, und melden Sie sich mit einem für Samba aktivierten Benutzerzugang auf dem Samba-Server an der Domäne an.
Passen Sie auf, dass Sie auch die richtige Domäne im Windows NTAnmeldedialog ausgewählt haben. Nach dem Auswählen dauert es
möglicherweise eine Weile, bis Windows NT eine Liste der verfügbaren Domänen zusammengestellt hat. Nach der Eingabe des Kennworts muss Windows NT beim primären Domänen-Controller (Samba) prüfen, ob das Kennwort stimmt. Auch diese Aktion können Sie mit Hilfe der Protokolldateien nachvollziehen. Hat es funktioniert, haben Sie Samba erfolgreich dazu konfiguriert, als DomänenController für Windows NT-Maschinen zu arbeiten.
Windows 2000 Um Windows 2000 für Domänenanmeldungen zu konfigurieren, melden Sie sich am Computer als Administrator oder als ein anderer Benutzer aus der Gruppe der Administratoren an. Öffnen Sie dann die Systemsteuerung und doppelklicken Sie auf das System-Symbol, um die Dialogbox Eigenschaften von System zu öffnen. Klicken Sie auf die Registerkarte Netzwerkidentifikation und anschließend auf den Button Eigenschaften. Sie sollten nun den Dialog Änderungen der Benutzerinformationen sehen, der in Abbildung 4-8 dargestellt wird. Abbildung 4-8 Der Dialog Änderungen der Benutzerinformationen
Klicken Sie auf den Radio-Button mit der Bezeichnung Domäne: und setzen Sie den Namen Ihrer Domäne in den Texteingabebereich ein. Klicken Sie dann auf ok. Dadurch wird der Dialog Benutzername und Kennwort der Domäne geöffnet. Geben Sie als Benutzernamen »root« ein. Als Kennwort verwenden Sie das Kennwort, das Sie smbpasswd für den root-Zugang übergeben haben.
Falls Windows sich darüber beschwert, dass Sie bereits angemeldet sind, haben Sie vermutlich schon eine aktive Verbindung zu einer Freigabe in der
Arbeitsgruppe (wie etwa ein zugewiesenes Netzlaufwerk). Heben Sie die Verbindung zur Ressource einfach zeitweilig auf, indem Sie mit der rechten Maustaste auf ihr Symbol klicken und den Menüeintrag Trennen wählen. Nachdem Sie den OK-Button angeklickt haben, sollte Windows Ihnen ein kleines Dialogfeld präsentieren, mit dem Sie an der Domäne willkommen geheißen werden. Nach einem Klick auf den OK-Button in diesem Dialog wird Ihnen mitgeteilt, dass Sie den Computer neu starten müssen. Klicken Sie auf den OK-Button im Dialog Eigenschaften von System und starten Sie wie angewiesen den Computer neu. Sobald das System wieder hochgefahren ist, präsentiert die Maschine Ihnen einen Dialog zum Anmelden an Windows ähnlich dem in Abbildung 4-9. Abbildung 4-9 Das Windows 2000-Anmeldefenster
Falls Sie das Anmelden an:-Drop-down-Menü nicht sehen können, klicken Sie auf den Button Optionen <<. Das Menü erscheint daraufhin. Wählen Sie aus dem Menü an Stelle des lokalen Computers Ihre Domäne.
Achten Sie darauf, dass Sie im Anmeldedialog die richtige Domäne auswählen. Wenn Sie gewählt haben, dauert es möglicherweise einen Moment, bis Windows die Liste der verfügbaren Domänen zusammengestellt hat. Geben Sie den Benutzernamen und das Kennwort eines für Samba aktivierten Benutzers in die Felder Benutzername: und Kennwort: ein und drücken Sie entweder die Enter-Taste oder klicken Sie auf ok. Wenn alles funktioniert, startet Ihre Windows-Sitzung ohne Fehlerdialoge.
Windows XP Home Unser Beileid, falls Sie versuchen, die Home-Edition von Windows XP in einer Domänenumgebung einzusetzen! Microsoft hat in Windows XP Home keine Unterstützung für Windows NT-Domänen integriert. Das heißt, Sie haben hier ein Produkt, das für den Einsatz in einem domänenbasierten Netzwerk praktisch nicht geeignet ist. Auf der Client-Seite können sich Benutzer von Windows XP Home nicht an einer Windows NTDomäne anmelden. Es ist zwar möglich, auf Domänenressourcen zuzugreifen, allerdings muss der Benutzer bei jedem Zugriff auf eine Ressource einen Benutzernamen und ein Kennwort eingeben, eine einmalige Domänenanmeldung ist also nicht ausreichend. Domänenmerkmale wie Anmeldeskripten und Roaming-Profile werden nicht unterstützt.
Als Server ist Windows XP Home nicht in der Lage, einer Windows NT-Domäne als DomänenMember-Server beizutreten. Es kann Dateien und Drucker bedienen, verwendet allerdings nur eine Sicherheit auf Freigabeebene (»Arbeitsgruppe«). Im Gegensatz zu Windows 95/98/Me kennt es nicht einmal Sicherheit auf Benutzerebene. Auf Grund dieser Einschränkungen raten wir davon ab, Windows XP Home für irgendeine Art von lokalem Netzwerkbetrieb einzusetzen.
Windows XP Professional Um Windows XP Professional für Domänenanmeldungen zu konfigurieren, melden Sie sich am Computer als Administrator oder als ein anderer Benutzer aus der Gruppe der Administratoren an, öffnen die Systemsteuerung in der klassischen Ansicht und doppelklicken auf das System-Symbol, um das Dialogfeld Systemeigenschaften zu öffnen. Klicken Sie auf das Register Computername und anschließend auf den Button Ändern... Sie sollten nun den Dialog Computername ändern aus Abbildung 4-10 sehen. Klicken Sie auf den Radio-Button mit der Bezeichnung Domäne: und setzen Sie den Namen Ihrer Domäne in den Texteingabebereich ein. Klicken Sie anschließend auf ok. Dadurch öffnet sich der Dialog Benutzername und Kennwort der Domäne. Geben Sie als Benutzernamen »root« ein. Als Kennwort verwenden Sie das Kennwort, das Sie smbpasswd für den root-Zugang übergeben haben.
Falls Windows sich darüber beschwert, dass Sie bereits angemeldet sind, haben Sie vermutlich schon eine aktive Verbindung zu einer Freigabe in der Arbeitsgruppe (wie etwa ein zugewiesenes Netzlaufwerk). Heben Sie die Verbindung zur Ressource einfach zeitweilig auf, indem Sie mit der rechten Maustaste auf ihr Symbol klicken und den Menüeintrag Trennen wählen. Abbildung 4-10 Das Dialogfeld Computername ändern
Sobald Sie auf den OK-Button geklickt haben, sollte Windows Sie über einen kleinen Dialog in der Domäne willkommen heißen. Wenn Sie hier den OK-Button anklicken, wird Ihnen mitgeteilt, dass
Sie den Computer neu starten müssen, damit die Änderungen wirksam werden. Klicken Sie die OKButtons in den Dialogfeldern, um sie zu schließen, und starten Sie Ihren Computer wie gefordert neu. Ist das System wieder hochgefahren, zeigt Ihnen die Maschine automatisch einen Anmeldedialog ähnlich dem in Abbildung 4-11. Abbildung 4-11 Das Windows XP-Anmeldefenster
Falls Sie an dieser Stelle einen Dialog erhalten, der Ihnen sagt, dass der Domänen-Controller nicht gefunden werden kann, müssen Sie einen Registry-Eintrag ändern. Gehen Sie dazu folgendermaßen vor. Öffnen Sie das Start-Menü und klicken Sie auf den Menüeintrag Ausführen... Geben Sie in den Texteingabebereich des sich öffnenden Dialogs den Befehl »regedit« ein und klicken Sie auf ok, um den Registry-Editor zu starten. Sie werden nun die Registry bearbeiten, befolgen Sie daher die restlichen Anweisungen sehr sorgfältig. Klicken Sie auf den +-Button neben dem Ordner HKEY_LOCAL_MACHINE und klicken Sie in dem sich öffnenden Bereich auf den +-Button neben dem Ordner SYSTEM. Öffnen Sie auf die gleiche Weise CurrentControlSet, dann Services und Netlogon. (Sie werden mehrmals nach unten scrollen müssen, um Netlogon in der Liste der Dienste zu finden.) Klicken Sie nun auf den Parameters-Ordner. Sie sehen jetzt Einträge auf der rechten Seite des Fensters. Doppelklicken Sie auf requiresignorseal. Ein Dialogfeld öffnet sich. Ändern Sie im Textbereich Wert: den Eintrag »1« zu »0« (null). Klicken Sie jetzt den OK-Button. Dadurch wird die Registry sowohl im Speicher als auch auf der Festplatte geändert. Schließen Sie den Registry-Editor und melden Sie sich ab und wieder an. Falls Sie kein Anmelden an:-Drop-down-Menü sehen können, klicken Sie auf den Button Optionen <<. Das Menü erscheint daraufhin. Wählen Sie aus dem Menü an Stelle des lokalen Computers Ihre Domäne.
Achten Sie darauf, dass Sie die richtige Domäne im Anmeldedialog wählen. Danach dauert es eine Weile, bis Windows die Liste der verfügbaren Domänen bereitstellt. Geben Sie den Benutzernamen und das Kennwort eines für Samba aktivierten Benutzers in die Felder Benutzername: und Kennwort: ein und drücken Sie entweder die Enter-Taste oder klicken Sie auf ok. Wenn alles funktioniert, startet Ihre Windows-Sitzung ohne Fehlermeldungen.
Anmeldeskripten Nachdem ein Windows-Client eine Verbindung zum Domänen-Controller hergestellt hat (entweder um einen Benutzer zu authentifizieren, wie im Fall von Windows 95/98/Me, oder um sich an einer Domäne anzumelden, wie bei Windows NT/2000/XP), lädt der Client eine MS-DOS-Batch-Datei zur Ausführung herunter. Der Domänen-Controller liefert diese Datei, vorausgesetzt, es wurde eine für ihn zur Verfügung gestellt. Bei dieser Batch-Datei handelt es sich um das Anmeldeskript. Dieses hilft beim Einrichten der Ausgangsumgebung für den Benutzer. In einer Unix-Umgebung könnte die Fähigkeit, ein solches Skript ausführen zu können, zu einer sehr komplexen Initialisierung und Anpassung führen. Die Windows-Umgebung jedoch ist hauptsächlich an der grafischen Benutzeroberfläche orientiert, die Kommandozeilen-Funktionen sind relativ beschränkt. Am häufigsten wird das Anmeldeskript dazu verwendet, einen net-Befehl auszuführen, wie etwa net use, um einen Netzlaufwerkbuchstaben zuzuweisen: net use T: \\toltec\test
Dieser Befehl sorgt dafür, dass die Freigabe [test] (aus Kapitel 2) im Arbeitsplatz als Laufwerk T: erscheint. Dies geschieht automatisch. T: steht dem Benutzer von Anfang an zur Verfügung, er muss weder den Befehl net use selbst ausführen noch die Funktion Netzlaufwerk verbinden von Windows Explorer bemühen, um das Laufwerk T: zu verbinden. Ein anderer nützlicher Befehl ist: net use H: /home
Dieser Befehl verknüpft das Home-Verzeichnis des Benutzers mit einem Laufwerkbuchstaben (der, wie hier gezeigt, H: lauten oder auch einen anderen Buchstaben verwenden kann, wie durch logon drive definiert). Damit dies funktioniert, muss in Ihrer smb.conf-Datei eine [homes]-Freigabe definiert sein. Wenn Sie Roaming-Profile verwenden, sollten Sie auf jeden Fall net time \\toltec /set /yes
in Ihrem Anmeldeskript haben. (Ersetzen Sie wie üblich »toltec« durch den Namen Ihres SambaPDC.) Dies sorgt dafür, dass die Uhren der Windows-Clients mit dem PDC synchronisiert werden. Das ist wichtig, damit die Roaming-Profile funktionieren.
Ein Anmeldeskript erstellen In der smb.conf-Datei ist diese Zeile zu finden: logon script = logon.bat
Diese definiert den Ablageort und den Namen der Batch-Datei mit dem Anmeldeskript auf dem Samba-Server. Der Pfad ist relativ zur [netlogon]-Freigabe, die später in der Datei definiert wird: [netlogon] path = /usr/local/samba/lib/netlogon writable = no browsable = no
Bei diesem Beispiel ist das Anmeldeskript /user/local/samba/lib/netlogon/logon.bat. Wir haben die Anweisung writable = no aufgenommen, um sicherzustellen, dass die Netzwerk-Clients in der [netlogon]-Freigabe nichts ändern können. Die Anweisung browsable = no sorgt dafür, dass die Clients die Freigabe beim Durchsuchen des Inhalts des Servers überhaupt sehen können. Von Benutzern, die keine Administratoren sind, sollte in der [netlogon]-Freigabe nichts geändert werden dürfen. Außerdem sollten die Rechte auf dem Verzeichnis für [netlogon] entsprechend gesetzt sein (keine Schreibrechte für »andere« Benutzer), wie wir weiter oben gezeigt haben. Beachten Sie, dass die Erweiterung des Anmeldeskripts .bat lautet. Passen Sie jedoch auf - die Erweiterung .cmd funktioniert bei Windows NT/2000/XP-Clients, führt bei Windows 95/98/MeClients, die .cmd nicht als Erweiterung für Batch-Dateien erkennen, zu Fehlern. Da das Anmeldeskript auf einem Windows-System ausgeführt werden wird, muss es im MS-DOSTextdateiformat vorliegen, bei dem das Zeilenende aus einem Carriage Return (Wagenrücklauf), gefolgt von einem Linefeed (Zeilenvorschub) besteht. Unter Unix wird an dieser Stelle ein Newline verwendet, also einfach ein Zeilenvorschubzeichen. Wenn Sie einen Unix-Texteditor einsetzen, um das Anmeldeskript zu schreiben, müssen Sie irgendwie die richtigen Zeichen in das Skript bekommen. Bei vim (das ist ein Klon des Editors vi, der mit Red Hat Linux geliefert wird) wird dazu eine neue Datei erzeugt und folgender Befehl ausgeführt: :se ff=dos
um ein Dateiformat im MS-DOS-Stil zu erhalten, bevor Text eingegeben wird. Bei emacs erreichen Sie das Gleiche mit dem folgenden Befehl: ^X Enter f dos Enter
Dabei ist ^X ein Control-X-Zeichen. Enter bedeutet, dass die Enter-Taste gedrückt wird. Ein anderer Weg besteht darin, in einem beliebigen Texteditor eine Datei im Unix-Format zu erzeugen und diese dann mit dem Programm unix2dos in das MS-DOS-Format zu konvertieren: $ unix2dos unix_file >logon.bat
Keine Sorge, wenn auf Ihrem System das Programm unix2dos nicht existiert! Sie können es selbst mit dem folgenden Perl-Zweizeiler implementieren: #!/usr/bin/perl open FILE, $ARGV[0]; while (
) { s/$/\r/; print }
Oder Sie benutzen das Programm Notepad auf einem Windows-System, um Ihr Skript zu schreiben, und ziehen es dann in einen Ordner auf dem Samba-Server. In jedem Fall können Sie das Format Ihres Skripts mit dem Befehl od prüfen: $ od -c logon.bat
Die Ausgabe sollte den folgenden Zeilen ähneln: 0000000
n
e
t
0000020
t
e
c
0000032
\
u
s
e
t
e
s
t
T
:
\r
\n
\
\
t
o
l
Wichtig ist an dieser Stelle, dass am Ende jeder Zeile die Zeichenfolge \r \n steht, das ist ein Carriage Return gefolgt von einem Linefeed. Unser Beispiel-Anmeldeskript, das einen einzigen net use-Befehl enthält, wurde so erzeugt und eingerichtet, dass es auf jedem Windows-Client erfolgreich ausgeführt werden kann, unabhängig davon, welche Windows-Version auf dem Client installiert ist und welcher Benutzer sich an der Domäne authentifiziert oder anmeldet. Was tun wir aber, wenn wir unterschiedliche Benutzer, Computer oder Windows-Versionen haben, die unterschiedliche Anmeldeskripten brauchen? Eine Möglichkeit wäre es, Variablen im Anmeldeskript einzusetzen, die dafür sorgen, dass unter bestimmten Bedingungen bestimmte Befehle ausgeführt werden. Nähere Informationen dazu finden Sie in einer Referenz zur Batch-Datei-Programmierung für MS-DOS und Windows NT. Eine solche Referenz ist das Buch Windows NT System-Administration (O'Reilly Verlag). Die Sprache für Windows-Batch-Befehle ist in ihrer Funktionalität sehr beschränkt. Glücklicherweise unterstützt Samba einen Weg, um die Anpassung durchzuführen. Die Datei smb.conf enthält Variablen, die verwendet werden können, um (zur Laufzeit) den Namen des Servers (%L), den Benutzernamen der Person, die auf die Ressourcen des Servers zugreift (%u), oder den Computernamen des Client-Systems (%m) einzusetzen. Ein Beispiel: Wenn Sie den Pfad des Anmeldeskripts als logon script = %u/logon.bat
angeben, legen Sie für jeden Benutzer in der Freigabe [netlogon] ein Verzeichnis an. Der Name des Verzeichnisses wäre jeweils identisch mit dem Benutzernamen des Benutzers, und in jedes Verzeichnis würden Sie eine angepasste logon.bat-Datei setzen. Damit hätte jeder Benutzer sein eigenes Anmeldeskript. Im Abschnitt »Roaming-Profile« zeigen wir Ihnen ein besseres Beispiel hierfür.
Weitere Informationen über die Variablen der Samba-Konfigurationsdatei, wie die gerade verwendeten %L, %u und %m, finden Sie in Kapitel 6 und in Anhang B. Wenn Sie Ihr Anmeldeskript verändern und testen, melden Sie sich nicht einfach nur bei Windows ab und wieder an, um das Skript auszuführen. Starten Sie stattdessen Ihr System neu, bevor Sie sich wieder anmelden. Windows hält die Freigabe [netlogon] oft über mehrere Sitzungen hinweg offen. Der Neustart stellt deshab sicher, dass Windows und Samba die Freigabe [netlogon] vollständig freigegeben und neu verbunden haben und beim Anmelden die neue Version des Anmeldeskripts ausgeführt wird.
Roaming-Profile Ein Vorteil der zentralisierten Authentifizierung an Windows NT-Domänen besteht darin, dass ein Benutzer sich von mehr als nur einem einzigen Computer aus anmelden kann. Damit Benutzer sich auch dann »heimisch« fühlen, wenn sie nicht an ihrem üblichen Rechner angemeldet sind, hat Microsoft die Möglichkeit vorgesehen, die persönlichen Einstellungen von einem Computer zu einem anderen zu übertragen. Alle Windows-Versionen können für jeden Benutzer des Computers individuell konfiguriert werden. Windows NT/2000/XP unterstützen die Möglichkeit, mehrere Benutzerzugänge zu verarbeiten, und auch Windows 95/98/Me können für die Benutzung durch mehrere Benutzer konfiguriert werden, wobei die Konfigurationseinstellungen der einzelnen Benutzer separat vorgehalten werden. Jeder Benutzer kann die Einstellungen des Computers nach seinem Willen verändern. Das System
speichert diese Einstellungen als Profil des Benutzers. Beim Anmelden am System wird dem Benutzer sein vertrauter Desktop präsentiert. Einige der Einstellungen, wie etwa die Ordneroptionen oder das Hintergrundbild für den Desktop, werden in der Registry gespeichert. Andere, einschließlich der Dokumente und Ordner, die auf dem Desktop erscheinen, und des Inhalts des Start-Menüs, werden als Ordner und Dateien im Dateisystem abgelegt. Wenn das Profil im lokalen System gespeichert wird, bezeichnet man es als lokales Profil. Unter Windows NT werden die lokalen Profile im Verzeichnis C:\Winnt\Profiles abgelegt. Unter Windows 2000/XP sind sie in C:\Dokumente und Einstellungen zu finden. Werden Windows 95/98/Me für einen einzigen Benutzer konfiguriert (das ist der Standardfall), wird das lokale Profil auf solche Stellen wie die Registry und Verzeichnisse wie C:\Windows\Desktop und C:\Windows\Startmenü verteilt. Werden Windows 95/98/Me dagegen für mehrere Benutzer konfiguriert, wird das lokale Profil des existierenden Benutzers in einen Ordner unterhalb von C:\Windows\Profiles verschoben, der den gleichen Namen trägt wie der Benutzer. Die lokalen Profile aller anderen Benutzer, die danach angelegt werden, werden ebenfalls in diesem Verzeichnis gespeichert. Sie können sich die lokalen Profile anschauen, um ihre Struktur kennen zu lernen - jedes besitzt eine Registry-Datei (USER.DAT für Windows 95/98/Me und NTUSER.DAT für Windows NT/2000/XP) und einige Ordner mit Aliasen und Dokumenten. Ein Roaming-Profil ist ein Benutzerprofil, das auf einem Server gespeichert wird und seinem Besitzer durch das Netzwerk »folgt«. Meldet sich der Benutzer also von einem anderen Computer aus an der Domäne an, wird sein Profil vom Server heruntergeladen, und auf diesem Computer erscheint sein vertrauter Desktop.
Samba kann Roaming-Profile unterstützen, und es ist sogar eine recht einfache Sache, es entsprechend zu konfigurieren. Allerdings ist dies eine Funktion, deren Einsatz wir Ihnen nicht empfehlen, es sei denn, Sie verstehen Roaming-Profile wirklich gut und sind überzeugt, dass Sie sie implementieren können, ohne dass Schaden auftritt. Falls Sie Roaming-Profile für Ihre Windows-Clients implementieren wollen (oder müssen), raten wir Ihnen, zu Testzwecken zuerst eine kleine Domäne mit einem Samba-Server und wenigen Windows-Clients einzurichten. Unter keinen Umständen dürfen Sie versuchen, Roaming-Profile sorglos oder leichtfertig zu implementieren.
Wie Roaming-Profile funktionieren Wir werden Ihnen zunächst einmal erklären, wie Roaming-Profile funktionieren, wenn sie richtig eingerichtet worden sind. Sie benötigen ein klares Verständnis von Roaming-Profilen, um feststellen zu können, ob sie so funktionieren, wie sie gedacht waren, oder nicht. Für Benutzer stellen Roaming-Profile oft eine Quelle der Verwirrung dar. Sie sollten deshalb in der Lage sein festzustellen, ob ein Problem mit einem Client seine Ursache in einer Funktion des Roaming-Profils oder in einer echten Fehlfunktion hat.
Eine maßgebliche Quelle für Informationen über Windows NT-Roaming-Profile ist das Microsoft-Whitepaper Implementing Policies and Profiles for Windows NT 4.0, das Sie unter http://www.microsoft.com/ntserver/techresources/
management/prof_policies.asp finden können. Während der Anmeldung an der Domäne wird das Roaming-Profil vom Domänen-Controller kopiert und für die Dauer der Sitzung des Benutzers als lokales Profil verwendet. Meldet sich der Benutzer von der Domäne ab, wird das lokale Profil wieder auf den Domänen-Controller kopiert und als neues Roaming-Profil gespeichert. Ändert sich das lokale Profil, erhält der Server die Aktualisierung erst dann, wenn sich der Benutzer von der Domäne abmeldet oder den Client herunterfährt oder neu startet. Während der Sitzung sendet der Client keine Aktualisierung an den Server, und er empfängt auch keine Aktualisierung, wenn während der Sitzung eine Einstellung auf einem anderen Client geändert wurde. Wenn sich der Benutzer abmeldet, werden die Änderungen an den Konfigurationseinstellungen im lokalen Profil an den Server geschickt, und die Aktualisierungen des Roaming-Profils stehen für die nächste Anmeldesitzung zur Verfügung. Dieses einfache Verhalten kann zu unerwarteten Ergebnissen führen, wenn Benutzer auf mehr als einem Client auf einmal an der Domäne angemeldet sind. Führt ein Benutzer auf einem Client eine Änderung an den Konfigurationseinstellungen durch, wird das Roaming-Profil entsprechend geändert. Der nächste Client jedoch, der sich abmeldet, könnte veranlassen, dass diese Änderungen überschrieben werden. In diesem Fall gehen die Einstellungen des ersten Clients verloren. Das diesbezügliche Verhalten der verschiedenen Windows-Versionen ist ganz unterschiedlich, und wir haben eine Menge unterschiedlicher Verhaltensweisen gesehen - nicht immer konform mit der Microsoft-Dokumentation oder gar identisch bei verschiedenen Gelegenheiten. Manchmal lehnt Windows es ab, ein Profil zu überschreiben, und liefert möglicherweise einen »Zugriff verweigert«-Fehler. Manchmal dagegen scheint es zu funktionieren, verursacht aber eigenartige Nebenwirkungen. Zu Verwirrung kommt es nahezu immer, wenn eine Datei auf dem Desktop angelegt oder von ihm gelöscht wird, was standardmäßig Teil des Profils ist. Eine gelöschte Datei taucht unter Umständen später wieder auf. Es kann auch passieren, dass eine Datei ohne Warnung unwiderruflich verschwindet (unter Windows 95/98). Oder eine Datei, die auf dem Desktop des einen Clients angelegt wurde, wird niemals zum Roaming-Profil hinzugefügt und somit auch nicht den anderen Clients bekannt gemacht. Dieses Verhalten hat sich unter Windows 2000/XP ein wenig verbessert, das heißt, es wurde versucht, Elemente in das Profil einzufügen, die auf gleichzeitig angemeldeten Clients angelegt wurden. Ein Faktor, der mit ins Spiel kommt, ist die Tatsache, dass Windows die Zeitstempel der lokalen und der Roaming-Profile vergleicht und es ablehnen kann, ein Roaming-Profil zu überschreiben, wenn es neuer ist als das lokale Profil auf dem Client oder umgekehrt. Aus diesem Grund ist es wichtig, dass die Uhren der Windows-Clients und des Samba-PDC synchron laufen. Wir haben Ihnen bereits gezeigt, wie Sie das mit Hilfe des Befehls net time \\server /set /yes im Anmeldeskript erreichen. Selbst wenn der Server und die Clients korrekt konfiguriert sind, können noch eine Reihe vermeintlicher Probleme auftreten. Am häufigsten passiert es, dass einige Aliase auf den Clients, die nicht von dem Roaming-Profil erzeugt wurden, nicht funktionieren. Diese Aliase können auf dem Desktop oder als Einträge im Start-Menü existieren. Dieses Verhalten resultiert daher, dass Anwendungen oder Dateien zwar auf einem Computer vorhanden sind, nicht jedoch auf anderen. Windows zeigt diese Aliase an, auf dem Desktop haben sie jedoch ein generisches Symbol und erzeugen eine Fehlermeldung, falls ein Beutzer sie doppelt anklickt.
Da Profile üblicherweise den Inhalt des Desktops und anderer Ordner enthalten, kann ein Roaming-Profil auf Grund der Aktionen eines Benutzers, wie dem Erzeugen neuer Dateien auf dem Desktop oder dem Kopieren von Dateien auf den Desktop, ziemlich groß werden. Standardmäßig legt der Internet Explorer seinen Festplatten-Cache im Ordner Temporary Internet Files im Profil ab. Dieses Verzeichnis kann durchaus mehrere tausend Dateien umfassen. Das daraus resultierende riesige Roaming-Profil verursacht dann eine Überlastung des Netzwerks und große Verzögerungen beim Anmelden von Benutzern an der Domäne. (Eine Lösung für dieses Problem ist im Artikel Q185255 der Microsoft
Knowledge Base beschrieben.) Ein Verhalten, das uns einige Male aufgefallen ist, besteht darin, dass das Roaming-Profil aus irgendeinem Grund (z.B. Netzwerkfehler oder Fehlkonfiguration) während der Anmeldung nicht zur Verfügung steht. Stattdessen verwendet Windows dann das lokale Profil auf dem Client. Geschieht dies, erhält der Benutzer möglicherweise ein fremdes Profil, die Vorteile der Roaming-Profile können während dieser Sitzung nicht genutzt werden.
Samba für Roaming-Profile konfigurieren In einer idealen Welt würden unterschiedliche Windows-Versionen das gleiche Roaming-Profil verwenden. Dadurch wäre es Benutzern möglich, sich von jedem Windows-Client-System - ob Windows 95 oder Windows XP - an der Domäne anzumelden und die vertrauten Einstellungen vorzufinden. Sie könnten sogar gleichzeitig von mehreren Clients aus angemeldet sein; eine Änderung des Profils auf einem der Clients würde schnell den anderen Clients bekannt gemacht werden. Einstellungen, die in einem Roaming-Profil auf einem Client vorgenommen werden und die nicht für andere Clients gelten, würden vernünftig behandelt werden. Dummerweise funktioniert dieses Szenario in der Wirklichkeit nicht. Es ist wichtig, separate Roaming-Profile zu verwalten, um zu verhindern, dass unterschiedliche Windows-Versionen ein Roaming-Profil verwenden oder modifizieren, das von einer anderen Version erzeugt und/oder benutzt wird. Wir erledigen dies, indem wir Variablen in der Konfigurationsdatei einsetzen, die auf unterschiedliche Profilverzeichnisse verweisen. Wenn Sie sich Tabelle B-1 in Anhang B anschauen, in der die möglichen Variablen aufgeführt sind, werden Sie versucht sein, die Variable %a zu verwenden, die durch den Namen des Betriebssystems ersetzt wird, das auf dem Client läuft. Das funktioniert jedoch nicht, da Windows 95/98/Me als das gleiche Betriebssystem betrachtet werden. Gleiches gilt für Windows 2000/XP. Wir benutzen deshalb %m, um den NetBIOS-Namen des Clients zu erhalten, und kombinieren dies mit einem symbolischen Link auf das Verzeichnis, in dem das Profil für die Windows-Version dieses speziellen Clients enthalten ist. Unsere Ergänzungen zu smb.conf, die wir weiter oben in diesem Kapitel gezeigt haben, enthielten diese beiden Zeilen: logon path = \\%L\profiles\%u\%m logon home = \\%L\%u\.win_profile\%m
Die erste Zeile gibt an, wo die Roaming-Profile für Windows NT/2000/XP-Clients abgelegt werden, und die zweite Zeile führt die gleiche Aktion für Windows 95/98/Me-Clients aus. In beiden Fällen wird der Ablageort als UNC angegeben, allerdings wird logon path (für Windows NT/2000/XP) als relativer Pfad zur Freigabe [profiles] festgelegt, während logon home (für Windows 95/98/Me) relativ zum Home-Verzeichnis des Benutzers liegt. Dies geschieht, damit Sambas Emulation dem Verhalten eines Windows NT/2000-PDC entspricht. Die logon home-UNC muss mit der Angabe des Home-Verzeichnisses des Benutzers beginnen. Im vorherigen Beispiel wäre dies \\%L\%u. Die Variable %L wird zum NetBIOS-Namen des Servers erweitert (in diesem Fall toltec), und %u wird zum Namen des Benutzers. Dies ist notwendig, damit der Befehl: C:\>net use h: /home
das Home-Verzeichnis des Benutzers auf allen Windows-Clients korrekt mit dem Laufwerkbuchstaben H: verknüpft. (Der für diesen Zweck eingesetzte Laufwerkbuchstabe wird durch logon drive definiert.) Wir fügen der UNC das Verzeichnis .win_profile hinzu, um das Windows 95/98/Me-Roaming-Profil in ein Unterverzeichnis des Home-Verzeichnisses des Benutzers zu setzen.
Beachten Sie, dass wir es sowohl in logon path als auch in logon home vermieden haben, als Profil-Verzeichnis das gleiche Verzeichnis wie das HomeVerzeichnis des Benutzers anzugeben. Außerdem wird das Profil-Verzeichnis für keine andere Aufgabe eingesetzt. Das liegt daran, dass bei einer Aktualisierung des Roaming-Profils alle Verzeichnisse und Dateien im Roaming-ProfilVerzeichnis, die nicht Bestandteil des Roaming-Profils sind, gelöscht werden. In der logon path-Zeile in smb.conf verwenden wir %u, um das Profile-Verzeichnis in ein Unterverzeichnis der [profiles]-Freigabe zu setzen, damit jeder Benutzer für seine RoamingProfile ein eigenes Verzeichnis erhält. Definieren Sie die [profiles]-Freigabe folgendermaßen: [profiles] writable = yes create mask = 0600 directory mask = 0700 browsable = no path = /home/samba-ntprof
Die ersten vier Parameter in der Freigabe-Definition legen fest, dass die Roaming-Profile mit den Rechten des Benutzers geschrieben werden, dass Dateien mit Lese- und Schreibrechten für den Eigentümer erzeugt werden und dass Verzeichnisse mit Lese-, Schreib- und Suchrechten für den Eigentümer erzeugt werden und der Zugriff auf diese Verzeichnisse allen anderen Benutzern nicht erlaubt ist. Wie bei der Freigabe [netlogon] setzen Sie browsable = no, damit die Freigabe den Clients im Windows Explorer nicht angezeigt wird. Wir haben beschlossen, die Windows NT/2000/XP-Profile in /home abzulegen, dem vorgegebenen Ablageort der Home-Verzeichnisse unter Linux. Dadurch ist es einfach, die Roaming-Profile in die Sicherung der Home-Verzeichnisse einzuschließen. Sie können auch ein anderes Verzeichnis verwenden, wenn Sie wollen. Beachten Sie, dass sowohl in logon path als auch in logon home das Verzeichnis, das Sie angeben, mit %m endet. Diese Variable ersetzt Samba durch den NetBIOS-Namen des Clients. Verwenden Sie den Computernamen des Clients, um indirekt zu identifizieren, welche Version von Windows er ausführt. Zu Anfang sind die Verzeichnisse, die Sie für die Roaming-Profile angegeben haben, leer. Sie werden belegt, wenn die Clients sich zum ersten Mal abmelden. (Samba erzeugt die Verzeichnisse sogar, falls sie noch nicht existieren.) Zuerst enthalten die Verzeichnisse einfach Profile, die identisch sind mit den lokalen Profilen der Clients. Wir empfehlen Ihnen, an dieser Stelle ein Backup zu machen, bevor die Dinge kompliziert werden. Ein Listing des Roaming-Profil-Verzeichnisses der Benutzerin iman, nachdem sie sich an den Windows 98-Clients mixtec und pueblo sowie den Windows Me-Clients huastec und navajo abgemeldet hat, könnte so aussehen: $ ls -l /home/iman/.win_profile total 4 drwx------
6 iman
iman
4096 Dec
8 18:09 huastec
drwx------
9 iman
iman
4096 Dec
7 03:47 mixtec
drwx------
11 iman
iman
4096 Dec
7 03:05 navajo
drwx------
11 iman
iman
4096 Dec
7 03:05 pueblo
Bleiben die Dinge so, teilen die Clients ihre Roaming-Profile nicht. Deshalb gehen wir nun dazu über, an Stelle von separaten Verzeichnissen symbolische Links auf gemeinsame Verzeichnisse einzusetzen: # mv mixtec Win98 # mv navajo WinMe # rm huastec pueblo # ln -s Win98 pueblo # ln -s WinMe huastec # chown iman:iman * # ls -l /home/iman/.win_profile total 6 lrwxrwxrwx
1 iman
iman
5 Nov 16 01:40 huastec -> WinMe
lrwxrwxrwx
1 iman
iman
5 Nov 16 01:40 mixtec -> Win98
lrwxrwxrwx
1 iman
iman
5 Nov 21 17:24 navajo -> WinMe
lrwxrwxrwx
1 iman
iman
5 Nov 23 01:16 pueblo -> Win98
drwx------
9 iman
iman
4096 Dec
7 03:47 Win98
drwx------
11 iman
iman
4096 Dec
7 03:05 WinMe
Wenn iman sich nun von einem der Windows 98-Systeme an der Domäne anmeldet, bezieht der Client, an dem sie sich anmeldet, das Profil, das im Verzeichnis Win98 abgelegt ist (ursprünglich ihr lokales Profil auf mixtec). Für die Windows Me-Clients funktioniert dies genauso. Ein vollständigeres Beispiel. Schauen Sie sich hier das Listing eines »richtigen« Windows 95/98/MeProfil-Verzeichnisses an: $ ls -l /home/jay/.win_profile total 12 lrwxrwxrwx
1 jay
jay
9 Nov 16 22:14 aztec -> /home/jay
lrwxrwxrwx
1 jay
jay
5 Nov 16 01:40 hopi -> Win95
lrwxrwxrwx
1 jay
jay
5 Nov 16 01:40 huastec -> WinMe
lrwxrwxrwx
1 jay
jay
5 Nov 16 01:38 maya -> Win98
lrwxrwxrwx
1 jay
jay
5 Nov 16 01:40 mixtec -> Win98
lrwxrwxrwx
1 jay
jay
5 Nov 21 17:24 navajo -> WinMe
lrwxrwxrwx
1 jay
jay
5 Nov 23 01:16 pueblo -> Win98
lrwxrwxrwx
1 jay
jay
5 Nov 22 02:06 ute -> Win95
drwx------
6 jay
jay
4096 Dec
8 18:09 Win95
drwx------
9 jay
jay
4096 Dec
7 03:47 Win98
drwx------
11 jay
jay
4096 Dec
7 03:05 WinMe
lrwxrwxrwx
1 jay
jay
5 Nov 21 22:48 yaqui -> Win98
lrwxrwxrwx
1 jay
jay
9 Nov 16 22:14 zuni -> /home/jay
Auch hier ist der Computername der einzelnen Clients in diesem Verzeichnis ein symbolischer Link auf dasjenige Verzeichnis, das das tatsächliche Roaming-Profil enthält. Beispielsweise besitzt maya, ein Client mit Windows 98, einen symbolischen Link namens maya auf das Verzeichnis Win98. Ein Listing von Win98 zeigt Folgendes: $ ls -l Win98 total 148 drwxr-xr-x
3 jay
jay
4096 Nov 23 01:30 Application Data
drwxr-xr-x
2 jay
jay
4096 Nov 23 01:30 Cookies
drwxr-xr-x
3 jay
jay
4096 Dec
drwxr-xr-x
3 jay
jay
4096 Nov 23 01:30 History
drwxr-xr-x
2 jay
jay
4096 Nov 23 01:30 NetHood
drwxr-xr-x
2 jay
jay
4096 Dec
drwxr-xr-x
3 jay
jay
4096 Nov 23 01:30 Start Menu
-rw-r--r--
1 jay
jay
114720 Dec
7 03:47 Desktop
7 03:47 Recent
7 03:46 USER.DAT
Die Inhalte der Verzeichnisse Win95 und WinMe sind ähnlich und enthalten Roaming-Profile, die genau so funktionieren, wie sie dies unter ihren jeweiligen Betriebssystemen tun sollten. Beachten Sie in dem gezeigten Listing, dass aztec und zuni symbolische Links auf /home/jay sind. Wir haben Sie davor gewarnt, ein Roaming-Profil-Verzeichnis identisch mit dem Home-Verzeichnis eines Benutzers zu machen. Allerdings liegen die Dinge hier ein wenig anders. Die Clients aztec und zuni sind Windows XP-Systeme, die logon home anders verarbeiten als andere Versionen von Windows. Wir haben logon home = \\%L\%u\.win profile gesetzt. Alle Versionen von Windows mit Ausnahme von Windows XP entfernen alles nach \\%L\%u und legen das Home-Verzeichnis richtig fest - in diesem Fall mit /home/jay. Windows XP verwendet die vollständige UNC, deshalb fügen wir einfach einen symbolischen Link hinzu, der es auf das richtige Verzeichnis umleitet, damit der Befehl net use H: /home so funktioniert wie vorgesehen. Die Roaming-Profile für Windows XPSysteme werden davon nicht beeinflusst und befinden sich bei den anderen Roaming-Profilen der Windows NT/2000/XP-Familie, wie dieses Listing zeigt: $ ls -l /home/samba-ntprof/jay total 16 lrwxrwxrwx
1 jay
jay
5 Nov 20 03:45 apache -> Win2K
lrwxrwxrwx
1 jay
jay
5 Nov 13 12:35 aztec -> WinXP
lrwxrwxrwx
1 jay
jay
5 Nov 13 12:34 dine -> WinNT
lrwxrwxrwx
1 jay
jay
5 Nov 24 03:44 inca -> Win2K
lrwxrwxrwx
1 jay
jay
5 Nov 13 12:34 pima -> Win2K
drwx------
13 jay
jay
4096 Dec
3 15:24 qero
drwx------
13 jay
jay
4096 Dec
1 20:31 Win2K
drwx------
12 jay
jay
4096 Nov 30 17:04 WinNT
drwx------
13 jay
jay
4096 Nov 20 01:23 WinXP
lrwxrwxrwx
1 jay
jay
5 Nov 20 06:09 yavapai -> WinXP
lrwxrwxrwx
1 jay
jay
5 Nov 13 12:34 zapotec -> Win2K
lrwxrwxrwx
1 jay
jay
5 Nov 13 12:35 zuni -> WinXP
Wie Sie sehen können, verwenden wir eine ähnliche Methode für die Windows NT/2000/XPRoaming-Profile. In dem Listing ist qero kein symbolischer Link, sondern ein Verzeichnis, in dem sich das Roaming-Profil für qero befindet, einem Windows 2000-Client, der kürzlich hinzugefügt wurde. Vor der Installation von Windows 2000 hatten wir noch keinen symbolischen Link namens qero erzeugt. Als jay sich das erste Mal abmeldete, erzeugte Samba ein Verzeichnis namens qero und kopierte das Roaming-Profil, das es von dem Client empfangen hatte, in das neue Verzeichnis. Da dies ein anderes Verzeichnis ist als Win2K, das alle anderen Windows 2000-Clients verwenden, um ihre Roaming-Profile abzulegen, funktioniert das Roaming-Profil für qero wie ein lokales Profil, nur dass es auf dem primären Domänen-Controller gespeichert wird. Das mag ein wenig seltsam erscheinen, hat aber seinen Sinn. Manchmal wollen Sie möglicherweise einen Client auf diese Weise isolieren, vor allem während das Betriebssystem installiert und konfiguriert wird. Erinnern Sie sich: Wenn dieser Client mit seinem vorgegebenen lokalen Profil sich an der Domäne abmeldet, wird das lokale Profil in das Roaming-Profil-Verzeichnis geschrieben. Würde der Client das gemeinsame Roaming-Profil-Verzeichnis benutzen, hätte dies unerwünschte Auswirkungen, um es vorsichtig auszudrücken. Mit unserer Methode kann das Verzeichnis qero später umbenannt werden, um es zu sichern, oder es könnte einfach gelöscht werden. Dann kann ein neuer symbolischer Link namens qero erzeugt werden, der auf das Verzeichnis Win2K verweist, und qero teilt das Roaming-Profil in Win2K mit den anderen Windows 2000-Clients. Eine Alternative besteht darin, die symbolischen Links einfach zu erzeugen, bevor die Clients dem Netzwerk hinzugefügt werden. Wenn Sie sich damit vertraut gemacht haben, wie Roaming-Profile funktionieren, werden Sie diese Methode einfacher und schneller finden. Wir wiederholen es an dieser Stelle jedoch noch einmal: Seien Sie vorsichtig, wenn Sie unterschiedliche Windows-Versionen das gleiche Roaming-Profil benutzen lassen. Die hier gezeigte Methode der Konfiguration von Roaming-Profilen erlaubt es Ihnen, eine Konfiguration für wenige Clients auf einmal zu testen, ohne Ihr gesamtes Netzwerk mit Clients zu beeinträchtigen. Wir könnten beispielsweise zu Testzwecken eine geringe Anzahl an Windows 2000- und Windows XPSystemen in der Domäne installieren und dann symbolische Links für sie anlegen, die auf ein Verzeichnis namens Win2KXP verweisen, um herauszufinden, ob gemeinsame Roaming-Profile für die Windows 2000- und Windows XP-Systeme unseren Erwartungen entsprechen. Das Verzeichnis Win2KXP könnte als leeres Verzeichnis erzeugt werden. In diesem Fall würde beim ersten Abmelden der Clients ein Roaming-Profil in das Verzeichnis geschrieben werden. Win2KXP könnte aber auch einfach ein umbenanntes Roaming-Profil-Verzeichnis sein, das von einem der Clients angelegt worden ist, als dieser in die Domäne aufgenommen wurde.
Windows 95/98/Me für Roaming-Profile konfigurieren Damit Roaming-Profile bei Windows 95/98/Me-Clients funktionieren, müssen Sie lediglich eine Einstellung verändern, so dass jeder Benutzer ein eigenes lokales Profil haben kann. Dies bringt als Nebenwirkung mit sich, dass auch Roaming-Profile aktiviert werden.
Öffnen Sie die Systemsteuerung und doppelklicken Sie auf das Kennwörter-Symbol, um das Dialogfeld Eigenschaften von Kennwörter zu öffnen. Klicken Sie auf das Register Benutzerprofile. Das Dialogfeld sieht nun aus wie das in Abbildung 4-12. Abbildung 4-12 Der Windows 98-Dialog Eigenschaften von Kennwörter
Klicken Sie auf den Button mit der Bezeichnung Benutzer können die Vorgaben und DesktopEinstellungen ändern. Im Bereich Einstellungen für Benutzerprofile können Sie die gewünschten Optionen aktivieren. Wenn Sie fertig sind, klicken Sie auf ok und starten den Rechner neu. Während dieses ersten Neustarts kopiert Windows die lokalen Profildaten nach C:\Windows\Profiles, versucht aber nicht, das Roaming-Profil vom Server zu kopieren. Beim nächsten Herunterfahren des Systems wird das lokale Profil auf den Server kopiert, und wenn Windows neu startet, kopiert es das Roaming-Profil vom Server.
Windows NT/2000/XP für Roaming-Profile konfigurieren Unter Windows NT/2000/XP sind Roaming-Profile standardmäßig aktiviert. Falls Sie Ihre Einstellungen überprüfen oder verändern wollen, gehen Sie folgendermaßen vor. Stellen Sie sicher, dass Sie am lokalen System als Administrator oder als ein anderer Benutzer aus der Gruppe der Administratoren angemeldet sind. Öffnen Sie die Systemsteuerung und doppelklicken Sie auf das System-Symbol. Klicken Sie unter Windows NT/2000 auf das Register Benutzerprofile bzw. unter Windows XP auf das Register Erweitert und klicken Sie anschließend auf den Button Einstellungen im Feld Benutzerprofile. Sie sollten nun das Dialogfeld aus Abbildung 4-13 sehen. Abbildung 4-13 Der Windows 2000-Dialog Eigenschaften von System, Register Benutzerprofile
Beachten Sie in der Abbildung, dass es zwei Einträge für den Benutzernamen jay gibt. Der Eintrag ZAPOTEC\jay bezieht sich auf den Zugang am lokalen System, METRAN\ jay dagegen bezeichnet den Domänenzugang. Sie erinnern sich: Wenn ein Benutzer sich anmeldet, erlaubt ihm ein Dropdown-Menü im Dialogfeld, sich an einer Domäne oder am lokalen System anzumelden. Meldet jay sich an der lokalen Domäne an, wird nur das lokale Profil verwendet. Beim Anmelden an der Domäne verwendet die gezeigte Konfiguration das Roaming-Profil. Um den Profiltyp eines Benutzers für einen Domänenzugang zu wechseln, klicken Sie zuerst auf den Zugangsnamen. Dieser Zugang wird ausgewählt. Klicken Sie nun auf den Button Typ ändern... im unteren Bereich des Dialogs. Das Dialogfeld Profiltyp ändern wird geöffnet. Klicken Sie entweder auf den RadioButton für das servergespeicherte Profil oder auf den Radio-Button für das lokale Profil und klicken Sie anschließend auf die OK-Buttons der einzelnen Dialogfelder.
Mandatory-Profile Mit Hilfe einer einfachen Modifikation kann ein Roaming-Profil in ein Mandatory-Profil (obligatorisches Profil) umgewandelt werden, das die spezielle Eigenschaft besitzt, von seinem Besitzer nicht verändert werden zu können. Mandatory-Profile werden in einigen Rechnerumgebungen verwenden, um die Verwaltung zu vereinfachen. Theoretisch kann nicht so viel schiefgehen, wenn den Benutzern nicht erlaubt ist, ihre Profile zu verändern. Außerdem kann für alle Benutzer das gleiche standardisierte Profil verwendet werden. In der Praxis gibt es jedoch einige Probleme. Da die Benutzer während einer Sitzung die Konfigurationseinstellungen in ihrem lokalen Profil verändern können, kann es beim nächsten Anmelden an der Domäne zu Verwirrung kommen, wenn sie feststellen, dass ihre Änderungen »verloren« gegangen sind. Installiert der Benutzer eines Clients eine Anwendung neu an einer anderen Stelle, können die Aliase des Programms auf dem Desktop, im Start-Menü oder dem Schnellstartbereich nicht dauerhaft gelöscht werden. Sie tauchen immer wieder auf, wenn sich der Benutzer an der Domäne anmeldet. Im Prinzip handelt es sich bei einem Mandatory-Profil um ein Roaming-Profil, das beim Abmelden nie auf dem Server aktualisiert wird! Ein anderes Problem besteht darin, dass die unterschiedlichen Windows-Versionen MandatoryProfile verschieden behandeln. Wenn ein Benutzer, der ein Mandatory-Profil besitzt, eine neue Datei auf seinem Desktop erzeugt, kann es passieren, dass die Datei bei der nächsten Anmeldung oder nach einem Neustart verschwunden ist. Manche Windows-Versionen speichern die Desktop-Dateien im lokalen Profil (selbst wenn die Datei im Mandatory-Profil nicht existiert), andere dagegen nicht. Um ein Roaming-Profil in ein Mandatory-Profil umzuwandeln, müssen Sie einfach nur die .dat-Datei im Roaming-Profil-Verzeichnis auf dem Server so umbenennen, dass sie stattdessen die Erweiterung .man trägt. Bei einem Windows 95/98/Me-Roaming-Profil würden Sie USER.DAT in
USER.MAN umbenennen, bei einem Windows NT/2000/XP-Roaming-Profil benennen Sie NTUSER. DAT in NTUSER.MAN um. Außerdem würden Sie vermutlich das Roaming-Profil-Verzeichnis mit einem Schreibschutz versehen, damit nicht ein Benutzer sich einfach mit seinem UnixBenutzerzugang auf dem Samba-Host-System anmeldet und etwas ändert. Falls Sie wollen, dass alle Ihre Benutzer ein gemeinsames Mandatory-Profil verwenden, können Sie die Definitionen von logon path und logon home in Ihrer smb.conf-Datei derart ändern, dass sie auf ein gemeinsames Mandatory-Profil auf dem Server verweisen. Die Verzeichnisstruktur und die symbolischen Links müssen Sie entsprechend anpassen. logon path und logon home könnten beispielsweise folgendermaßen definiert werden: logon path = \\%L\profiles\%m logon home = \\%L\%u\.win_profile\%m
Beachten Sie, dass wir den %u-Teil des Pfads für logon path entfernt haben. Wir würden außerdem die Verzeichnisstruktur auf dem Server so ändern, dass die Trennung der Profile anhand der Benutzernamen aufgehoben wird und wir nur noch ein Profil für jede Windows NT/2000/XP-Version haben. Für logon home ist dieses Vorgehen nicht geeignet, da es auch zur Festlegung des HomeVerzeichnisses verwendet wird. In diesem Fall würden wir die symbolischen Links im .win_profileVerzeichnis der einzelnen Benutzer so ändern, dass diese auf ein gemeinsames Mandatory-ProfilVerzeichnis verweisen, in dem die Mandatory-Profile für Windows 95/98/Me stehen. Prüfen Sie auch hier die Eigentümerschaft der Dateien und die Rechte darauf in dem Verzeichnis und verändern Sie diese, falls sich das als notwendig erweisen sollte, damit die Benutzer die Dateien nicht einfach über ihren Unix-Zugang auf dem Samba-Host ändern können.
Optionen für das Anmeldeskript und das Roaming-Profil Tabelle 4-1 fasst die Optionen zusammen, die üblicherweise im Zusammenhang mit Windows NTDomänen-Anmeldeskripten und Roaming-Profilen verwendet werden.
Tabelle 4-1 Optionen für Anmeldeskripten Option
Parameter
Funktion
Vorgabewert Geltungsbereich
logon script
String (MS-DOS-Pfad)
Name der Anmeldeskript-BatchDatei
keiner
global
logon path
String (UNC-Server- und Freigabename)
Ablageort des Roaming-Profils
\\%N\%U\ profile
global
logon drive
String (Laufwerkbuchstabe)
gibt das Anmeldelaufwerk für ein Home-Verzeichnis an
Z:
global
String (UNC-Server- und Freigabename)
gibt einen Ablageort für die HomeVerzeichnisse der Clients an, die sich an der Domäne anmelden
\\%N\%U
global
logon home
logon script Diese Option gibt eine Windows-Batch-Datei an, die auf dem Client ausgeführt wird, nachdem sich ein Benutzer an der Domäne angemeldet hat. Jedes Anmeldeskript sollte im Root-Verzeichnis der
[netlogon]-Freigabe oder einem Unterverzeichnis gespeichert werden. Diese Option verwendet oft die Variablen %U oder %m (Benutzer oder NetBIOS-Name), um auf ein spezielles Skript zu verweisen. Zum Beispiel führt [global] logon script = %U.bat
ein Skript auf der Grundlage des Benutzernamens aus. Handelt es sich bei dem Benutzer, der sich anmeldet, um fred und verweist der Pfad der [netlogon]-Freigabe auf das Verzeichnis /export/ samba/netlogon, muss das Skript den Namen /export/samba/netlogon/fred.bat tragen. Da diese Skripten auf den Client heruntergeladen und auf der Windows-Seite ausgeführt werden, müssen sie an Stelle der Unix-Newline-Zeichen Newline-Zeichen im MS-DOS-Stil enthalten. logon path Diese Option legt fest, wo die Roaming-Profile abgelegt werden. Wenn sich der Benutzer anmeldet, wird vom Server ein Roaming-Profil auf den Client heruntergeladen und während der Sitzung als lokales Profil verwendet. Meldet sich der Benutzer wieder ab, wird der Inhalt des lokalen Profils wieder auf den Server hochgeladen, bis der Benutzer sich irgendwann wieder anmeldet. Oft ist es sicherer, eine eigene Freigabe anzulegen, die ausschließlich zum Speichern der Benutzerprofile eingesetzt wird: [global] logon path = \\hydra\profile\%U
Nähere Informationen über diese Option finden Sie im Abschnitt »Roaming-Profile« weiter oben in diesem Kapitel. logon drive Diese Option gibt den Laufwerkbuchstaben auf einem Windows NT/2000/XP-Client an, auf den das mit der Option logon home festgelegte Home-Verzeichnis abgebildet wird. Beachten Sie, dass diese Option nur bei Windows NT/2000/XP-Clients funktioniert, zum Beispiel: [global] logon drive = I:
Sie sollten immer Laufwerkbuchstaben verwenden, die nicht mit fest zugewiesenen Laufwerken auf der Client-Maschine kollidieren. Die Vorgabe Z: ist insofern eine gute Wahl, als sie so weit wie möglich von A:, C: und D: entfernt ist. logon home Diese Option legt den Standort des Home-Verzeichnisses eines Benutzers für die Verwendung durch die MS-DOS-net-Befehle fest. Um beispielsweise ein Home-Verzeichnis als Freigabe auf einem Samba-Server anzugeben, verwenden Sie Folgendes: [global] logon home = \\hydra\%U
Das funktioniert ganz gut mit dem [homes]-Dienst, Sie können aber auch jedes andere Verzeichnis angeben. Home-Verzeichnisse können mit dem folgenden Befehl mit einem Anmeldeskript
verknüpft werden: C:\>net use i: /home
Systemrichtlinien Eine Systemrichtlinie kann in einer Windows NT-Domäne als Werkzeug zur Fernverwaltung eingesetzt werden. Sie hilft bei der Implementierung einer ähnlichen Rechnerumgebung auf allen Clients und bei der Beschränkung der Fähigkeit der Benutzer, Konfigurationseinstellungen auf ihren Systemen zu ändern, bzw. ermöglicht es, nur die Ausführung bestimmter Programme zu erlauben. Eine Anwendungsmöglichkeit für Systemrichtlinien besteht darin, sie zusammen mit MandatoryProfilen einzusetzen, um eine Gruppe von Computern für die öffentliche Benutzung einzurichten, beispielsweise in einer Bibliothek, einer Schule oder einem Internetcafé. Eine Systemrichtlinie ist eine Sammlung von Registry-Einstellungen, die in einer Datei auf dem PDC gespeichert und automatisch auf den Client heruntergeladen werden, wenn sich Benutzer an der Domäne anmelden. Die Datei, in der die Einstellungen enthalten sind, wird auf einem WindowsSystem mit Hilfe des Systemrichtlinien-Editors erstellt. Da das Format der Registry bei Windows 95/98/Me und Windows NT/2000/XP unterschiedlich ist, muss sichergestellt werden, dass die Datei im richtigen Format erzeugt wird. Dies ist eine recht einfache Angelegenheit, denn wenn der Systemrichtlinien-Editor unter Windows 95/98/Me ausgeführt wird, erzeugt er eine Datei im Format für Windows 95/98/Me, unter Windows NT/2000/XP verwendet er das von diesen Versionen benötigte Format. Nach dem Erstellen der Datei mit dem Systemrichtlinien-Editor wird sie auf dem primären Domänen-Controller gespeichert und während der Anmeldung durch die Clients automatisch heruntergeladen. Die Richtlinien werden dann auf das Client-System angewendet. Unter Windows NT 4.0 Server können Sie den Systemrichtlinien-Editor ausführen, indem Sie sich als Administrator oder als ein anderer Benutzer aus der Gruppe der Administratoren anmelden, das Start-Menü öffnen und Programme, dann Verwaltung (Allgemein) und anschließend Systemrichtlinien-Editor wählen. Unter Windows 2000 Advanced Server öffnen Sie das Start-Menü und klicken auf Ausführen... Im sich öffnenden Dialog geben Sie C:\winnt\poledit.exe ein und klicken dann auf ok. Wenn Sie eine andere Windows-Version als NT Server oder Windows 2000 Advanced Server einsetzen, müssen Sie den Systemrichtlinien-Editor installieren. Allerdings ist es etwas kompliziert, eine Kopie davon zu bekommen. Falls Sie Windows NT 4.0 Workstation oder Windows 2000 Professional verwenden und eine Windows NT 4.0 Server-Installations-CD-ROM besitzen, können Sie die Datei \Clients\Svrtools\Winnt\Setup.bat von dieser CD ausführen, um die Client-based Network Administration Tools zu installieren, zu denen auch poledit.exe gehört. Öffnen Sie dann das Start-Menü, klicken Sie auf Ausführen..., geben Sie dort C:\winnt\system32\poledit.exe ein und klicken Sie auf ok. Falls Sie Windows 95/98 verwenden, legen Sie eine Windows 95- oder Windows 98-CD-ROM4 in Ihr CD-ROM-Laufwerk ein, öffnen die Systemsteuerung und doppelklicken auf den Button Software. Klicken Sie auf das Register Windows Setup und dann auf den Button Diskette... Im nun erscheinenden Dialog klicken Sie auf Durchsuchen... und wählen das CD-ROM-Laufwerk aus dem Drop-down-Menü Laufwerke. Wenn Sie: ●
●
eine Windows 95-Installations-CD-ROM verwenden, doppelklicken Sie auf die Ordnersymbole admin, dann apptools, dann poledit. eine Windows 98-Installations-CD-ROM verwenden, doppelklicken Sie auf die Ordnersymbole tools, dann reskit, dann netadmin, dann poledit.
Im Dateinamenbereich auf der linken Seite des Dialogs sollte »grouppol.inf« stehen. Klicken Sie auf die OK-Buttons in den beiden Dialogen. Ihnen wird ein Dialogfeld präsentiert, in dem Sie die beiden Optionsfelder Gruppenrichtlinien und Systemrichtlinien-Editor aktivieren müssen. Klicken Sie nun auf den Button Installieren. Schließen Sie die verbleibenden Dialoge. Nun können Sie den Systemrichtlinien-Editor ausführen, indem Sie das Start-Menü öffnen und dann Programme, Zubehör, Systemprogramme, Systemrichtlinien-Editor wählen. Oder Sie klicken im Start-Menü auf Ausführen... und geben C:\Windows\Poledit ein.
Wenn der Systemrichtlinien-Editor startet, wählen Sie Neue Richtlinie aus dem Datei-Menü. Das sich öffnende Fenster sieht so ähnlich aus wie das in Abbildung 4-14. Abbildung 4-14 Das Fenster des Systemrichtlinien-Editors
Der nächste Schritt besteht darin, eine Auswahl aus dem Datei-Menü zu treffen, um Richtlinien für Benutzer, Gruppen und Computer hinzuzufügen. Bei jedem Eintrag, den Sie hinzufügen, werden Sie nach dem Benutzernamen oder dem Namen der Gruppe oder des Computers gefragt. Außerdem taucht jeweils ein neues Symbol im Fenster auf. Wenn Sie auf eines dieser Symbole doppelklicken, öffnet sich ein Eigenschaften-Dialog, zu sehen in Abbildung 4-15. Abbildung 4-15 Der Eigenschaften-Dialog des Systemrichtlinien-Editors
Das obere Fenster in diesem Dialog zeigt die Registry-Einstellungen, die als Teil der
Systemrichtlinien modifiziert werden können. Das untere Fenster zeigt beschreibende Informationen oder weitere Einstellungen, die zu den im oberen Fenster ausgewählten gehören. Beachten Sie in der Abbildung, dass es drei Optionsfelder gibt, die in unterschiedlichen Zuständen vorliegen: Markiert Bedeutet, dass die Registry-Einstellung in der Richtlinie aktiviert ist. Weiß (nicht markiert) Löscht die Registry-Einstellung. Grau Sorgt dafür, dass die Registry-Einstellung auf dem Client unverändert bleibt. Wenn alle Einträge grau bleiben (Voreinstellung), haben die Systemrichtlinien keine Auswirkungen. Die Registry des angemeldeten Clients wird nicht verändert. Sind jedoch einer oder mehrere der Einträge markiert oder nicht markiert (weiß), wird die Registry auf dem Client verändert. Das heißt, die Einstellung wird entsprechend aktiviert oder gelöscht.
Wir liefern Ihnen in diesem Abschnitt genügend Informationen zur Benutzung des Systemrichtlinien-Editors, um erst einmal anzufangen bzw. um sich so richtig ins Unglück stürzen zu können. Denken Sie daran, dass eine Systemrichtlinie, die einmal aktiviert wurde, die Registrys aller Clients verändert, die sich an der Domäne anmelden. Die üblichen Warnungen bezüglich der Bearbeitung einer Windows-Registry gelten natürlich auch hier, allerdings sind sie hier noch wichtiger. Bedenken Sie, wie schwierig (wenn nicht gar unmöglich) es für Sie sein wird, die Registrys auf all den Clients wiederherzustellen, falls etwas schiefgeht. Wie bei den Roaming-Profilen kann eine allzu lässige oder sorglose Implementierung von Systemrichtlinien leicht zu einer domänenweiten Katastrophe führen.
Das Erstellen einer guten Systemrichtliniendatei ist ein komplexes Thema, das wir hier nicht in aller Ausführlichkeit behandeln können. Es wäre ein ganzes Buch notwendig, und siehe da, es gibt ein O'Reilly-Buch zum Thema: Windows System Policy Editor. Eine andere wichtige Quelle mit Dokumentationen zu Windows NT-Systemrichtlinien und dem Systemrichtlinien-Editor ist das Microsoft-Whitepaper Implementing Policies and Profiles for Windows NT 4.0, das unter http://www.microsoft.com/ntserver/techresources/management/ prof_policies.asp zu finden ist. Sobald Sie eine Richtlinie erzeugt haben, klicken Sie auf ok und speichern sie. Benutzen Sie den Dateinamen config.pol für eine Windows 95/98-Systemrichtlinie und ntconfig.pol für eine Richtlinie, die auf Windows NT/2000/XP-Clients verwendet werden soll. Kopieren Sie schließlich die .pol-Datei in das für die [netlogon]-Freigabe verwendete Verzeichnis auf dem Samba-PDC. Die Dateien config.pol und ntconfig.pol müssen in dieses Verzeichnis geschrieben werden - im Gegensatz zu Roaming-Profilen und Anmeldeskripten gibt es keine Möglichkeit, den Ablageort der Systemrichtlinien-Dateien in smb.conf festzulegen. Wenn Sie unterschiedliche Systemrichtlinien für unterschiedliche Benutzer oder Computer wünschen, müssen Sie diesen Teil der Konfiguration im Systemrichtlinien-Editor ausführen.
Seien Sie vorsichtig, falls Sie Windows Me-Clients in Ihrem Netzwerk haben oder einsetzen wollen. Microsoft hat behauptet, dass Windows Me Systemrichtlinien nicht unterstützt. Das Eigenartige daran ist, dass es eine Richtlinie aus einer config.pol-Datei auf dem PDC herunterlädt, es aber keine Garantie dafür gibt, dass die Ergebnisse wie erwartet ausfallen. Prüfen Sie die Auswirkungen Ihrer Systemrichtlinie auf Ihren Windows Me-Clients, um sicherzugehen, dass alles wie gewünscht funktioniert. Wenn ein Benutzer sich an der Domäne anmeldet, lädt sein Windows-Client die .pol-Datei vom Server herunter. Die Einstellungen in dieser Datei (das heißt die Elemente, die im SystemrichtlinienEditor angeklickt oder gelöscht wurden) setzen die Einstellungen des Clients außer Kraft. Wenn alles funktionieren »sollte«, es aber nicht tut, versuchen Sie, den Windows-Client herunterzufahren und neu zu starten, anstatt sich einfach nur ab- und wieder anzumelden. Windows hält manchmal die [netlogon]-Freigabe über mehrere Sitzungen hinweg offen. Dies kann verhindern, dass der Client die aktualisierte .pol-Datei vom Server erhält.
Samba als Domänen-Member-Server Bisher haben wir uns darauf konzentriert, Samba als primären Domänen-Controller zu konfigurieren und einzusetzen. Falls Sie in Ihrem Netzwerk bereits einen Domänen-Controller haben, entweder ein Windows NT/2000-Server-System oder einen Samba-PDC, können Sie einen Samba-Server als Domänen-Member-Server in die Domäne aufnehmen. Dies schließt das Einrichten eines Computerzugangs für den Samba-Server auf dem primären Domänen-Controller ein, wie ja auch Windows NT/2000/XP-Clients Computerzugänge auf einem Samba-PDC haben können. Wenn ein Client auf Freigaben auf dem Samba-Domänen-Member-Server zugreift, leitet Samba die Authentifizierung an den Domänen-Controller weiter, anstatt die Aufgabe auf dem lokalen System auszuführen. Ist der PDC ein Windows-Server, könnten auch beliebig viele WindowsBDCs existieren, die an Stelle des PDC die Authentifizierung durchführen. Der erste Schritt besteht darin, den Samba-Server in die Domäne aufzunehmen. Dazu wird für ihn auf dem primären Domänen-Controller ein Computerzugang angelegt. Sie können dies mit dem Befehl smbpasswd erledigen: # smbpasswd -j DOMÄNE -r PDCNAME -Uadmin_zugang%kennwort
In diesem Befehl wird DOMÄNE durch den Namen der Domäne ersetzt, der der Samba-Host beitritt, PDCNAME wird durch den Computernamen des primären Domänen-Controllers ersetzt, admin_zugang wird durch den Benutzernamen eines administrativen Zugangs auf dem DomänenController ersetzt (entweder Administrator oder ein anderer Benutzer aus der Gruppe der Administratoren unter Windows NT/2000 und root auf Samba), und kennwort wird durch das Kennwort dieses Benutzers ersetzt. Hier ein etwas konkreteres Beispiel: In unserer Domäne, die einen Windows NT 4 Server-PDC oder einen Windows 2000 Active Directory-Domänen-Controller namens SINAGUA besitzt, würde der Befehl folgendermaßen lauten: # smbpasswd -j METRAN -r SINAGUA -UAdministrator%hup8ter
Wäre der PDC ein Samba-System, würden wir diesen Befehl verwenden: # smbpasswd -j METRAN -r toltec -Uroot%jwun83jb
wobei jwun83jb das Kennwort für den root-Benutzer ist, das in der Datei smbpasswd enthalten ist, wie wir weiter oben in diesem Kapitel ausgeführt haben. Wenn Sie alles richtig gemacht haben, antwortet smbpasswd mit einer Meldung, die besagt, dass der Domäne beigetreten wurde. Die vom PDC an Samba zurückgelieferte Sicherheits-ID5 wird in
der Datei /usr/local/samba/private/secrets.tdb abgelegt. Die Information in secrets.tdb ist sicherheitsrelevant, schützen Sie deshalb die Datei secrets.tdb auf die gleiche Weise wie die SambaKennwortdatei. Der nächste Schritt besteht darin, die Datei smb.conf zu verändern. Vorausgesetzt, Sie beginnen mit einer gültigen smb.conf-Datei, die Samba korrekt für den Betrieb in einer Arbeitsgruppe konfiguriert, wie die in Kapitel 2 verwendete Datei, müssen dazu einfach nur die folgenden drei Zeilen in den Abschnitt [global] aufgenommen werden: workgroup = METRAN security = domain password server = *
Die erste Zeile legt den Namen der Domäne fest (auch wenn dort »workgroup« steht). Benutzen Sie statt METRAN den Namen Ihrer gewünschten Domäne. Da die Sicherheit auf »domain« gesetzt wird, übergibt Samba die Authentifizierung an einen Domänen-Controller. Die Zeile password server = * weist Samba an, den Domänen-Controller für die Authentifizierung (bei dem es sich um den PDC oder um einen BDC handeln kann) zu ermitteln, indem der WINS-Server abgefragt wird oder Broadcast-Pakete eingesetzt werden, falls kein WINS-Server zur Verfügung steht. An dieser Stelle wäre es klug, testparm auszuführen, um zu prüfen, ob Ihre smb.conf fehlerfrei ist. Anschließend starten Sie die Samba-Daemons neu. Ist der PDC ein Windows NT-System, können Sie mit Hilfe des Server-Managers prüfen, ob der Samba-Server erfolgreich hinzugefügt wurde. Öffnen Sie das Start-Menü, wählen Sie Programme, dann Verwaltung (Allgemein) und danach Server-Manager. Der Server-Manager startet mit einem Fenster, das ähnlich aussieht wie das in Abbildung 4-16. Abbildung 4-16 Das Windows NT Server-Manager-Fenster
Wie Sie sehen können, haben wir sowohl toltec als auch mixtec in eine Domäne aufgenommen, für die das Windows NT 4.0 Server-System sinagua als primärer Domänen-Controller fungiert. Sie können Ihre Einstellungen unter Windows 2000 Advanced Server prüfen, indem Sie das StartMenü öffnen und dort Programme, Verwaltung, Active Directory Benutzer und Computer wählen. Das sich öffnende Fenster sieht etwa so aus wie das in Abbildung 4-17. Abbildung 4-17
Das Windows 2000-Fenster Active Directory Benutzer und Computer
Klicken Sie auf Computer auf der linken Seite des Fensters mit der Baumdarstellung. Ihr SambaSystem sollte im rechten Feld des Fensters aufgeführt sein.
Optionen für Windows NT-Domänen Tabelle 4-2 zeigt die Optionen, die üblicherweise im Zusammenhang mit Samba in einer Windows NT-Domäne zum Einsatz kommen.
Tabelle 4-2 Optionen für Windows NT-Domänen Option
Parameter
Funktion
Vorgabewert Geltungsbereich
domain logons
Boolescher Wert
zeigt an, ob WindowsDomänenanmeldungen verwendet werden
No
global
domain master
Boolescher Wert
teilt Samba mit, dass es die Rolle des DomänenHauptsuchdiensts übernehmen soll
Auto
global
add user script
String (Befehl)
Skript, das ausgeführt wird, um einen Benutzer- oder Computerzugang anzulegen
keiner
global
delete user script
String (Befehl)
Skript, das ausgeführt wird, um einen Benutzer- oder Computerzugang zu löschen
keiner
global
domain admin group
String (Liste von Benutzern)
Benutzer in der Gruppe Domänen-Admins
keiner
global
domain guest group
String (Liste von Benutzern)
Benutzer in der Gruppe Domain Guests
keiner
global
password server
String (Liste von Computern)
Liste mit DomänenControllern, die für die Authentifizierung genutzt werden, wenn Samba als Domänen-Member-Server läuft
keiner
global
machine password timeout
numerisch (Sekunden)
Legt das Erneuerungsintervall für Maschinenkennwörter an der NT-Domäne fest
604.800 (1 Woche)
global
Nun folgen die ausführlichen Erklärungen der einzelnen Optionen für Windows NT-Domänen aus Tabelle 4-2. domain logons Diese Option konfiguriert Samba so, dass es Domänenanmeldungen als primärer DomänenController akzeptiert. Wenn sich ein Client erfolgreich an der Domäne anmeldet, liefert Samba ein besonderes Token an den Client zurück, das es dem Client erlaubt, auf Freigaben in der Domäne zuzugreifen, ohne zuvor noch einmal den PDC um Authentifizierung zu bitten. Beachten Sie, dass die Samba-Maschine Sicherheit auf Benutzerebene (security = user) einsetzen und PDC sein muss, damit diese Option funktioniert. Darüber hinaus erwarten Windows-Maschinen, dass auf dem Samba-Server eine [netlogon]-Freigabe existiert. domain master In einem Windows-Netzwerk erledigt ein lokaler Hauptsuchdienst die Suche innerhalb eines Subnetzes. Eine Windows-Domäne kann aus mehreren Subnetzen bestehen, die jeweils ihren eigenen lokalen Hauptsuchdienst besitzen. Der primäre Domänen-Controller führt die Funktion eines Domänen-Hauptsuchdiensts aus. Dazu sammelt er die Suchlisten der lokalen Hauptsuchdienste der einzelnen Subnetze. Jeder lokale Hauptsuchdienst fragt den DomänenHauptsuchdienst ab und nimmt die Informationen über andere Subnetze in seine eigenen Suchlisten auf. Wenn Samba als primärer Domänen-Controller konfiguriert ist, setzt es automatisch domain master = yes, wodurch es sich selbst zum Domänen-Hauptsuchdienst macht. Da Windows NT-PDCs die Rolle des Domänen-Hauptsuchdiensts immer für sich beanspruchen, darf Samba niemals zum Domänen-Hauptsuchdienst gemacht werden, wenn es einen Windows-PDC in der Domäne gibt. add user script Es gibt zwei Möglichkeiten, add user script zu benutzen. Wenn der Samba-Server als primärer Domänen-Controller eingerichtet ist, kann es einem Befehl zugewiesen werden, der auf dem Samba-Server ausgeführt wird, um einen Windows NT/2000/XP-Computerzugang in die Kennwortdatenbank von Samba aufzunehmen. Wenn der Benutzer auf dem Windows-System die Einstellungen des Computers ändert, um einer Domäne beizutreten, wird er nach dem Benutzernamen und dem Kennwort eines Benutzers gefragt, der auf dem Domänen-Controller administrative Rechte besitzt. Samba authentifiziert diesen Benutzer und führt dann das add user script mit root-Rechten aus. Wenn Samba als Domänen-Member-Server konfiguriert ist, kann add user script mit einem Befehl zum Anlegen eines Benutzers am System verknüpft sein. Dies erlaubt es Windows-Clients, Benutzer anzulegen, die auf Freigaben auf dem Samba-System zugreifen dürfen, ohne dass ein Administrator manuell auf dem Samba-Host einen Zugang anlegen muss. delete user script Es gibt Gelegenheiten, bei denen Benutzer automatisch aus der Domäne gelöscht werden. delete user script kann einem Befehl zugewiesen werden, der einen Benutzer so von dem Samba-Host entfernt, wie es ein Windows-Server tun würde. Vermutlich wollen Sie jedoch nicht, dass dies passiert, weil der Unix-Benutzer den Zugang möglicherweise aus anderen Gründen benötigt als zur Benutzung mit Samba. Wir empfehlen Ihnen daher, diese Option nur mit großer Sorgfalt einzusetzen. domain admin group In einer Domäne mit Windows-Systemen ist es einem Server immer möglich, von einem Domänen-
Controller eine Liste der Mitglieder aus der Gruppe der Domänen-Administratoren zu beziehen. Samba 2.2 besitzt nicht die Fähigkeit, dies zu erledigen. Der Parameter domain admin group dient als Möglichkeit, Samba sozusagen manuell darüber zu informieren, wer in der Gruppe ist. Die Liste sollte root (notwendig zum Anlegen von Benutzerzugängen) und alle Benutzer von Windows NT/2000/XP-Clients der Domäne enthalten, die in der Gruppe der Domänen-Administratoren sind. Diese Benutzer müssen vom PDC erkannt werden, damit sie ihre administrativen Aufgaben, wie das Anlegen neuer Benutzer in der Domäne, durchführen können. password server In einer Windows-Domäne, in der die Domänen-Controller ein Windows-PDC sowie mehrere Windows-BDC sind, authentifizieren die Clients und die Domänen-Member-Server die Benutzer, indem sie entweder den PDC oder einen der BDCs abfragen. Ist Samba als Domänen-MemberServer konfiguriert, bietet der Parameter password server eine gewisse Kontrolle darüber, wie Samba einen Domänen-Controller findet. Frühere Versionen von Samba konnten nicht die gleiche Methode verwenden wie Windows-Systeme, deshalb war es notwendig, eine Liste von Systemen anzugeben, die ausprobiert werden konnten. Wenn Sie password server = * setzen, ist Samba 2.2 in der Lage, den Domänen-Controller auf die gleiche Weise zu suchen wie Windows, wodurch die Anfragen auf mehrere BDCs verteilt werden können. Durch diese Maßnahme verringert sich die Gefahr, dass die BDCs auf Grund der Authentifizierungsanfragen überlastet werden. Wir empfehlen Ihnen, diese Methode einzusetzen. machine password timeout Die globale Option machine password timeout legt eine Laufzeit für Maschinenkennwörter in einer Windows NT-Domäne fest. Standardmäßig wird zurzeit der gleiche Wert benutzt wie bei Windows NT 4.0: 604.800 Sekunden (eine Woche). Samba versucht periodisch, das Maschinenkennwort zu ändern. Dabei handelt es sich um ein Kennwort, das speziell von einem anderen Server verwendet wird, um über Änderungen zu berichten. Diese Option gibt in Sekunden an, wie lange Samba warten soll, bevor es versucht, das Kennwort zu ändern. Die Timeout-Periode kann mit dem folgenden Befehl auf einen Tag geändert werden: [global] machine password timeout = 86400
Falls Sie mehr darüber wissen wollen, wie Windows NT DomänenBenutzernamen und -gruppen verwendet, empfehlen wir das Buch Windows NT in a Nutshell von Eric Pearce (O'Reilly & Associates). 1Wenn
wir bei unseren Ausführungen über Windows NT-Domänen in diesem Buch Windows XP einschließen, beziehen wir uns auf Windows XP Professional und nicht auf die Home-Edition. Der Grund dafür wird im Abschnitt über Windows XP weiter unten in diesem Kapitel erläutert.
2Der
Eintrag in /etc/passwd ist möglicherweise in künftigen Samba-Versionen nicht mehr erforderlich.
3Falls
Sie unser Beispiel in diesem Abschnitt verfolgen wollen, Ihr Netzwerk aber keine WindowsSysteme enthält, die Freigaben anbieten, lesen Sie in Kapitel 5 nach, wie Sie eine Freigabe anlegen. Sie sollten zuerst verstanden haben, wie Freigaben eingerichtet werden, bevor Sie mit den hier gezeigten Anweisungen fortfahren!
4Die
mit Windows 98 gelieferte Version des Systemrichtlinien-Editors ist ein Update der mit Windows 95 ausgelieferten Version. Verwenden Sie nach Möglichkeit die Version der Windows 98Distribution.
5Diese
Sicherheits-ID (SID) ist Teil eines Zugriffs-Tokens, das dem PDC erlaubt, den Client zu
identifizieren und zu authentifizieren.
Kapitel 5 Unix-Clients In Kapitel 3 haben wir Ihnen gezeigt, wie Sie Windows-Systeme für den Zugriff auf freigegebene Ressourcen sowohl auf Windows- als auch auf Samba-Servern konfigurieren. Dies hat Ihnen vermutlich eine völlig neue Rechnerwelt eröffnet eine, in der Sie jedes Mal ein Windows-System starten müssen, wenn Sie eine Datei zwischen Unix und Windows kopieren wollen! In diesem Kapitel werden wir Ihnen die »andere Seite« präsentieren - wie Sie von Ihrem bevorzugten UnixSystem aus auf SMB-Freigaben zugreifen. Es gibt drei Möglichkeiten, von Unix aus auf SMB-Ressourcen zuzugreifen, je nachdem, was für eine Version von Unix Sie verwenden. Ein Programm namens smbclient, das in der Samba-Distribution enthalten ist, kann benutzt werden, um eine Verbindung zu einer Freigabe im Netzwerk herzustellen. Das funktioniert ungefähr auf die gleiche Weise wie ftp beim Übertragen von Dateien von oder zu einer FTP-Site. Falls Sie auf Ihrem System Linux betreiben, können Sie das smbfs-Dateisystem einsetzen, um SMB-Freigaben wie eine Plattenpartition oder ein NFS-Dateisystem direkt auf Ihr Linux-Dateisystem aufzusetzen (zu mounten). Alle Programme, die auf dem Linux-System laufen, können dann auf die SMB-Freigaben zugreifen und sie manipulieren: Kommando-Shells, grafische Desktop-Programme und Anwendungssoftware. Auf einigen BSD-basierten Systemen, einschließlich Mac OS X, können zwei Dienstprogramme namens smbutil und mount_smbfs verwendet werden, um SMB-Server abzufragen und Freigaben zu mounten. Bei anderen Unix-Varianten kann smbsh gebräuchliche Shell-Befehle wie cd, ls, mv, wc und grep aktivieren, um auf Dateien und Verzeichnisse auf SMBFreigaben zuzugreifen und diese zu bearbeiten. Dies erweitert im Prinzip den Wirkungsbereich der Unix-Shell und der Dienstprogramme über das UnixDateisystem hinaus in das SMB-Netzwerk. Alle Unix-Clients können auf Freigaben zugreifen, die von Windows-Systemen oder Samba-Servern angeboten werden. Wir haben Ihnen bereits gezeigt, wie Sie eine Freigabe auf einem Samba-Server einrichten, und könnten dies als Beispiel für die weiteren Ausführungen nutzen. Es ist aber viel lustiger, die Unix-Clients mit Freigaben zu nutzen, die von Windows-Systemen angeboten werden. Bevor wir also die Unix-Clients genauer betrachten, werden wir Ihnen schnell zeigen, wie Sie Dateifreigaben auf Windows 95/98/Me- sowie auf Windows NT/2000/XPSystemen einrichten.
Dateien unter Windows 95/98/Me freigeben Wenn Sie Dateien unter Windows 95/98/Me freigeben, können Sie Benutzer auf zwei verschiedene Arten authentifizieren. Standard ist Sicherheit auf Freigabeebene. Diese Methode ist einfach zu einzusetzen. Sie ist jedoch nicht
allzu sicher. Außerdem verlangt sie von den Benutzern, Kennwörter einzugeben, wenn diese sich an einer Freigabe anmelden. Ein besseres Sicherheitsmodell bietet Sicherheit auf Benutzerebene. Diese kann verwendet werden, wenn Sie die Benutzerauthentifizierung in Ihrem Netzwerk durch einen Samba- oder einen Windows NT/2000-Server erledigen lassen. Um die Art der Zugriffskontrolle für Ihr System zu konfigurieren, öffnen Sie die Systemsteuerung, doppelklicken auf das Netzwerk-Symbol und klicken dann auf die Registerkarte Zugriffssteuerung. Sie sollten nun den Dialog aus Abbildung 5-1 sehen. Abbildung 5-1 Die Registerkarte Zugriffssteuerung im Windows 98Systemsteuerungsfenster Netzwerk
Klicken Sie je nach gewünschter Sicherheitsstufe auf den Radio-Button Zugriffssteuerung auf Freigabeebene oder Zugriffssteuerung auf Benutzerebene. Wenn Sie Zugriffssteuerung auf Benutzerebene auswählen, müssen Sie außerdem den Namen Ihrer Arbeitsgruppe oder Windows NT-Domäne angeben. Starten Sie anschließend den Rechner neu. Um einen Ordner freizugeben, klicken Sie mit der rechten Maustaste auf sein Symbol und wählen Freigabe... Dies öffnet die Registerkarte Freigabe des Eigenschaften-Dialogs dieses Ordners. Klicken Sie auf den Radio-Button Freigeben als: und setzen Sie einen Namen für die Freigabe (vorgegeben ist der Name des Ordners) sowie eine Beschreibung ein, die den Benutzern angezeigt werden soll. Falls Sie nicht wollen, dass die Freigabe in der Netzwerkumgebung
der anderen Windows-Clients zu sehen ist, wählen Sie einen Namen, der mit einem Dollar-Zeichen endet ($). Abbildung 5-2 zeigt, wie die Freigabe-Registerkarte des Eigenschaften-Dialogs des Ordners aussieht, wenn Sie Sicherheit auf Freigabeebene verwenden. Die Sicherheitseinstellungen sind sehr einfach. Sie können einen Radio-Button für schreibgeschützten oder vollständigen (Lesen/Schreiben) Zugriff wählen oder die Zugriffsrechte des Benutzers (entweder schreibgeschützt oder Lesen/Schreiben) in Abhängigkeit vom verwendeten Kennwort einstellen. Entsprechend Ihrer Auswahl werden Sie aufgefordert, ein oder mehrere Kennwörter für die Freigabe zuzuweisen. Abbildung 5-2 Das Register Freigabe des EigenschaftenDialogs des Ordners mit Sicherheit auf Freigabeebene
Ist Ihr System mit Sicherheit auf Benutzerebene konfiguriert, sieht die Registerkarte Freigabe des Eigenschaften-Dialogs des Ordners aus wie in Abbildung 5-3. Wie Sie sehen können, haben wir eine Freigabe namens DATA erzeugt und dann über Hinzufügen... Zugriffsrechte zugewiesen, die den schreibgeschützten Zugriff für alle Benutzer der Domäne sowie vollständigen Zugriff für jay gewähren. Abbildung 5-3 Das Register Freigabe des EigenschaftenDialogs des Ordners mit Sicherheit auf
Benutzerebene
Wenn Sie die Einstellungen für die Freigabe getroffen haben, klicken Sie auf den OK-Button. Die Freigabe wird den Benutzern auf den Netzwerk-Clients zur Verfügung gestellt. Sie können die Freigabe in der Netzwerkumgebung der Windows-Clients im Netzwerk sehen, es sei denn, der Name der Freigabe endet mit einem Dollar-Zeichen. Außerdem können Sie nun die in diesem Kapitel beschriebenen Unix-Clients verwenden, um eine Verbindung zu der Freigabe herzustellen.
Dateien unter Windows NT/2000/XP freigeben Um eine Dateifreigabe unter Windows NT/2000/XP zu erzeugen, müssen Sie sich zuerst als ein Mitglied der Gruppen der Administratoren, Hauptbenutzer oder Server-Operatoren am System anmelden. Klicken Sie mit der rechten Maustaste auf einen Ordner, den Sie freigeben wollen, und klicken Sie im sich öffnenden Pop-up-Menü auf Freigabe... Die Registerkarte Freigabe des EigenschaftenDialogs des Ordners erscheint (siehe Abbildung 5-4). Klicken Sie auf den RadioButton Diesen Ordner freigeben. Abbildung 5-4 Das Register Freigabe des Eigenschaften-Dialogs des Ordners unter Windows 2000
Freigabename: ist standardmäßig der Name des Ordners; Sie können den Namen jedoch ändern. Ein Grund, einen anderen Namen für die Freigabe zu verwenden, wäre, dass die Freigabe nicht in Suchlisten auftauchen soll (die beispielsweise von der Netzwerkumgebung angezeigt werden). Dazu lassen Sie den Freigabenamen mit einem Dollar-Zeichen enden ($). Sie können im Kommentar:-Bereich eine Beschreibung der Freigabe angeben. Die Beschreibung ist für die Benutzer der Netzwerk-Clients sichtbar und hilft ihnen dabei, den Inhalt der Freigabe zu verstehen. Durch Anklicken des Berechtigungen-Buttons können Sie auf Benutzerbasis Zugriffsrechte für die Freigabe festlegen. Dies entspricht der Sicherheit auf Benutzerebene unter Windows 95/98/Me. Microsoft empfiehlt für Windows NT/2000/XP, die Freigaberechte so einzustellen, dass allen Benutzern voller Zugriff gewährt wird, wobei die Rechte im Dateisystem auf Dateibasis mit Hilfe von Zugriffskontrolllisten (ACLs) gesteuert werden. Die den Netzwerk-Clients tatsächlich gewährten Rechte stellen eine Kombination aus den Freigaberechten und den Dateizugriffsrechten dar. Um die ACL für den Ordner zu bearbeiten, klicken Sie auf das Register Sicherheitseinstellungen. Nähere Informationen über ACLs finden Sie im Abschnitt »Windows NT/2000/XP-ACLs« in Kapitel 8. Sie können die Zahl der Benutzer begrenzen, die sich gleichzeitig an einer Freigabe anmelden dürfen. Dazu verwenden Sie den Radio-Button Benutzerbegrenzung:. Der Button Neue Freigabe erlaubt es Ihnen, mehrere Dateifreigaben für den gleichen Ordner zu erzeugen, die jeweils ihren eigenen Namen, Kommentar, ihre eigene Benutzerbegrenzung sowie andere Parameter besitzen.
Wenn Sie fertig sind, klicken Sie auf den OK-Button. Der Ordner steht nun den anderen Clients im Netzwerk zur Verfügung.
smbclient Das Samba-Team stellt smbclient als Grundbestandteil der Samba-Suite bereit. Auf den ersten Blick scheint es sich dabei nur um eine primitive Schnittstelle zum SMB-Netzwerk zu handeln, tatsächlich ist smbclient jedoch ein sehr vielseitiges Werkzeug. Es kann eingesetzt werden, um Freigaben auf dem Server zu durchsuchen, Konfigurationen zu testen, Fehler zu suchen, auf freigegebene Drucker zuzugreifen, freigegebene Daten zu sichern und administrative Aufgaben in Shell-Skripten zu automatisieren. Und im Gegensatz zu smbfs und smbsh funktioniert smbclient auf allen Unix-Varianten, die Samba unterstützen. In diesem Kapitel konzentrieren wir uns vor allem auf smbclient als interaktive Shell, das heißt, wir verwenden seine ftp-artigen Befehle, um auf freigegebene Verzeichnisse im Netzwerk zuzugreifen. Die Verwendung von smbclient für den Zugriff auf Drucker und die Durchführung von Backups wird in Kapitel 10 behandelt. Eine vollständige Referenz zu smbclient finden Sie in Anhang C.
Dienste auflisten Die Option -L kann zusammen mit smbclient verwendet werden, um die Ressourcen auf einem Computer aufzulisten. Angenommen, der Samba-Server ist so konfiguriert, dass er die Rolle des Hauptsuchdiensts übernimmt. Wir können dann eine Liste der Computer in der Domäne oder Arbeitsgruppe beziehen: $ smbclient -L toltec added interface ip=172.16.1.1 bcast=172.16.1.255 nmask=255.255.255.0 Password: Domain=[METRAN] OS=[Unix] Server=[Samba 2.2.5]
Sharename
Type
Comment
---------
----
-------
test
Disk
Bitte nur zu Testzwecken verwenden
IPC$
IPC
IPC Service (Samba 2.2.5)
ADMIN$
Disk
IPC Service (Samba 2.2.5)
Server
Comment
---------
-------
MAYA
Windows 98
MIXTEC
Samba 2.2.5
TOLTEC
Samba 2.2.5
ZAPOTEC
Workgroup
Master
---------
-------
METRAN
TOLTEC
In der Spalte mit der Bezeichnung »Server« stehen maya, mixtec und zapotec zusammen mit toltec, dem Samba-Server. Die Dienste auf toltec sind unter »Sharename« aufgeführt. Die Freigaben IPC$ und ADMIN$ sind StandardWindows-Dienste, die der Netzwerkkommunikation sowie administrativen Aufgaben dienen. Bei test handelt es sich um das Verzeichnis, das wir in Kapitel 2 als Freigabe angelegt haben. Nachdem Sie nun die Namen der Computer in der Domäne erfahren haben, können Sie sich die Dienste auf einem beliebigen dieser Computer ausgeben lassen, wie beispielsweise die von maya, einer Windows 98-Workstation, angebotenen Dienste: $ smbclient -L maya added interface ip=172.16.1.1 bcast=172.16.1.255 nmask=255.255.255.0 Password:
Sharename
Type
Comment
---------
----
-------
PRINTER$
Disk
HP
Printer
HP 932C auf Maya
D
Disk
D: auf Maya
E
Disk
E: auf Maya
ADMIN$
Disk
IPC$
IPC
Remote Inter Process Communication
Server
Comment
---------
-------
Workgroup
Master
---------
-------
Ein freigegebener Drucker ist an maya angeschlossen, deshalb sehen wir den administrativen Dienst PRINTER$ sowie die Freigabe HP für den Drucker selbst. Ebenfalls auf maya befinden sich die Freigaben D und E, die über das Netzwerk den Zugriff auf mayas Laufwerke D: und E: erlauben. Es ist normal, dass die Abschnitte Server und Workgroup leer sind, wenn die Dienste auf einem Windows-Client aufgelistet werden.
smbclient authentifizieren Wie jeder andere SMB-Client muss auch smbclient einen Benutzernamen und ein Kennwort angeben, wenn es sich in einer Domänenumgebung authentifiziert oder einen Samba-Server anspricht, der mit Sicherheit auf Benutzerebene eingerichtet wurde. In einer Arbeitsgruppenumgebung ist zumindest ein Kennwort nötig, wenn eine Verbindung zu einer mit Kennwort geschützten Ressource aufgenommen wird. Standardmäßig verwendet smbclient den Benutzernamen des ausführenden Benutzers und fragt dann nach einem Kennwort. Falls Sie smbclient oft verwenden, haben Sie vermutlich irgendwann keine Lust mehr, jedes Mal Ihr Kennwort eingeben zu müssen. smbclient unterstützt einige alternative Methoden zum Angeben von Benutzernamen und Kennwort. Das Kennwort kann auf der Kommandozeile eingegeben werden: $ smbclient //maya/e jayspassword
Sowohl der Benutzername als auch das Kennwort können ebenfalls mit Hilfe der Option -U angegeben werden, wobei Benutzername und Kennwort durch ein Prozentzeichen (%) voneinander getrennt werden: $ smbclient //maya/e -U kelly%kellyskennwort
Diese Methode ist nützlich, wenn Sie an Ihrem System unter einem anderen Zugang angemeldet sind, der keinen Zugang auf Samba besitzt, oder wenn Sie testen wollen, wie Ihre Konfiguration einen anderen Benutzer behandelt. Bei beiden Methoden können Sie vermeiden, jedes Mal den Benutzernamen und/oder das Kennwort eingeben zu müssen, wenn Sie smbclient ausführen, indem Sie einen Alias für den Befehl erzeugen oder eine Shell-Funktion oder ein Shell-Skript einsetzen. Mit der bash-Shell ist es zum Beispiel möglich, eine solche Funktion zu definieren: smbcl(
)
{ smbclient $* -U jay%jayskennwort }
Fügen Sie die Definition dem Start-Skript der Shell hinzu (für die bash wäre dies ~/.bash_profile), beeinflusst die Definition alle folgenden Shell-Sitzungen. Eine andere Methode, die verwendet werden kann, um sowohl den Benutzernamen als auch das Kennwort anzugeben, besteht darin, die Umgebungsvariablen USER und PASSWD zu setzen. Sie setzen die Umgebungsvariable USER entweder mit Hilfe des Formats benutzername% kennwort, oder Sie setzen die Umgebungsvariable USER auf den Benutzernamen und PASSWD auf das Kennwort des Benutzers. Es ist außerdem möglich, eine Credentials-Datei zu erzeugen, die den Benutzernamen auf der ersten Zeile und das Kennwort auf der zweiten Zeile enthält: username = jay password = jayskennwort
Anschließend wird smbclient mit der Option -A aufgerufen, mit der der Name der Datei festgelegt wird: $ smbclient //maya/e -A ~/.smbpw
Von den in diesem Abschnitt beschriebenen Methoden ist nur eine wirklich sicher. Das ist die Standardmethode, bei der smbclient nach dem Kennwort fragen darf und das Kennwort dann ohne Wiedergabe auf dem Bildschirm eingetippt wird.
Wenn Sicherheit für Sie eine gewisse Wichtigkeit besitzt, sollten Sie es auf jeden Fall vermeiden, Ihr Kennwort auf der Kommandozeile anzugeben, da es sowohl für diejenigen, die Ihnen zufällig beim Tippen über die Schulter blicken, als auch jemanden, der die Befehls-History Ihrer Shell durchsucht, möglich ist, Ihr Kennwort auszuspähen.
Falls Sie Ihr Samba-Kennwort in einer Credentials-Datei, einer Shell-Startdatei oder einem Shell-Skript aufbewahren, müssen Sie sicherstellen, dass Dateizugriffsrechte es anderen Benutzern verbieten, die Datei zu lesen oder zu schreiben. (Benutzen Sie den Oktalwert 0600 für die Zugriffsrechte.) Sicherheitsexperten legen ihre Kennwörter niemals in Dateien ab, die Nicht-root-Benutzern gehören oder auf die von jemand anderem als dem Superuser zugegriffen werden kann. Als Teil ihrer Sicherheitsrichtlinien verbieten einige Einrichtungen das Speichern von Kennwörtern in Dateien. Sie sollten deshalb zuerst die Regeln prüfen, bevor Sie diese Methode anwenden.
Die Authentifizierungsmethode, die die Umgebungsvariablen USER und PASSWD verwendet, ist nicht sicherer. Umgebungsvariablen werden üblicherweise entweder auf der Kommandozeile oder in einer oder mehreren der Startdateien der Shell gesetzt. Diese Methode weist also die bereits genannten Schwachstellen auf. Darüber hinaus besitzt jedes Programm, das vom Benutzer ausgeführt wird, Zugriff auf die Umgebungsvariablen der Shell, wodurch ein Trojaner-Angriff auf die Variable PASSWD wirklich einfach gemacht wird!
Eine interaktive smbclient-Sitzung Ein gebräuchlicher Anwendungsfall für smbclient ist sein Einsatz als ftp-artige Shell zum Zugriff auf SMB-Ressourcen im Netzwerk. Um eine Sitzung zu beginnen, muss smbclient auf der Kommandozeile die UNC einer Ressource im Netzwerk geliefert werden (die Sie mit Hilfe der Option -L ermitteln können): $ smbclient //maya/e added interface ip=172.16.1.3 bcast=172.16.1.255 nmask=255.255.255.0
Password: smb: \>
Schrägstriche werden von smbclient für die UNC der Freigabe akzeptiert, wodurch sich das Eingeben der UNC auf der Kommandozeile vereinfacht. Backslashes können ebenfalls benutzt werden. Sie müssen jedoch geschützt werden, es ist daher etwas aufwändiger, '\\maya\e' oder \\\\maya\\e einzutippen. Nach dem Anmelden an der Freigabe zeigt smbclient den smb: \>-Prompt und wartet auf die Eingabe eines Befehls. Die Befehle sind den Ihnen vertrauten Befehlen in ftp sehr ähnlich und gleichen in gewisser Weise auch Unix-Shell-Befehlen. Um eine Liste der smbclient-Befehle zu erhalten, verwenden Sie den Befehl help: smb: \> help ls
dir
du
lcd
cd
pwd
get
mget
put
mput
rename
more
mask
del
open
rm
mkdir
md
rmdir
rd
prompt
recurse
translate
lowercase
print
printmode
queue
cancel
quit
q
exit
newer
archive
tar
blocksize
tarmode
setmode
help
?
history
!
Einige Befehle in der gezeigten Liste sind Synonyme für andere Befehle. So ist beispielsweise der Befehl ? ein Synonym für help. Sie können diesem Befehl den Namen eines anderen Befehls als Argument übergeben, um eine Zusammenfassung über die Funktionsweise des Befehls zu bekommen: smb: \> ? ls HELP ls: <mask> list the contents of the current directory
Der Begriff <mask> bezieht sich auf ein Suchmuster, das üblicherweise in UnixShells und Dienstprogrammen zu finden ist. So listet zum Beispiel smb: \> ls *doc
ms-ProfPol-wp.doc 09:12:34 2002
A
131
Tue Dec 18
smbclient.doc 20:22:24 2002
A
33969
Mon Dec 10
smbmount.doc 20:20:00 2002
A
7759
Mon Dec 10
48590 blocks of size 524288. 40443 blocks available
alle Dateien auf, die im aktuellen Verzeichnis auf dem entfernten System auf »doc« enden. Die erste Spalte in dem Listing zeigt den Dateinamen. Von links nach rechts folgen die MS-DOS-Attribute der Datei, die Größe und der Zeitpunkt der letzten Änderung. Wie jedes andere Unix-Dienstprogramm besitzt auch smbclient ein Arbeitsverzeichnis auf dem lokalen Host. Außerdem besitzt es ein weiteres aktuelles Verzeichnis auf der entfernten SMB-Share. Bei smbclient wird der Befehl cd verwendet, um im entfernten System zu navigieren: smb: \> cd trans smb: \trans\>
Beachten Sie, wie die Änderung des Prompts das neue aktuelle Arbeitsverzeichnis anzeigt. Um auf dem lokalen System das aktuelle Verzeichnis zu wechseln, verwenden Sie den Befehl lcd: smb: \trans\> lcd /u/snd the local directory is now /u/snd
Die meisten der Befehle von smbclient dienen dazu, Operationen auf entfernten Dateien und Verzeichnissen auszuführen. Es gibt keinen Befehl zum Auflisten des Inhalts des lokalen Verzeichnisses. Allerdings erlaubt smbclient ein Shell-Escape. Jeder Befehl, dem ein Ausrufezeichen vorangestellt (!) ist, wird als Shell-Befehl interpretiert und in einer Subshell auf dem lokalen System ausgeführt. Ein Beispiel: smb: \trans\> ! ls -l total 16 drwxrwxr-x
2 jay
jay
4096 Jan 10 14:46 dr220-fet
drwxrwxr-x
2 jay
jay
4096 Sep 22 12:16 dr220-tube
-rw-rw-r--
1 jay
jay
drwxrwxr-x
7 jay
jay
131 Jan 10 02:22 readme.txt 4096 Jan 10 02:19 xl1
Dieser Befehl listet den Inhalt von /u/snd auf. Wenn smbclient-Befehle zum Arbeiten auf dem entfernten System und geschützte Shell-Befehle zum Arbeiten auf dem lokalen System verwendet werden, ist es möglich, Daten auf beiden Systemen zu manipulieren, ohne smbclient beenden oder ein anderes ShellFenster öffnen zu müssen. Die Übertragung von Dateien wird mit Hilfe der Befehle get und put erledigt. Der get-Befehl überträgt eine einzelne Datei vom entfernten auf das lokale System. put wiederum kopiert eine Datei vom lokalen auf das entfernte System. Der folgende Befehl kopiert zum Beispiel die Datei readme.txt auf die SMB-Freigabe: smb: \trans\> put readme.txt putting file readme.txt as \trans\readme.txt (127.9 kb/s) (average 10.7 kb/s)
Im Gegensatz zu ftp kennt smbclient keine ascii- und binaryBefehle zum Einstellen des Typs der zu übertragenden Datei. Bevor Sie eine Textdatei von einem Unix-System auf ein Windows- oder Macintosh-System übertragen, sollten Sie daher den GNU-Befehl unix2dos einsetzen, um die Newlines in der Datei in der Weise neu zu formatieren, dass sie mit dem CRLF-Standard (Carriage Return Linefeed) funktionieren: $ unix2dos text_file >text_file.txt
Anschließend übertragen Sie die CRLF-formatierte Version. Nach dem Übertragen einer Textdatei von einem Windowsoder Macintosh-System nach Unix können Sie mit dem GNUBefehl dos2unix die entgegengesetzte Operation ausführen: $ dos2unix text_file.txt >text_file
Um mehr als eine Datei mit einem einzigen Befehl zu übertragen, verwenden Sie die Befehle mget und mput, die eine Liste mit Dateinamen auf der Kommandozeile akzeptieren. Die Liste kann angegeben werden, indem Sie die durch Leerzeichen getrennten Dateinamen auf der Kommandozeile eintippen. Es ist auch möglich, wie in Unix-Shell-Befehlen eine Gruppe von Dateien mit einem Muster festzulegen. Der Befehl: smb: \trans\> mget plain/*
kopiert alle Dateien aus dem Verzeichnis plain auf der SMB-Freigabe in das aktuelle Verzeichnis auf dem lokalen System. Standardmäßig fragt smbclient bei jeder Datei, ob Sie sie kopieren wollen: smb: \trans\> mget plain/* Get file tomm.wav? n Get file toml.wav? n Get file tomh.wav? n Get file snare.wav? n Get file rim.wav? n Get file handclap.wav? n Get file bassdrum.wav? n
Falls Sie sich sicher sind, dass Sie alle Dateien kopieren wollen, können Sie diese Nachfragen mit dem Befehl prompt deaktivieren: smb: \trans\> prompt prompting is now off
Durch die Angabe eines Verzeichnisnamens kopiert smbclient standardmäßig nicht den Inhalt des Verzeichnisses. Um den gesamten Inhalt eines Verzeichnisses zu übertragen, das Sie bei den Befehlen mput oder mget festgelegt haben, müssen Sie zuerst den Befehl recurse einsetzen: smb: \trans\> recurse directory recursion is now on
Wenn Sie nun alles mit den Befehlen prompt und recurse eingerichtet haben,
können Sie folgendermaßen ein Verzeichnis kopieren: smb: \trans\> mget acc getting file tomm.wav of size 55494 as tomm.wav (2580.6 kb/s) (average 2087.3 kb/s) getting file toml.wav of size 57220 as toml.wav (2660.9 kb/s) (average 2167.6 kb/s) getting file tomh.wav of size 55936 as tomh.wav (2601.2 kb/s) (average 2220.8 kb/s) getting file snare.wav of size 22132 as snare.wav (1200.7 kb/s) (average 2123.7 kb/s) getting file rim.wav of size 8314 as rim.wav (1623.8 kb/s) (average 2110.8 kb/s) getting file handclap.wav of size 14180 as handclap.wav (1978.2 kb/ s) (average 2106.2 kb/s) getting file bassdrum.wav of size 6950 as bassdrum.wav (2262.3 kb/s) (average 2108.5 kb/s)
Die Verzeichnisrekursion gilt für alle Befehle. Wird ein ls-Befehl ausgeführt, während die Verzeichnisrekursion aktiviert ist, werden alle Dateien in dem Verzeichnisbaum aufgeführt. Um die Verzeichnisrekursion wieder zu deaktivieren, geben Sie einfach den Befehl noch einmal ein. Gleichzeitig wollen Sie vermutlich das Nachfrageverhalten wieder in seinen ursprünglichen Zustand zurückversetzen: smb: \trans\> recurse directory recursion is now off smb: \trans\> prompt prompting is now on
Es gibt noch weitere smbclient-Befehle, die Sie nützlich finden werden. Der Befehl mkdir kann ein Verzeichnis anlegen, rmdir löscht ein Verzeichnis, rm löscht eine Datei, und rename ändert den Namen einer Datei. Diese Befehle verhalten sich ähnlich wie ihre Gegenstücke auf der Unix-Shell. Anhang C enthält eine vollständige Referenz zu smbclient und seinem Befehlssatz. Um smbclient zu beenden, verwenden Sie die Befehle exit oder quit: smb: \trans\> quit
Mit smbclient programmieren Die Option -c von smbclient erlaubt die Übergabe einer Liste mit Befehlen auf der Kommandozeile. Um die Datei \\maya\e\trans\readme.txt nach /u/snd/readme. txt zu kopieren, könnten wir diesen Befehl verwenden: $ smbclient //maya/e -c "lcd /u/snd; cd trans; get readme.txt" -A ~/. smbpw
Alles, was smbclient wissen muss, um die Operation auszuführen, wurde in diesem Befehl angegeben. Es gibt keine interaktive Sitzung. Ein solcher Befehl kann daher in ein Shell-Skript oder ein Programm in einer anderen Programmiersprache aufgenommen werden. Wenn Sie smbclient auf diese Weise einsetzen, ist es möglich, mit Hilfe von ShellFunktionen, Skripten oder Aliasen eigene Befehle zu erzeugen. Nehmen Sie zum Beispiel an, Sie brauchen einen Befehl, um eine kurze Liste mit Dateien in einem freigegebenen Verzeichnis zu drucken. In der Liste sollen nur die Namen der Dateien auftauchen. Mittels einer bash-Funktion könnten Sie den Befehl smbls definieren: smbls(
)
{ share=`echo $1 | cut -d '/' -f '1-4'` dir=`echo $1 | cut -d '/' -f '5-'` smbclient $share -c "cd $dir; ls" -A ~/.smbpw | \ grep "^ ' ' -f 3 - | sort }
Anschließend setzen Sie smbls folgendermaßen ein: $ smbls //maya/e CD-images lectures ms-ProfPol-wp.doc profile-map readme.txt RECYCLED
" | cut -d
smbclient.doc smbmount.doc smbsh.txt trans $ smbls //maya/e/lectures . .. lecture1.mp3 lecture2.mp3 lecture3.mp3 lecture4.mp3 lecture5.mp3 lecture6.mp3 lecture7.mp3 lecture8.mp3 lecture9.mp3
Ein anderes Anwendungsgebiet von smbclient in Skripten besteht in der Ausführung administrativer Aufgaben. Stellen Sie sich eine Gruppe von Benutzern auf Windows-Clients vor, die als Teil eines Projekts, an dem sie arbeiten, Dateien gemeinsam nutzen. Anstatt zu erwarten, dass diese Benutzer die Erstellung täglicher Backups miteinander koordinieren, könnten Sie ein Skript schreiben, das die Freigabe auf den Samba-Server kopiert. Das Skript würden Sie dann jede Nacht als cron-Job ausführen. Das Verzeichnis auf dem Samba-Server könnte ebenfalls freigegeben werden. Dadurch würde es den Benutzern erlaubt, ein Backup einer ihrer Dateien zu beziehen, ohne extra den Administrator belästigen zu müssen.
Backups mit smbclient Ein wichtiges Einsatzgebiet von smbclient ist die Erstellung und Wiederherstellung von Backups von SMB-Dateifreigaben. Die Backup-Dateien, die smbclient schreibt, liegen im tar-Format vor. Dadurch ist es einfach, mit ihnen zu arbeiten und sie auf andere Unix-Versionen zu übertragen. Die Benutzung von smbclient auf einem Unix-Server zum Erstellen von Netzwerk-Backups kann zu einer zentraleren und leichter zu verwaltenden Lösung zum Erhalten der Datenintegrität führen, da sowohl SMB-Freigaben als auch NFS-Dateisysteme auf
dem gleichen System gesichert werden können. Es gibt zwei Wege, um mit smbclient Backups auszuführen. Wenn Sie eine komplette Freigabe sichern, besteht die einfachste Methode darin, die Option -Tc auf der Kommandozeile einzugeben: # smbclient //maya/e -A samba-domain-pw -Tc >maya-e.tar
Dies erzeugt ein tar-Archiv der Freigabe \\maya\e in der Datei maya-e.tar. Mit der Option -D kann an Stelle der ganzen Freigabe ein Verzeichnis aus der Freigabe gesichert werden: # smbclient //maya/e -A samba-domain-pw -D trans -Tc >maya-e.tar
Dies veranlasst smbclient, in das Arbeitsverzeichnis trans der Freigabe \\maya\e zu wechseln, bevor mit dem Backup begonnen wird. Es ist auch möglich, den tarBefehl von smbclient im interaktiven Modus zu verwenden: # smbclient //maya/e added interface ip=172.16.1.3 bcast=172.16.1.255 nmask=255.255.255.0 Password: smb: \> cd trans smb: \trans\> tarmode full hidden system quiet smb: \trans\> tar c maya-e-trans.tar
Mit dem gezeigten Code wird nur das Unterverzeichnis trans der Freigabe \\maya \e gesichert. Dazu werden die Einstellungen verwendet, die im Befehl tarmode festgelegt wurden. Damit diese Art von Backup automatisch über ein Skript ausgeführt werden kann, verwenden Sie die Option -c: # smbclient //maya/e -A samba-domain-pw -c "cd trans; tarmode full hidden \ system quiet; tar >maya-e-trans.tar"
Über die Kommandozeilen-Option -T oder den tar-Befehl von smbclient können zusätzliche Optionen angegeben werden. Es ist notwendig, entweder die Option c anzugeben, um ein Sicherungsarchiv zu erstellen, oder die Option x, um das Archiv wieder zu extrahieren.1 Die anderen Optionen können an den OptionsString angehängt werden. Sie werden im Abschnitt über smbclient in Anhang C erläutert. Sie erlauben es Ihnen, inkrementelle Backups zu erzeugen sowie festzulegen, welche Dateien in das Backup aufgenommen oder aus ihm ausgeschlossen werden sollen, und legen eine Reihe weiterer Einstellungen fest.
Stellen Sie sich beispielsweise vor, Sie wollen ein inkrementelles Backup einer Freigabe herstellen und setzen das Archiv-Bit auf den Dateien zurück, um alles für das nächste inkrementelle Backup einzurichten. Anstatt die interaktiven Befehle smb: \> tarmode inc reset quiet smb: \> tar c backup.tar
zu benutzen, könnten Sie entweder den interaktiven Befehl smb: \> tar cgaq backup.tar
verwenden oder die Option -Tcgaq auf der smbclient-Kommandozeile einsetzen. Ihre beste Strategie für die Benutzung von smbclient für Netzwerk-Backups hängt von Ihrer lokalen Konfiguration ab. Wenn Sie nur einige Windows-Systeme haben, die wenige Daten gemeinsam nutzen, könnten Sie ein Skript schreiben, das -Tc-Befehle des smbclient enthält, mit dem Sie jede Freigabe in einer eigenen tar-Datei sichern und die Dateien dann in einem Verzeichnis ablegen, das bei den normalen Sicherungszyklen des Unix-Systems gesichert wird. Haben Sie dagegen große SMB-Freigaben in Ihrem Netzwerk, ziehen Sie es möglicherweise vor, das Backup direkt auf ein Bandlaufwerk zu schreiben. Sie können dies mit smbclient erledigen. Das funktioniert genauso wie der Unix-Befehl tar: # smbclient //maya/d -A samba-domain-pw -Tc >/dev/tape
Wenn Sie sich mit smbclient vertraut gemacht haben und Ihr automatisiertes Backup-System funktioniert, werden Sie feststellen, dass Sie sich mit Hilfe von Samba viel weniger Sorgen um die Integrität der Daten Ihres Netzwerks machen müssen. Die Autoren dieses Buches sind erfahrene Unix-Systemadministratoren. Wir empfehlen Ihnen, auf jeden Fall eine Backup-Strategie einzusetzen, die sorgfältig geplant, implementiert und - das ist wohl am wichtigsten - getestet und für gut befunden wurde.
smbfs Unter Linux kann das smbfs-Dateisystem dazu verwendet werden, SMBFreigaben auf eine Weise an das Linux-Dateisystem zu mounten, die ähnlich dem Mounten von Plattenpartitionen an NFS-Dateisystemen funktioniert. Das Ergebnis ist so transparent, dass Benutzer auf dem Linux-System es nicht einmal merken, dass sie über einen Windows- oder Samba-Server auf die Dateien zugreifen. Dateien und Verzeichnisse sehen genau so aus wie die anderen Dateien und Verzeichnisse auf dem lokalen Linux-System. Allerdings gibt es in Bezug auf die Eigentümerschaft und die Zugriffsrechte einige Unterschiede im Verhalten.2 smbfs basiert zwar auf dem Samba-Code, ist aber selbst kein Bestandteil der Samba-Distribution. Statt dessen ist es als normaler Bestandteil der LinuxDateisystemunterstützung in Linux enthalten.
Die Programme smbmount und smbmnt gehören zur Samba-Distribution und werden auf dem Client benötigt, um smbfs-Dateisysteme zu mounten. Samba muss mit der Konfigurationsoption --with-smbmount kompiliert werden, um sicherzustellen, dass diese Programme kompiliert werden. Sie suchen in der smb. conf nach Informationen über das lokale System und die Netzwerkkonfiguration, Sie benötigen deshalb eine funktionierende smb.conf-Datei auf dem System, selbst wenn dieses nicht als Samba-Server arbeitet.
Ein smbfs-Dateisystem mounten Der Befehl smbmount wird eingesetzt, um ein smbfs-Dateisystem an das LinuxDateisystem zu mounten. Die grundlegende Syntax lautet: # smbmount Freigabe-UNC Mount-Punkt -o Optionen
Ersetzen Sie Freigabe-UNC durch die UNC der SMB-Freigabe und Mount-Punkt durch den vollständigen Pfad zu dem Verzeichnis im Linux-Dateisystem, das als Mount-Punkt verwendet werden soll. Das Argument Optionen wird verwendet, um die genaue Art und Weise festzulegen, in der die Freigabe gemountet wird. Schauen wir uns das Beispiel eines smbmount-Befehls an: # smbmount //maya/e /smb/e \ -o "credentials=/home/jay/.smbpw,uid=jay,gid=jay,fmask=664, dmask=775"
Hier mounten wir die Freigabe \\maya\e eines Windows 98-Systems an den Mount-Punkt /smb/e auf dem Linux-System.
Enthält Ihr Linux-Kernel keine smbfs-Unterstützung, erhalten Sie folgende Fehlermeldung: ERROR: smbfs filesystem not supported by the kernel
In diesem Fall müssen Sie einen neuen Kernel konfigurieren und kompilieren, um Unterstützung für smbfs zu integrieren.
Wenn smbfs installiert und eine SMB-Freigabe gemountet ist, können Sie den Befehl $ cat /proc/filesystems
ausführen und erhalten eine solche Zeile: nodev
smbfs
in der Ausgabe des Befehls. Der Mount-Punkt muss existieren, bevor smbmount ausgeführt wird. Er kann mit Hilfe des Befehls mkdir erzeugt werden: # mkdir /smb/e
Das Argument der Option -o sieht vielleicht ein bisschen kompliziert aus. Es handelt sich dabei um eine durch Kommata getrennte Liste aus schlüssel=wertPaaren. Der credentials-Schlüssel wird auf den Namen der Credentials-Datei gesetzt, die dazu dient, smbmount einen gültigen Benutzernamen und ein gültiges Kennwort zu übergeben, mit dem die Authentifizierung während der Anmeldung an einer Freigabe vorgenommen wird. Das Format ist identisch mit dem von smbclient verwendeten (wie im vorangegangenen Abschnitt erklärt), Sie können also für beide Clients die gleiche Credentials-Datei benutzen. Wenn Sie wollen, können Sie das schlüssel=wert-Paar username=name%kennwort verwenden, um den Benutzernamen und das Kennwort direkt im smbmountBefehl festzulegen, obwohl die Sicherheit dadurch deutlich vermindert wird.
Der Befehl smbmount akzeptiert die gleichen Authentifizierungsmethoden wie smbclient. Die Kommentare in dem Abschnitt über smbclient bezüglich der Angabe von Kennwörtern auf der Kommandozeile - und dem Ablegen von Kennwörtern in Dateien und Umgebungsvariablen - gelten auch hier.
Die restlichen Optionen teilen smbmount mit, wie zwischen dem SMBDateisystem und dem Unix-Dateisystem übersetzt wird, die sich in der Handhabung der Eigentümerschaft und der Zugriffsrechte unterscheiden. Die Optionen uid und gid legen den Eigentümer und die Gruppe fest, die allen Verzeichnissen und Dateien in der gemounteten Freigabe zugewiesen werden. Die Optionen fmask und dmask geben Bit-Masken für die Rechte von Dateien bzw. Verzeichnissen an. Diese Bit-Masken sind durch ein logisches UND mit den Rechten verknüpft, die vom Server gewährt werden, um die effektiven Zugriffsrechte auf dem Client-Unix-System zu erzeugen. Auf der Server-Seite hängen die gewährten Zugriffsrechte vom Betriebssystem des Servers ab. Bei einem Windows 95/98/Me-Server mit Sicherheit auf Freigabeebene kann auf einzelnen Dateien und Verzeichnissen das MS-DOS-Attribut Read-only gesetzt und mit den Zugriffsrechten Full Access oder Read-only auf der Freigabe als Ganzes kombiniert werden. Im Modus Sicherheit auf Benutzerebene kann Windows 95/98/Me ACL-artige Zugriffsrechte besitzen, die auf die gesamte Freigabe angewendet werden, wie in Kapitel 4 vorgestellt. Windows NT/2000/XP unterstützen ACLs auf einzelnen Dateien und Verzeichnissen mit den Zugriffsrechten Full Control, Change oder Read, die auf die ganze Freigabe angewendet werden können. Handelt es sich bei dem Server um einen SambaServer, sind die Rechte identisch mit denen, die durch die Samba-Freigabe und das lokale Unix-System für die einzelnen Dateien und Verzeichnisse definiert sind. In jedem Fall dienen die Rechte, die auf die Freigabe angewendet werden, dazu, den Zugriff weiter einzuschränken - über das hinaus, was für die einzelnen Dateien und Verzeichnisse festgelegt wurde.
Möglicherweise glauben Sie, dass die Berechtigungsmasken fmask und dmask nur dazu verwendet werden können, die effektiven Zugriffsrechte auf Dateien und Verzeichnissen zu reduzieren. Das ist jedoch nicht immer der Fall. Nehmen Sie beispielsweise an, dass eine Datei von einem Windows 95/98/ Me-Server mit Sicherheit auf Freigabeebene freigegeben wird und eine ganze Reihe von Benutzern das Kennwort für den vollständigen Zugriff auf die Freigabe erhalten hat. Wenn die Freigabe mit smbmount unter Benutzung eines fmask-Werts von 666 gemountet wird, werden die Lese-/Schreibrechte auf dem Unix-System nicht nur für den Eigentümer, sondern auch für jeden anderen Benutzer auf dem Unix-System gewährt! Nach dem Mounten der Freigabe \\maya\d an /smb/e sieht der Inhalt von /smb/e folgendermaßen aus: $ cd /smb/e ; ls -l total 47
drwxrwxr-x
1 jay
jay
512 Jan
8 20:21 CD-images
drwxrwxr-x
1 jay
jay
512 Jan
6 21:50 lectures
-rw-rw-r-wp.doc
1 jay
jay
131 Dec 18 09:12 ms-ProfPol-
-rw-rw-r--
1 jay
jay
59 Dec 18 09:12 profile-map
-rw-rw-r--
1 jay
jay
131 Jan 15 05:01 readme.txt
drwxrwxr-x
1 jay
jay
512 Feb
-rw-rw-r--
1 jay
jay
33969 Dec 10 20:22 smbclient.doc
-rw-rw-r--
1 jay
jay
7759 Dec 10 20:20 smbmount.doc
-rw-rw-r--
1 jay
jay
1914 Dec 10 20:17 smbsh.txt
drwxrwxr-x
1 jay
jay
4
2002 RECYCLED
512 Jan 10 03:54 trans
Im Großen und Ganzen funktionieren die Dateien und Verzeichnisse, die in dem gemounteten smbfs-Dateisystem enthalten sind, genau so wie alle anderen, abgesehen von den Einschränkungen auf Grund der Natur der SMB-Netzwerke. So kann zum Beispiel nicht einmal der Superuser diese Operation ausführen: # chown root lectures chown: changing ownership of 'lectures': Operation not permitted
da SMB-Freigaben an sich den Gedanken der Eigentümerschaft nicht unterstützen. Das kann einige eigenartige Verhaltensweisen zur Folge haben. Beispielsweise erzeugt der Befehl: # chmod 777 readme.txt
keine Fehlermeldung, obwohl sich nichts geändert hat. Bei der Datei readme.txt sind die Zugriffsrechte weiterhin auf 664 gesetzt: # ls -l readme.txt -rw-rw-r--
1 jay
jay
131 Jan 15 05:01 readme.txt
Abgesehen von Kleinigkeiten wie diesen kann das gemountete smbfsDateisystem zusammen mit praktisch jeder Anwendung benutzt werden. Sie werden angenehm überrascht sein, wie nahtlos es sich in Ihre Linux-basierte Arbeitsumgebung einfügt. Sie können im Unix-Dateisystem sogar symbolische Links erzeugen, die auf Dateien und Verzeichnisse innerhalb von SMB-Freigaben
verweisen. Es ist jedoch nicht möglich, einen symbolischen Link innerhalb des gemounteten smbfs-Dateisystems zu erzeugen, es sei denn, der Server ist ein Samba-Server, der Unix-CIFS-Erweiterungen unterstützt.
smbfs-Dateisysteme automatisch mounten Genau wie andere Arten von Dateisystemen kann auch ein smbfs-Dateisystem automatisch während des Systemstarts gemountet werden, indem ein Eintrag dafür in /etc/fstab erstellt wird. Das Format des Eintrags sieht so aus: Freigabe-UNC Mount-Punkt
smbfs
Optionen 0 0
Ersetzen Sie Freigabe-UNC durch die UNC der Freigabe (im Format mit den Schrägstrichen) und Mount-Punkt durch den Namen des Verzeichnisses im LinuxDateisystem, an das die Freigabe gemountet wird. Bei den Optionen verwenden Sie einfach den String, den Sie mit dem Flag -o im Befehl smbmount benutzt haben. Sobald Sie die Argumente ermittelt haben, die zusammen mit dem Befehl smbmount eingesetzt werden, um die Freigabe auf die Art zu mounten, die Sie sich vorstellen, ist es eine sehr einfache Sache, den Eintrag für /etc/fstab zu erzeugen. Der Befehl smbmount, den wir verwendeten, um die Freigabe \\maya \e an /smb/e zu mounten, würde folgenden /etc/fstab-Eintrag ergeben: //maya/e /smb/e
smbfs
credentials=/home/jay/.smbpw,uid=jay,gid=jay,fmask=664,dmask=775 0 0
(Beachten Sie bitte, dass dies auf eine Zeile gehört.)
Wenn Sie einen Fehler beim Verändern der /etc/fstab machen, startet Ihr System möglicherweise nicht mehr richtig, und Sie müssen eventuell im Einbenutzermodus booten, um das Problem zu beheben. Bevor Sie die /etc/fstab bearbeiten, sollten Sie eine Sicherungskopie davon anlegen. Stellen Sie sich darauf ein, Ihr System wieder herzustellen, falls etwas schiefgeht. Wenn der Eintrag hinzugefügt wurde, mountet das System die Freigabe beim Start automatisch. Der Systemadministrator kann die Freigabe aber auch manuell mounten oder abmounten. Dazu verwendet er diese Befehle:
# mount /smb/e # umount /smb/e
Es ist möglich, mount und umount zu verwenden und diesen die UNC für die Freigabe im Format mit Schrägstrichen zu übergeben, wie in Ihrem /etc/fstab-Eintrag. Seien Sie dabei jedoch vorsichtig. Eine Freigabe könnte mehr als einmal in / etc/fstab aufgeführt sein, so dass sie auch an mehr als einer Stelle im Linux-Dateisystem gemountet werden kann. Wenn Sie die UNC verwenden, um die Freigabe festzulegen, die Sie mounten oder abmounten wollen, veranlassen Sie damit unter Umständen ein Mounten oder Abmounten an einem anderen als dem gewünschten Mount-Punkt.
Gängige smbmount-Optionen Tabelle 5-1 zeigt schlüssel=wert-Paare, die zusammen mit der Option -o des Befehls smbmount oder im Optionenfeld des /etc/fstab-Eintrags für das smbfsDateisystem verwendet werden können. In der smbmount-Manpage finden Sie eine vollständige Liste der Optionen.
Tabelle 5-1 smbmount-Optionen Schlüssel username
password
Wert String
Liefert zur Authentifizierung den Benutzernamen und optional das Kennwort und die Arbeitsgruppe.
String
Liefert das Freigabe- oder Domänenkennwort, falls dies noch nicht durch eine andere Methode angegeben wurde.
credentials String
uid
Funktion
String oder numerisch
Name der Datei, die den Benutzernamen und das Kennwort enthält. Benutzer-ID, die auf alle Dateien und Verzeichnisse der gemounteten Freigabe angewendet wird.
gid
String oder numerisch
Gruppen-ID, die auf alle Dateien und Verzeichnisse der gemounteten Freigabe angewendet wird.
fmask
numerisch
Auf Dateien anzuwendende Zugriffsrechte. Vorgabewert basiert auf aktuellem umask-Wert.
dmask
numerisch
Auf Verzeichnisse anzuwendende Zugriffsrechte. Vorgabewert basiert auf aktuellem umask-Wert.
debug
numerisch
Protokollierungsstufe.
workgroup
String
Name der Arbeitsgruppe des entfernten Servers.
guest
(kein)
Unterdrückt Kennwortabfrage.
ro
(kein)
Mountet schreibgeschützt.
rw
(kein)
Mountet les-/schreibbar. Vorgabewert.
ttl
numerisch
Zeitdauer, während der der Inhalt der Verzeichnisse im Cache gespeichert wird. Vorgabewert ist 1.000 ms.
smbsh Das Programm smbsh ist Teil der Samba-Suite und funktioniert auf einigen, nicht jedoch auf allen Unix-Varianten.3 Es fügt um die Kommando-Shell des Benutzers einen Wrapper hinzu, wodurch der Shell sowie gebräuchlichen UnixDienstprogrammen ermöglicht wird, neben Dateien und Verzeichnissen im lokalen Unix-System auch auf Dateien und Verzeichnissen in SMB-Freigaben zu agieren. Aus Sicht des Benutzers scheinen die SMB-Freigaben an das Unix-Dateisystem gemountet zu sein. smbsh funktioniert, indem die Shell und die von ihr ausgeführten Programme in einer Umgebung laufen, aus der Aufrufe an die Standard-C-Bibliothek an die smbwrapper-Bibliothek umgeleitet werden, die Unterstützung für das Arbeiten auf SMB-Freigaben enthält. Diese Umleitung kann nur funktionieren, wenn das ausgeführte Programm dynamisch gebunden ist. Glücklicherweise sind in modernen Unix-Versionen die meisten üblichen Dienstprogramme dynamisch und nicht statisch gebunden.
Um festzustellen, ob ein Programm dynamisch oder statisch gebunden ist, versuchen Sie einfach, den Befehl file einzusetzen. Um smbsh zu benutzen, muss Ihre Samba-Installation mit der Konfigurationsoption --with-smbwrapper konfiguriert sein. Falls Sie eine ganze Reihe von Unix-Systemen mit dem gleichen HostBetriebssystem und der gleichen Architektur haben und sich nicht mit einer kompletten Samba-Installation herumschlagen wollen, verschieben Sie einfach die folgenden Dateien auf die anderen Systeme: /usr/local/samba/bin/smbsh /usr/local/samba/bin/smbwrapper.so /usr/local/samba/lib/smb.conf
Achten Sie darauf, dass /usr/local/samba/bin im Suchpfad Ihrer Shell steht. Die Datei smb.conf wird von smbsh nur benötigt, um die Arbeitsgruppe oder Domäne zu ermitteln. Sie muss deshalb nicht so kompliziert sein wie die Konfigurationsdatei Ihres Samba-Servers.
Eine interaktive Sitzung mit smbsh Um smbsh zu starten, geben Sie am Shell-Prompt einfach den Befehl smbsh ein. Sie werden nach einem Benutzernamen und einem Kennwort gefragt, mit denen Sie sich am SMB-Netzwerk authentifizieren: $ smbsh Username: davecb Password: smbsh$
Während der Arbeit in der smbsh-Shell haben Sie ein virtuelles /smb-Verzeichnis. Dieses existiert im Unix-Dateisystem eigentlich nicht und wird innerhalb der smbsh nur unterstützt, um die SMB-Freigaben in einer Struktur zu organisieren, die Unix-Benutzern vertraut ist. Sie können den Inhalt des virtuellen /smbVerzeichnisses auflisten und eine Liste der Arbeitsgruppen im lokalen Netzwerk erhalten, die ebenfalls als virtuelle Verzeichnisse präsentiert werden: smbsh$ cd /smb ; ls ZOOL PLANK BACIL
Wenn Sie Ihr Arbeitsverzeichnis in eines der virtuellen
Arbeitsgruppenverzeichnisse verlegen, können Sie sich die Computer in der Arbeitsgruppe anzeigen lassen: smbsh$ cd ZOOL ; ls ANTILLES
DODO
MILO
SEAL
ARGON
HANGGLIDE
OSTRICH
SPARTA
BALLET
INFUSION
PLAQUE
THEBES
CHABLIS
JAZ
PRAETORIAN
TJ
COBRA
KIKO
RAYOPCI
TRANCE
COUGUR
MACHINE-HEADPCI
RUMYA
VIPERPCI
CRUSTY
MATHUMA
SCOT
Auf die gleiche Weise können Sie in eines der virtuellen Computerverzeichnisse wechseln und sich die Freigaben anzeigen lassen, die dieser Computer anbietet: smbsh$ cd scot ; ls ADMIN$
davecb
nc
np2s
pl
ace
dhcp-mrk03
np
nps
xp
cl
ep
np2
opcom
Dies ist die niedrigste Stufe des Systems der virtuellen Verzeichnisse von smbsh. Sobald Sie mit cd in eine Freigabe wechseln, befinden Sie sich innerhalb der SMBFreigabe auf dem entfernten Computer: smbsh$ cd davecb ; ls Mail
mkanalysis_dirs.idx
SUNWexplo
nfs.ps
Sent
nsmail
allsun.html
projects.txt
bin
sumtimex
In der entfernten Freigabe funktionieren die meisten Dienstprogramme der UnixShell, und Sie können auf Dateien und Verzeichnissen genauso arbeiten wie in einem beliebigen Unix-System. Sie können sogar symbolische Links im UnixDateisystem erzeugen, die auf Dateien und Verzeichnisse in der SMB-Freigabe
verweisen. Allerdings werden Versuche, symbolische Links in der SMB-Freigabe zu erzeugen, fehlschlagen, es sei denn, die Freigabe befindet sich auf einem Samba-Server mit Unterstützung für Unix-CIFS-Erweiterungen.
smbutil und mount_smbfs Die Programme smbutil und mount_smbfs liefern SMB-Client-Funktionalität für FreeBSD, Darwin und Mac OS X. Keines der Programme ist Bestandteil der Samba-Distribution; wir führen sie hier dennoch auf, um Ihnen ein wenig Unterstützung zu liefern, falls Sie Systeme mit BSD-Unix in Ihrem Netzwerk betreiben.
smbutil Das Programm smbutil stellt eine Funktionalität zur Verfügung, die ähnlich der einiger Kommandozeilen-Programme der Samba-Suite ist. Es kann verwendet werden, um die Freigaben auszugeben, die auf einem SMB-Server angeboten werden, oder um NetBIOS-Namensabfragen auszuführen. Das erste Argument, das an smbutil übergeben wird, besteht aus einer Reihe von Unterbefehlen. Üblicherweise folgen den Unterbefehlen die notwendigen Argumente. Um beispielsweise die Ressourcen aufzuführen, die von einem Server angeboten werden, verwenden Sie den Unterbefehl view und geben bei der entsprechenden Aufforderung Ihr Server-Kennwort ein: % smbutil view //vamana Password: Share
Type
Comment
------------------------------------------------------------public
disk
SS2500
printer
Stylus Scan 2500
IPC$
pipe
IPC Service (Samba 2.2.5)
ADMIN$
disk
IPC Service (Samba 2.2.5)
leonvs
disk
User Home Directories
5 shares listed from 5 available
Falls Sie sich an dem Server mit einem Benutzernamen anmelden wollen, der sich von dem auf Ihrem Client unterscheidet, können Sie diesen auf der Kommandozeile angeben. Dazu geben Sie vor dem Namen des Servers den Benutzernamen ein und trennen das Ganze mit einem at-Zeichen (@):
% smbutil view //leonvs@vamana
Sie können nach dem Benutzernamen auch das Kennwort eintippen. Als Trennzeichen wird in diesem Fall ein Doppelpunkt (:) verwendet. Dadurch vermeiden Sie die explizite Nachfrage nach dem Kennwort: % smbutil view //leonvs:leonspassword@vamana
Es wird ausdrücklich davon abgeraten, das Kennwort derart offen einzugeben. Verwenden Sie lieber ein verschlüsseltes Kennwort. Dieses können Sie mit dem smbutil-Unterbefehl crypt erzeugen: % smbutil crypt leonspassword $$1625a5723293f0710e5faffcfc6
Dies kann dann an Stelle eines Klartextkennwort eingesetzt werden. Die Verschlüsselung ist allerdings nicht besonders stark und hält nur einer oberflächlichen Überprüfung stand. Wie bereits früher ausgeführt, ist die einzig wirklich sichere Methode der Angabe eines Kennworts die, bei der danach gefragt wird. Während des Starts liest smbutil die Datei .nsmbrc im Home-Verzeichnis des Benutzers ein. Auch die Datei /usr/local/etc/nsmb.conf wird gelesen. Die Anweisungen in dieser Datei setzen diejenigen aus den ~/.nsmbrc-Dateien des Benutzers außer Kraft. Damit ist es den Administratoren möglich, einheitliche Einstellungen für alle Benutzer festzulegen. Die Anweisungen können in dieser Datei in einem ähnlichen Format aufgeschrieben werden wie in der SambaKonfigurationsdatei, das heißt mit Abschnitten und Parametern. Eine Liste der gebräuchlichen Konfigurationsparameter finden Sie in Tabelle 5-2. Um zum Beispiel Ihr Kennwort in Ihrer ~/.nsmbrc-Datei abzulegen, erzeugen Sie einen solchen Eintrag in der Datei: [VAMANA:LEONVS] password=$$1625a5723293f0710e5faffcfc6
Die Abschnittsüberschrift in den eckigen Klammern gibt den NetBIOS-Namen des SMB-Servers sowie den Benutzernamen an, für den die folgenden ParameterEinstellungen gelten. (Host- und Benutzername sollten in Großbuchstaben angegeben werden.) Abschnittsüberschriften können auch aus nur dem Hostnamen bestehen oder einen Freigabenamen als drittes Element enthalten, um Parameter festzulegen, die für eine einzelne Freigabe gelten sollen. Gibt es schließlich einen [default]-Abschnitt, werden die Einstellungen darin auf alle Verbindungen angewandt.
Die folgende .nsmbrc-Beispieldatei zeigt einige der anderen Parameter, die Sie verwenden könnten: [default] username=leonvs # NetBIOS-Nameserver nbns=192.168.1.3
[VAMANA] # Server-IP-Adresse addr=192.168.1.6 workgroup=TEST
[VAMANA:LEONVS] password=$$1625a5723293f0710e5faffcfc6
Mit dem Programm smbutil können Sie außerdem zwischen IP-Adressen oder DNS-Namen und NetBIOS-Namen übersetzen. So nimmt beispielsweise der Unterbefehl status eine IP-Adresse oder einen DNS-Hostnamen als Argument entgegen und liefert den NetBIOS-Namen und die Arbeitsgruppe des entsprechenden SMB-Servers zurück: % smbutil status 192.168.1.6 Workgroup: TEST Server: VAMANA
Der Unterbefehl lookup liefert die IP-Adresse zurück, die mit einem vorgegebenen NetBIOS-Hostnamen verknüpft ist. Ein NetBIOS-Name-Server kann optional mit dem Argument -w angegeben werden: % smbutil lookup -w 192.168.1.3 VAMANA Got response from 192.168.1.3 IP address of VAMANA: 192.168.1.6
mount_smbfs
Das Programm mount_smbfs führt im Wesentlichen die gleiche Funktion aus wie smbmount unter Linux. Es mountet eine SMB-Freigabe an ein Verzeichnis im lokalen Dateisystem. Auf die SMB-Freigabe kann dann wie auf jedes andere Verzeichnis zugegriffen werden; Unterschiede im Verhalten wurden bereits im Abschnitt »Ein smbfs-Dateisystem mounten« aufgezeigt. Die Syntax für mount_smbfs lautet: mount_smbfs [Optionen] Freigabe-UNC Mount-Punkt
wobei Freigabe-UNC folgende Form aufweist: //[Arbeitsgruppe;][Benutzername[:Kennwort]@]Server[/Freigabe]
Zum Beispiel: # mount_smbfs '//TEST;leonvs:$$1625a5723293f0710e5faffcfc6@vamana/ leonvs' / \Volumes/leonvs
Die Eigentümerschaft und die Zugriffsrechte des Mount-Punkts legen die vorgegebene Eigentümerschaft und die Zugriffsrechte für die Dateien und Verzeichnisse in der gemounteten Freigabe fest. Diese können mit Hilfe von Kommandozeilen-Argumenten modifiziert werden: # mount_smbfs -u leonvs -g admin -f 0750 -d 0755 //leonvs@vamana/ leonvs \/Volumes/leonvs
In diesem Beispiel gehören die Dateien und Verzeichnisse in der gemounteten Freigabe dem Benutzer leonvs und der Gruppe admin, wobei die Dateien und Verzeichnisse die Zugriffsrechte 750 bzw. 755 haben. (Wie üblich werden die Zugriffsrechte im oktalen Format angegeben, das auch vom Unix-Befehl chmod verwendet wird.) Der Befehl mount_smbfs greift ebenfalls auf die Einstellungen in /usr/local/etc/ nsmb.conf und ~/.nsmbrc zurück, wie bereits beschrieben. Eine Liste der gebräuchlichen Konfigurationsparameter und Kommandozeilen-Optionen finden Sie in Tabelle 5-2.
Tabelle 5-2 Gebräuchliche smbutil- und mount_smbfs-Optionen
KommandozeilenOption
Parameter der Konfigurationsdatei
Beschreibung
-I hostname
addr
Führt keine NetBIOSNamensauflösung durch und stellt die Verbindung zum Server mit dem angegebenen DNSHostnamen oder der IPAdresse her.
-N
keiner
Fragt nicht nach einem Kennwort.
-R Zahl
retry_count
Gibt an, wie oft ein Verbindungsaufbau versucht wird, bevor aufgegeben wird.
-T Sekunden
timeout
Timeout, in Sekunden, pro Verbindungsanforderung.
-U Benutzername
username
Benutzername, der zur Authentifizierung verwendet wird; standardmäßig der UnixBenutzername.
-W Arbeitsgruppe
workgroup
Name der Arbeitsgruppe des entfernten Servers.
keiner
Auf die Verzeichnisse in der gemounteten Freigabe anzuwendende Zugriffsrechte. Standardmäßig identisch mit den Dateizugriffsrechten, zusätzlich ein AusführungsBit (Such-Bit), wenn das Lese-Bit gesetzt ist.
keiner
Auf die Dateien in der gemounteten Freigabe anzuwendende Zugriffsrechte. Standardmäßig identisch mit den Zugriffsrechten, die auf dem Verzeichnis gesetzt sind, das als Mount-Punkt verwendet wird.
-d Modus
-f Modus
keiner
Name oder numerische GID, die auf alle Dateien oder Verzeichnisse in der gemounteten Freigabe angewendet wird. Standardmäßig identisch mit der Gruppe des Verzeichnisses, das als Mount-Punkt verwendet wird.
keiner
Deaktiviert Unterstützung für lange Dateinamen. Dateinamen werden auf den 8.3-Namensstandard beschränkt.
-u Benutzername
keiner
Benutzername oder numerische UID, die als Eigentümer für alle Dateien und Verzeichnisse in der gemounteten Freigabe verwendet wird. Standardmäßig identisch mit dem Eigentümer des Verzeichnisses, das als Mount-Punkt verwendet wird.
-w Hostname
nbns
Hostname oder IP-Adresse des NetBIOS-Name-Servers.
keine
password
Kennwort, das zur Authentifizierung verwendet wird.
-g Gruppe
-n lang
Mac OS X Neben smbutil und mount_smbfs enthält OS X eine grafische Schnittstelle zu der von diesen Programmen angebotenen Funktionalität. Um diese Schnittstelle zu benutzen, öffnen Sie das Menü Gehe zu und wählen den Menüeintrag Mit Server verbinden... An Stelle einer UNC verwenden Sie für die Angabe der Freigabe einen Uniform Resource Identifier (URI) mit dem Präfix smb://. Diesen Wert setzen Sie in das Feld Adresse ein, wie in Abbildung 5-5 demonstriert. Abbildung 5-5 Der OS X-Dialog Mit Server verbinden
Sie können einen Server, eine Freigabe, eine Arbeitsgruppe, einen Benutzernamen und ein Kennwort (optional verschlüsselt mit smbutil crypt) in dem URI festlegen, und zwar im gleichen Format wie das UNC-Argument für mount_smbfs. Falls Sie den Freigabenamen im URI weglassen, wird Ihnen ein Fenster präsentiert, in dem Sie aus einer Liste verfügbarer Freigaben wählen können, zu sehen in Abbildung 5-6. Abbildung 5-6 Auswahl einer Freigabe zum Mounten
Solange Sie sich nicht authentifiziert haben, werden lediglich Freigaben gezeigt, für die es nur Gastzugriff gibt. Nach dem Anklicken des Buttons Identifizieren werden Sie nach einer Arbeitsgruppe, einem Benutzernamen und einem Kennwort gefragt, wie in Abbildung 5-7 gezeigt. Diesen Dialog sehen Sie auch, wenn Sie zwar einen Freigabenamen in dem URI angeben, jedoch keinen Benutzernamen und kein Kennwort.4 Abbildung 5-7 Client-Authentifizierung
Wie bei Mac OS X üblich, werden die Freigaben unter /Volumes gemountet, sind aber im root-Bereich der Finder-Hierarchie zu sehen. Falls Sie einen WINS-Server in Ihrem Netzwerk haben, können Sie die IP-Adresse des Servers im Programm Verzeichnisdienste angeben oder den Parameter wins server in /etc/smb.conf verwenden. Abbildung 5-8 Suche im Netzwerk
Sollten Sie den Namen des Servers nicht kennen, an dem Sie sich anmelden wollen, können Sie ihn in der Suchliste ermitteln. Dazu benutzen Sie die grafische Schnittstelle des Befehls nmblookup, der mit Samba bereitgestellt wird. Klicken Sie auf den nach unten weisenden Pfeil im Dialogfeld Mit Server verbinden..., um eine hierarchische, spaltenorientierte Ansicht der verfügbaren Arbeitsgruppen und Server zu erhalten, ähnlich der in Abbildung 5-8 gezeigten. Wenn Ihr Client auch als SMB-Datei-Server agiert, wird er in seiner eigenen Suchliste nicht zu sehen sein. 1Eine Alternative zum Extrahieren des tar-Archivs direkt in die SMB-Freigabe besteht darin, den tar-Befehl des Unix-Systems einzusetzen, um das Archiv in ein Verzeichnis auf dem Unix-Server auszupacken. Anschließend werden die gewünschten Dateien in ein freigegebenes Verzeichnis kopiert. Dies bietet eine bessere Kontrolle über den Wiederherstellungsvorgang, etwa beim Beheben einer versehentlichen Löschung einer Datei oder beim Zurücksetzen von Dateien in einen früheren Zustand. 2Die Samba-Versionen 2.2.4 und später enthalten Unterstützung für die von Hewlett-Packard entwickelten Unix-CIFS-Erweiterungen, die in smbfsDateisystemen vollständige Unterstützung für die Unix-Eigentümerschaft, Gruppen und Zugriffsrechte hinzufügen, wenn zwei Samba-Systeme die Dateisysteme gemeinsam nutzen. Sie benötigen in Ihrem Linux-Kernel außerdem eine aktuelle Version von smbfs. 3Zu dem Zeitpunkt, als das Buch geschrieben wurde, funktionierte smbsh nicht unter HP/UX und Linux. Linux-Unterstützung könnte in der Zukunft jedoch hinzukommen. 4Falls Sie Ihre Authentifizierungsinformationen in einem Schlüsselbund gespeichert haben, werden Sie stattdessen nach dem Kennwort für den Schlüsselbund gefragt.
Kapitel 6 Die Samba-Konfigurationsdatei In den vorangegangenen Kapiteln haben wir Ihnen gezeigt, wie Sie Samba auf einem Unix-Server installieren und Windows-Clients so einrichten, dass diese eine einfache Festplattenfreigabe nutzen können. In diesem Kapitel erfahren Sie, wie Samba produktivere Rollen in Ihrem Netzwerk übernehmen kann. Sambas Daemons, smbd und nmbd, werden mit Hilfe einer einzigen ASCII-Datei, der Datei smb.conf, gesteuert, die mehr als 300 eindeutige Optionen (so genannte Parameter) enthalten kann. Einige dieser Optionen werden Sie häufig benutzen und verändern, andere setzen Sie möglicherweise nie ein, je nachdem, wie viele Funktionen Samba seinen Clients anbieten soll. Dieses Kapitel stellt die Struktur der Samba-Konfigurationsdatei vor und zeigt Ihnen, wie Sie die Optionen einsetzen, mit denen Sie Festplattenfreigaben erzeugen und modifizieren. Die nachfolgenden Kapitel behandeln die Suche, die Konfiguration der Benutzer, die Sicherheit, das Drucken und andere Themen, die mit der Implementierung von Samba in Ihrem Netzwerk zu tun haben.
Die Samba-Konfigurationsdatei Die Samba-Konfigurationsdatei, standardmäßig als smb.conf bezeichnet, besitzt das gleiche Format wie die Windows-.ini-Dateien. Falls Sie jemals mit einer .ini-Datei gearbeitet haben, werden Sie feststellen, dass smb.conf einfach zu erstellen und zu verändern ist. Und auch wenn Sie noch nie damit zu tun hatten, werden Sie das Format einfach und leicht verständlich finden. Hier ein Beispiel für eine SambaKonfigurationsdatei: [global] workgroup = METRAN encrypt passwords = yes wins support = yes log level = 1 max log size = 1000 read only = no [homes] browsable = no map archive = yes [printers] path = /var/tmp printable = yes
min print space = 2000 [test] browsable = yes read only = yes path = /usr/local/samba/tmp
Diese Konfigurationsdatei basiert auf derjenigen, die wir in Kapitel 2 erzeugt haben. Sie richtet eine Arbeitsgruppe ein, in der Samba die Benutzer mit Hilfe verschlüsselter Kennwörter und der vorgegebenen Sicherheitsmethode auf Benutzerebene authentifiziert. Samba bietet Unterstützung für einen WINS-Name-Server. Wir haben eine sehr einfache Ereignisprotokollierung konfiguriert, so dass die Protokolldatei nicht größer als 1 MByte wird. Die Freigabe [homes] wurde hinzugefügt, um es Samba zu erlauben, eine Festplattenfreigabe für das Home-Verzeichnis jedes Benutzers anzulegen, der einen normalen Unix-Zugang auf dem Server besitzt. Darüber hinaus ist jeder Drucker, der an dem Server registriert wurde, für die Allgemeinheit verfügbar. Dies gilt auch für eine schreibgeschützte Freigabe, die mit dem Verzeichnis /usr/local/samba/tmp verknüpft ist.
Die Struktur der Konfigurationsdatei Schauen wir uns diese Konfigurationsdatei noch einmal an, dieses Mal von einer etwas höheren Warte: [global] ... [homes] ... [printers] ... [test] ...
Die Namen in den eckigen Klammern beschreiben eindeutige Abschnitte der Datei smb. conf. Jeder Abschnitt bezeichnet die Freigabe (oder den Dienst), auf den sich der Abschnitt bezieht. Die Abschnitte [test] und [homes] beispielsweise sind eindeutige Festplattenfreigaben. Sie enthalten Optionen, die für bestimmte Verzeichnisse auf dem Samba-Server gelten. Die Freigabe [printers] enthält Optionen, die sich auf die verschiedenen Drucker an dem Server beziehen. Alle in der Datei smb.conf definierten Abschnitte mit Ausnahme des Abschnitts [global] stehen den Clients, die sich am Samba-Server anmelden, als Festplatten- oder Druckerfreigabe zur Verfügung. Die restlichen Zeilen sind einzelne Konfigurationsoptionen für diese Freigabe. Diese Optionen werden fortgesetzt, bis ein neuer Abschnitt entdeckt oder das Ende der Datei erreicht wird. Die Konfigurationsoptionen besitzen ein einfaches Format:
Option = Wert
Die Optionen in der Datei smb.conf werden gesetzt, indem ihnen ein Wert zugeordnet wird. Wir sollten Sie gleich zu Anfang darauf hinweisen, dass einige der Optionsnamen in Samba wirklich unglücklich gewählt wurden. So ist der Name read only beispielsweise selbsterklärend und typisch für viele der neueren Samba-Optionen. Die Option public ist älter und ein wenig vage. Inzwischen hat sie das weniger verwirrende Synonym guest ok (was bedeutet, dass Gastbenutzer auf die Freigabe zugreifen dürfen). Anhang B enthält einen alphabetischen Index aller Konfigurationsoptionen und deren Bedeutungen. Whitespace, Anführungszeichen und Kommata Ein wichtiger Aspekt, den Sie sich in Bezug auf die Konfigurationsoptionen merken müssen, ist die Tatsache, dass Whitespace, also Leerstellen, innerhalb eines Werts wichtig ist. Stellen Sie sich zum Beispiel folgende Option vor: volume = The Big Bad Hard Drive Number 3543
Samba entfernt alle Leerzeichen bis zum ersten T in The. Diese Whitespaces sind unwichtig. Die restlichen Whitespaces sind wichtig und werden beim Einlesen der Datei durch Samba erkannt und bewahrt. In Optionsnamen sind Leerzeichen nicht entscheidend (etwa in read only), wir empfehlen Ihnen jedoch, der Konvention zu folgen und die Leerzeichen zwischen den Wörtern der Optionen beizubehalten. Falls Sie sich sicherer fühlen, wenn Sie Anführungszeichen am Anfang und am Ende des Werts einer Konfigurationsoption einfügen, können Sie dies tun. Samba ignoriert diese Anführungszeichen, wenn es sie bemerkt. Setzen Sie allerdings keine Anführungszeichen um einen Optionsnamen; Samba betrachtet diese als Fehler. Normalerweise können Sie Whitespace oder Kommata verwenden, um eine Reihe von Werten in einer Liste voneinander zu trennen. Diese beiden Optionen sind äquivalent: netbios aliases = sales, accounting, payroll netbios aliases = sales accounting payroll
In einigen Fällen müssen Sie eine bestimmte Form der Trennung benutzen - manchmal sind Leerzeichen erforderlich und manchmal Kommata. Großschreibung Die Großschreibung ist in der Samba-Konfigurationsdatei nicht wichtig. Eine Ausnahme bilden Stellen, an denen die Datei mit dem zu Grunde liegenden Betriebssystem kollidieren würde. Lassen Sie uns zum Beispiel annehmen, dass Sie die folgende Option in eine Freigabe aufgenommen haben, die auf /export/samba/simple verweist: PATH = /EXPORT/SAMBA/SIMPLE
Samba hätte keine Probleme mit der Konfigurationsoption path, wenn diese vollständig in Großbuchstaben wäre. Wenn es jedoch versucht, eine Verbindung zu dem angegebenen Verzeichnis herzustellen, hätte dies keinen Erfolg, da das Unix-Dateisystem zwischen
Groß- und Kleinbuchstaben unterscheidet. Das bedeutet, dass der aufgeführte Pfad nicht gefunden werden würde und die Clients sich nicht an der Freigabe anmelden könnten. Zeilenfortsetzung Sie können eine Zeile in der Samba-Konfigurationsdatei mit Hilfe eines Backslashs fortsetzen: comment = Die erste Freigabe, die die wichtigsten Kopien \ des neuen Software-Produkts von Teamworks enthaelt.
Wegen des Backslashs werden diese beiden Zeilen von Samba als eine einzige Zeile betrachtet. Die zweite Zeile beginnt bei dem ersten Nicht-Whitespace-Zeichen, das Samba entdeckt; in diesem Fall beim d von des. Kommentare Sie können Kommentare in die smb.conf-Konfigurationsdatei aufnehmen, indem Sie eine Zeile entweder mit einem Hash-Zeichen (#) oder einem Semikolon ( ; ) beginnen lassen. Für diesen Zweck sind die beiden Zeichen äquivalent. So würden etwa die ersten drei Zeilen des folgenden Beispiels als Kommentare betrachtet werden: # Dies ist der Abschnitt printers. Wir haben einen freien Platz von wenigstens ;
2000 vorgesehen, um Fehler auszuschließen, die nach unserer Beobachtung
;
auftreten, wenn der Spooler voll läuft.
[printers] public = yes min print space = 2000
Samba ignoriert alle Kommentarzeilen in seiner Konfigurationsdatei; es gibt keine Einschränkungen zu dem, was nach dem einleitenden Hash-Zeichen oder Semikolon kommt. Beachten Sie, dass das Zeilenfortsetzungszeichen (\) auf einer Kommentarzeile nicht beachtet wird. Es wird wie der Rest der Zeile ignoriert.
Samba lässt das Mischen von Kommentarzeilen und Parametern nicht zu. Setzen Sie daher Kommentare nicht auf die gleiche Zeile wie etwas anderes:
path = /d # Datenpartition des Servers
Solche Fehler, bei denen der Parameterwert mit einem String definiert wird, sind meist schwierig festzustellen. Das Programm testparm beschwert sich nicht, und die einzigen Hinweise, die Sie erhalten, sind die Ausgabe von testparm, dass der Parameter path auf /d # Datenpartition des Servers gesetzt ist, und Fehler, wenn die Clients versuchen, auf die Freigabe zuzugreifen. Änderungen zur Laufzeit Sie können die Konfigurationsdatei smb.conf und ihre Optionen jederzeit ändern, während die Samba-Daemons laufen. Standardmäßig prüft Samba die Konfigurationsdatei alle 60 Sekunden. Findet es irgendwelche Änderungen, werden diese unmittelbar danach wirksam.
Es kann sehr bequem sein, dass Samba die Konfigurationsdatei automatisch überprüft. Das bedeutet aber auch, dass Sie beim direkten Bearbeiten der smb.conf jedes Mal sofort die Konfiguration Ihres Netzwerks ändern, sobald Sie die Datei speichern. Falls Sie mehr als nur eine kleinere Änderung vornehmen, ist es besser, wenn Sie die smb.conf in eine temporäre Datei speichern, diese bearbeiten, testparm dateiname ausführen, um sie zu prüfen, und die temporäre Datei dann zurück nach smb.conf kopieren. Auf diese Weise können Sie sicher sein, dass alle Ihre Änderungen auf einmal wirksam werden und das auch nur dann, wenn Sie sicher sind, dass Sie genau die Konfiguration erzeugt haben, die Sie auch implementieren wollten. Falls Sie nicht auf das automatische Laden der Konfigurationsdatei warten wollen, können Sie das Neuladen erzwingen, indem Sie entweder ein Hangup-Signal an die smbd- und nmbd-Prozesse senden oder einfach die Daemons neu starten. Tatsächlich erweist es sich als eine gute Idee, die Daemons neu zu starten, da dadurch die Clients gezwungen werden, die Verbindung zu beenden und neu aufzubauen, wodurch sichergestellt wird, dass die neue Konfiguration auf alle Clients angewendet wird. Wir haben Ihnen in Kapitel 2 gezeigt, wie die Daemons neu gestartet werden. Das Senden eines HangupSignals (HUP) funktioniert ähnlich. Unter Linux kann dies über den folgenden Befehl erledigt werden: # killall -HUP smbd nmbd
In diesem Fall werden nicht alle Änderungen sofort durch die Clients bemerkt. Beispielsweise werden Änderungen an einer Freigabe, die gerade in Benutzung ist, erst dann registriert, wenn der Client die Verbindung zu dieser Freigabe beendet und erneut aufbaut. Auch serverspezifische Parameter wie die Arbeitsgruppe oder der NetBIOS-
Name des Servers werden nicht sofort wirksam. (Dieses Verhalten wurde absichtlich so implementiert, da es verhindert, dass aktive Clients plötzlich abgemeldet werden oder unerwartete Zugriffsprobleme auftreten, während eine Sitzung läuft.)
Variablen Da für jeden sich anmeldenden Client eine neue Kopie des smbd-Daemons erzeugt wird, ist es möglich, jedem Client seine eigene angepasste Konfigurationsdatei zu bieten. Samba erlaubt eine beschränkte, aber dennoch nützliche Form der Variablensubstitution in der Konfigurationsdatei, um Informationen über den Samba-Server und den Client zu dem Zeitpunkt in die Konfiguration einzubinden, zu dem der Client sich anmeldet. In der Konfigurationsdatei beginnt eine Variable mit einem Prozentzeichen (%), gefolgt von einem einzelnen Groß- oder Kleinbuchstaben. Sie kann nur auf der rechten Seite einer Konfigurationsoption (d.h. nach dem Gleichheitszeichen) auftauchen. Hier ein Beispiel: [pub] path = /home/ftp/pub/%a
Die Variable %a steht für die Architektur des Client-Systems und wird so ersetzt, wie in Tabelle 6-1 gezeigt.
Tabelle 6-1 %a-Substitution Client-Betriebssystem (»Architektur«)
Ersetzungs-String
Windows for Workgroups
WfWg
Windows 95 und Windows 98
Win95
Windows NT
WinNT
Windows 2000 und Windows XP
Win2K
Samba
Samba
Jedes Betriebssystem, das noch nicht aufgeführt wurde UNKNOWN In diesem Beispiel weist Samba Client-Systemen einen eindeutigen Pfad für die Freigabe [pub] zu, der davon abhängt, welches Betriebssystem auf ihnen läuft. Die Pfade, die die einzelnen Clients als ihre Freigabe sehen, unterscheiden sich entsprechend der Architektur des Clients: /home/ftp/pub/WfwG /home/ftp/pub/Win95 /home/ftp/pub/WinNT /home/ftp/pub/Win2K /home/ftp/pub/Samba /home/ftp/pub/UNKNOWN
Die Benutzung von Variablen auf diese Weise ist ganz praktisch, wenn Sie wollen, dass unterschiedliche Benutzer eigene Konfigurationen auf der Grundlage ihrer eigenen Charakteristika oder Bedingungen erhalten. Samba besitzt 20 Variablen, wie Tabelle 6-2 zeigt.
Tabelle 6-2 Samba-Variablen Variable
Definition
Client-Variablen %a
Architektur des Clients (siehe Tabelle 6-1)
%I
IP-Adresse des Clients (z.B. 172.16.1.2)
%m
NetBIOS-Name des Clients
%M
DNS-Name des Clients
Benutzervariablen %u
Aktueller Unix-Benutzername
%U
Angeforderter Client-Benutzername (wird nicht immer von Samba verwendet)
%H
Home-Verzeichnis von %u
%g
Primäre Gruppe von %u
%G
Primäre Gruppe von %U
Freigabevariablen %S
Name der aktuellen Freigabe
%P
root-Verzeichnis der aktuellen Freigabe
%p
Pfad des Automounters auf das root-Verzeichnis der Freigabe, falls verschieden von %P
Server-Variablen %d
Prozess-ID des aktuellen Servers
%h
DNS-Hostname des Samba-Servers
%L
NetBIOS-Name des Samba-Servers
%N
Home-Verzeichnis-Server aus der automount-Map
%v
Samba-Version
Sonstige Variablen %R
Ausgehandelte SMB-Protokollstufe
%T
Aktuelles Datum und Uhrzeit
%$var
Wert der Umgebungsvariablen var
Hier ist ein weiteres Beispiel für die Benutzung von Variablen: Nehmen Sie einmal an, dass es fünf Clients in Ihrem Netzwerk gibt, aber einer der Clients, maya, erfordert eine etwas andere [homes]-Konfiguration. Mit Samba lässt sich das leicht erledigen: [homes] ... include = /usr/local/samba/lib/smb.conf.%m ...
Die Option include sorgt dafür, dass zusätzlich zur aktuellen Datei eine separate Konfigurationsdatei für jede NetBIOS-Maschine (%m) eingelesen wird. Lautet der Hostname des Client-Systems maya und gibt es eine Datei smb.conf.maya im Verzeichnis /usr/local/samba/lib, fügt Samba diese Konfigurationsdatei in die Standardkonfigurationsdatei ein. Werden Konfigurationsoptionen in smb.conf.maya erneut angegeben, setzen diese Werte die Optionen außer Kraft, die zuvor in dieser Freigabe erkannt wurden. Beachten Sie, dass wir »zuvor« sagen. Werden Optionen in der Hauptkonfigurationsdatei nach der include-Option erneut angegeben, beachtet Samba diese neuen Werte für die Freigabe, in der sie definiert wurden. Existiert die Datei nicht, die durch den include-Parameter angegeben wurde, liefert Samba keine Fehlermeldung. Es tut überhaupt nichts. Dies erlaubt es Ihnen, beim Einsatz dieser Strategie nur eine einzige zusätzliche Konfigurationsdatei für maya zu erzeugen, anstatt eine für jeden Client im Netzwerk anlegen zu müssen. Client-spezifische Konfigurationsdateien können eingesetzt werden, um bestimmte Clients anzupassen. Sie können auch die Fehlersuche bei Samba erleichtern. Wenn wir beispielsweise einen Client mit einem Problem haben, können wir ihm mit Hilfe dieses Ansatzes eine eigene Protokolldatei geben, für die wir eine höhere Protokollierungsstufe einstellen. So können wir feststellen, was Samba tut, ohne alle anderen Clients zu behindern oder die Platte mit unnützen Protokollen zu verstopfen. Sie können die Variablen in Tabelle 6-2 verwenden, um einer Vielzahl von SambaOptionen eigene Werte zu übergeben. Wir werden im Laufe der nächsten Kapitel einige dieser Optionen näher betrachten.
Besondere Abschnitte Nachdem wir einen ersten Einblick in die Welt der Variablen genommen haben, sollten wir über einige besondere Abschnitte der Samba-Konfigurationsdatei sprechen. Auch hier müssen Sie sich keine Sorgen machen, wenn Sie nicht jede Konfigurationsoption verstehen, die hier aufgeführt wird, wir werden in den folgenden Kapiteln näher auf sie eingehen.
Der Abschnitt [ global] Der Abschnitt [global] taucht in praktisch jeder Samba-Konfigurationsdatei auf, obwohl er nicht zwingend erforderlich ist. Es gibt zwei Aufgaben für den Abschnitt [global]. Hier werden serverweite Einstellungen definiert. Außerdem werden alle Optionen, die für Freigaben gelten, in allen Freigabe-Definitionen als Vorgabe verwendet, es sei denn, sie werden innerhalb der Freigabe-Definition überschrieben.
Um dies zu verdeutlichen, schauen wir uns noch einmal das Beispiel vom Anfang des Kapitels an: [global] workgroup = METRAN encrypt passwords = yes wins support = yes log level = 1 max log size = 1000 read only = no [homes] browsable = no map archive = yes [printers] path = /var/tmp printable = yes min print space = 2000 [test] browsable = yes read only = yes path = /usr/local/samba/tmp
Wenn ein Client eine Verbindung zur Freigabe [test] herstellt, liest Samba zuerst den Abschnitt [global] und legt die Option read only = no als globalen Standardwert für jede Freigabe fest, die es in der Konfigurationsdatei entdeckt. Dies schließt die Freigaben [homes] und [test] ein. Wenn es die Definition der [test]-Freigabe einliest, findet es die Konfigurationsoption read only = yes und überschreibt den vorgegebenen Wert aus dem Abschnitt [global] mit dem Wert yes. Jede Option, die vor dem ersten gekennzeichneten Abschnitt auftaucht, wird als globale Option betrachtet. Dies bedeutet, dass die Abschnittsüberschrift [global] nicht unbedingt erforderlich ist. Wir empfehlen Ihnen allerdings, diese Überschrift aus Gründen der Klarheit und zur weiteren Sicherung der Kompatibilität immer zu setzen.
Der Abschnitt [ homes] Wenn ein Client versucht, eine Verbindung zu einer Freigabe herzustellen, die nicht in der Datei smb.conf auftaucht, sucht Samba nach einer [homes]-Freigabe in der Konfigurationsdatei. Existiert eine Freigabe [homes], wird angenommen, dass der nicht
aufgelöste Freigabename ein Unix-Benutzername ist. Ist dieser Benutzername in der Kennwortdatenbank auf dem Samba-Server zu finden, geht Samba davon aus, dass es sich bei dem Client um einen Unix-Benutzer handelt, der versucht, sich auf seinem HomeVerzeichnis auf dem Server anzumelden. Stellen Sie sich beispielsweise vor, ein Client-System meldet sich zum ersten Mal auf dem Samba-Server toltec an und versucht, eine Verbindung zu einer Freigabe namens [alice] herzustellen. Es wurde keine Freigabe [alice] in der Datei smb.conf definiert, aber es gibt eine [homes]-Freigabe. Samba durchsucht also die KennwortDatenbankdatei und findet auf dem System einen Benutzerzugang namens alice. Anschließend vergleicht Samba das Kennwort, das vom Client angegeben wurde, mit dem Unix-Kennwort des Benutzers alice - entweder mit Hilfe der Kennwort-Datenbankdatei, falls unverschlüsselte Kennwörter verwendet werden, oder mit Sambas smbpasswdDatei, falls verschlüsselte Kennwörter zum Einsatz kommen. Stimmen die Kennwörter überein, weiß Samba, dass es richtig geraten hat: Der Benutzer alice versucht, sich an seinem Home-Verzeichnis anzumelden. Samba erzeugt dann eine Freigabe namens [alice] für diesen Benutzer, bei der der Pfad der Freigabe auf das Home-Verzeichnis von alice gesetzt ist. Der Einsatz des Abschnitts [homes] zum Anlegen von Benutzern (und der Umgang mit deren Kennwörtern) wird in Kapitel 9 genauer behandelt.
Der Abschnitt [printers] Der dritte spezielle Abschnitt wird [printers] genannt und ähnelt [homes]. Versucht ein Client, eine Verbindung zu einer Freigabe aufzunehmen, die sich nicht in der Datei smb. conf befindet, und kann deren Name auch nicht in der Kennwortdatei gefunden werden, prüft Samba, ob es sich dabei um eine Druckerfreigabe handelt. Dazu liest Samba die Printer-Capabilities-Datei (normalerweise /etc/printcap), um festzustellen, ob der Name der Freigabe dort auftaucht.1 Ist dies der Fall, erzeugt Samba eine Freigabe mit dem Namen des Druckers. Das bedeutet, dass Sie wie bei [homes] nicht für jeden Systemdrucker eine Freigabe in der Datei smb.conf verwalten müssen. Stattdessen beachtet Samba die UnixDruckerregistrierung, wenn Sie es dazu auffordern, und stellt die registrierten Drucker den Client-Systemen zur Verfügung. Es gibt jedoch eine potenzielle Schwierigkeit: Wenn Sie einen Zugang namens fred und einen Drucker namens fred haben, findet Samba immer zuerst den Benutzerzugang, selbst wenn der Client wirklich eine Verbindung zum Drucker benötigt hat. Das Einrichten der [printers]-Freigabe wird in Kapitel 10 näher behandelt.
Konfigurationsoptionen Die Optionen in der Samba-Konfigurationsdatei fallen in eine von zwei Kategorien: globale Optionen oder Freigabeoptionen. Jede Kategorie bestimmt, wo eine Option in der Konfigurationsdatei auftreten kann. Globale Optionen Globale Optionen dürfen nur im Abschnitt [global] stehen und nirgendwo sonst. Es handelt sich hierbei um Optionen, die typischerweise das Verhalten des SambaServers selbst beeinflussen und keine seiner Freigaben. Freigabeoptionen Freigabeoptionen können in Freigabe-Definitionen, im Abschnitt [global] oder in beidem auftauchen. Wenn sie im Abschnitt [global] stehen, definieren sie ein
Standardverhalten für alle Freigaben, allerdings kann diese Option für eine Freigabe durch einen eigenen Wert überschrieben werden. Außerdem können Konfigurationsoptionen drei Arten von Werten annehmen. Folgende sind möglich: Boolescher Wert Dabei handelt es sich einfach um Ja- oder Nein-Werte. Diese können durch folgende Elemente repräsentiert werden: yes, no, true, false, 1 oder 0. Bei diesen Werten spielt die Groß-/Kleinschreibung keine Rolle: YES ist identisch mit yes. Numerischer Wert Dies ist eine dezimale, hexadezimale oder oktale Zahl. Die Standardsyntax 0xnn wird für hexadezimale Werte und 0nnn für oktale Werte verwendet. String Dies ist ein String mit Zeichen (bei denen die Groß-/Kleinschreibung beachtet werden muss), etwa ein Dateiname oder ein Benutzername.
Optionen der Konfigurationsdatei Sie können Samba anweisen, Konfigurationsoptionen bei der Verarbeitung einzubinden oder zu ersetzen. Die Optionen dazu sind in Tabelle 6-3 zusammengefasst.
Tabelle 6-3 Optionen der Konfigurationsdatei Option
config file
include
copy
Parameter
Funktion
Vorgabewert Geltungsbereich
String (Name der Datei)
Legt den Ablageort einer Konfigurationsdatei fest, der an Stelle des aktuellen verwendet werden soll.
keiner
global
String (Name der Datei)
Gibt eine zusätzliche Menge von Konfigurationsoptionen an, die in die Konfigurationsdatei aufgenommen werden sollen.
keiner
global
String (Name der Freigabe)
Erlaubt es Ihnen, die Konfigurationsoptionen einer anderen Freigabe in die aktuelle Freigabe zu übernehmen (zu klonen).
keiner
Freigabe
config file Die globale Option config file gibt eine Ersatzkonfigurationsdatei an, die geladen werden soll, wenn diese Option erkannt wird. Existiert die Zieldatei, werden der Rest der aktuellen Konfigurationsdatei sowie die bisher erkannten Optionen verworfen, und Samba konfiguriert sich selbst vollständig mit den Optionen in der neuen Datei. Zusammen mit der Option config file können Variablen eingesetzt werden. Das ist ganz hilfreich, falls Sie eine spezielle Konfigurationsdatei auf der Grundlage des NetBIOS-Maschinennamens
oder des Benutzers des Clients, der sich anmeldet, haben wollen. So weist zum Beispiel die folgende Zeile Samba an, eine Konfigurationsdatei zu verwenden, die durch den NetBIOS-Namen des sich anmeldenden Clients bestimmt wird, falls eine solche Datei existiert. Ist dies der Fall, werden die in der ursprünglichen Konfigurationsdatei festgelegten Optionen ignoriert: [global] config file = /usr/local/samba/lib/smb.conf.%m
Existiert die angegebene Konfigurationsdatei nicht, wird die Option ignoriert, und Samba konfiguriert sich weiterhin auf der Grundlage der aktuellen Datei. Dadurch kann eine vorgegebene Konfigurationsdatei die meisten Clients bedienen, während gleichzeitig Ausnahmen mit angepassten Konfigurationsdateien angeboten werden können. include Diese Option, die früher bereits ausführlicher besprochen wurde, kopiert die Zieldatei an der festgelegten Stelle in die aktuelle Konfigurationsdatei, wie in Abbildung 6-1 gezeigt wird. Auch diese Option kann zusammen mit Variablen benutzt werden. Sie können die Option folgendermaßen einsetzen: [global] include = /usr/local/samba/lib/smb.conf.%m
Existiert die angegebene Konfigurationsdatei nicht, wird die Option ignoriert. Optionen in der mit include eingefügten Datei setzen alle Optionen außer Kraft, die vorher festgelegt wurden, nicht jedoch die später angegebenen. In Abbildung 6-1 überschreiben alle drei Optionen ihre vorherigen Werte. Abbildung 6-1 Die Option include in einer Samba-Konfigurationsdatei
Die Option include funktioniert nicht mit den Variablen %u (Benutzer), %P (rootVerzeichnis der aktuellen Freigabe) oder %S (Name der aktuellen Freigabe), da diese Werte zu dem Zeitpunkt, zu dem der Parameter include verarfbeitet wird, noch nicht gesetzt sind.
copy Die Konfigurationsoption copy erlaubt es Ihnen, die Konfigurationsoptionen der Freigabe zu klonen, die Sie in der aktuellen Freigabe festlegen. Die Zielfreigabe muss früher in der Konfigurationsdatei auftauchen als die Freigabe, die die Kopie ausführt, zum Beispiel: [template] writable = yes browsable = yes valid users = andy, dave, jay
[data] path = /usr/local/samba copy = template
Beachten Sie, dass alle Optionen in der Freigabe, die die Anweisung copy ausgelöst hat, diejenigen aus der geklonten Freigabe außer Kraft setzen; es spielt dabei keine Rolle, ob sie vor oder nach der Anweisung copy auftreten.
Server-Konfiguration Wir werden nun von Grund auf beginnen und eine Konfigurationsdatei für unseren SambaServer erstellen. Zuerst führen wir drei grundlegende Konfigurationsoptionen ein, die im Abschnitt [global] der Datei smb.conf auftreten können: [global] #
Server-Konfigurationsparameter
netbios name = toltec server string = Samba %v on %L workgroup = METRAN encrypt passwords = yes
Diese Konfigurationsdatei ist sehr einfach; sie macht den Samba-Server unter dem NetBIOS-Namen toltec bekannt. Darüber hinaus platziert sie das System in der Arbeitsgruppe METRAN und zeigt den Clients eine Beschreibung an, die die Versionsnummer von Samba sowie den NetBIOS-Namen des Samba-Servers enthält.
Falls Sie die Zeile encrypt passwords = yes bereits in Ihrer früheren Konfigurationsdatei verwendet haben, sollten Sie dies hier ebenfalls tun. Wenn Sie wollen, können Sie diese Konfigurationsdatei einmal ausprobieren. Erzeugen Sie mit dem zuvor gezeigten Text eine Datei namens smb.conf im Verzeichnis /usr/local/ samba/lib. Starten Sie anschließend den Samba-Server neu und verwenden Sie einen Windows-Client, um die Ergebnisse zu überprüfen. Achten Sie darauf, dass sich Ihre Windows-Clients auch in der Arbeitsgruppe METRAN befinden. Wenn Sie die Netzwerkumgebung auf einem Windows-Client doppelt anklicken, sollten Sie ein Fenster sehen, das Abbildung 6-2 ähnelt. (In dieser Abbildung ist Mixtec ein weiterer SambaServer und Zapotec ein Windows-Client.) Abbildung 6-2 Die Netzwerkumgebung mit Toltec, dem Samba-Server
Sie können den server string überprüfen, indem Sie sich im NetzwerkumgebungFenster die Details anzeigen lassen (wählen Sie Details im Menü Ansicht). Sie sollten ein Fenster ähnlich Abbildung 6-3 sehen. Abbildung 6-3 Die Netzwerkumgebung in der detaillierten Ansicht
Wenn Sie das Symbol toltec anklicken würden, müsste ein Fenster auftauchen, das die Dienste anzeigt, die dieser Server anbietet. In diesem Fall wäre das Fenster völlig leer, da es auf dem Server noch keine Freigaben gibt.
Optionen zur Server-Konfiguration Tabelle 6-4 fasst die gerade vorgestellten Optionen zur Server-Konfiguration zusammen. Alle drei Optionen gelten global, müssen also im Abschnitt [global] der Konfigurationsdatei stehen.
Tabelle 6-4 Optionen zur Server-Konfiguration Option
Parameter
Funktion
Vorgabewert
Geltungsbereich
netbios name
String
NetBIOS-Name des Samba-Servers
Nichtqualifizierter DNS-Hostname des Servers.
global
workgroup
String
NetBIOS-Gruppe, zu der der Server gehört
Wird bei der Kompilierung definiert.
global
server string
String
beschreibender String für den Samba-Server
Samba %v
global
netbios name Die Option netbios name erlaubt es Ihnen, den NetBIOS-Namen des Servers zu setzen, zum Beispiel: netbios name = YORKVM1
Der Vorgabewert für diese Konfigurationsoption ist der Hostname des Servers - das heißt der erste Teil seines vollqualifizierten Domänennamens. So würde beispielsweise einem System mit dem DNS-Namen ruby.ora.com standardmäßig der NetBIOS-Name RUBY
gegeben werden. Sie können diese Option dazu nutzen, den NetBIOS-Namen des Systems erneut festzulegen (wie wir es getan haben). Häufiger wird sie jedoch dazu verwendet, dem Samba-Server einen NetBIOS-Namen zuzuweisen, der sich von seinem aktuellen DNS-Namen unterscheidet. Denken Sie daran, dass der zugewiesene Name den Regeln für gültige NetBIOS-Maschinennamen unterliegt, wie in Kapitel 1 ausgeführt. Das Ändern des NetBIOS-Namens des Servers wird nur dann empfohlen, wenn Sie einen wirklich guten Grund dafür haben. Ein solcher Grund liegt vor, wenn der Hostname des Systems nicht eindeutig ist, weil das LAN über zwei oder mehr DNS-Domänen verteilt ist. Zum Beispiel ist YORKVM1 ein guter NetBIOS-Kandidat für vm1.york.example.com, um dieses System von vm1.falkirk.example.com zu unterscheiden, das den gleichen Hostnamen trägt, aber in einer anderen DNS-Domäne liegt. Ein anderer Anwendungsfall für diese Option ist das Umsetzen von SMB-Diensten von einem ausgefallenen oder außer Betrieb gestellten System. Wenn zum Beispiel SALES der SMB-Server der Abteilung ist und plötzlich ausfällt, könnten Sie sofort netbios name = SALES auf einem Backup-Samba-Server setzen, der die Aufgabe der anderen Maschine übernimmt. Die Benutzer müssen ihre Laufwerkzuordnungen nicht auf einen anderen Server ausrichten - neue Verbindungen zu SALES gehen einfach zu dem neuen Server. workgroup Der Parameter workgroup legt die aktuelle Arbeitsgruppe (oder Domäne) fest, in der der Samba-Server sich selbst bekannt macht. Clients, die auf Freigaben auf dem SambaServer zugreifen wollen, müssen sich in der gleichen NetBIOS-Gruppe befinden. Denken Sie daran, dass Arbeitsgruppen eigentlich einfach nur NetBIOS-Gruppennamen sind und den Standard-NetBIOS-Namenskonventionen folgen müssen, die in Kapitel 1 dargestellt werden. Der Vorgabewert für diesen Parameter wird bei der Kompilierung auf WORKGROUP gesetzt. Da dies der Standardarbeitsgruppenname für jedes nicht-konfigurierte Windows- und Samba-System ist, empfehlen wir Ihnen, immer Ihren Arbeitsgruppennamen in der Samba-Konfigurationsdatei zu setzen. Wenn Sie den Arbeitsgruppennamen auswählen, vermeiden Sie es, den gleichen Namen wie bei einem Server oder Benutzer einzustellen. Dadurch beugen Sie möglichen Problemen bei der WINS-Namensauflösung vor. server string Der Parameter server string definiert einen Kommentar-String, der neben dem ServerNamen in der Netzwerkumgebung (in der Detailansicht) sowie im Kommentareintrag des Microsoft Windows-Druckermanagers auftaucht.2 Sie können Variablen einsetzen, um Informationen in der Beschreibung zur Verfügung zu stellen. So lautete unser Eintrag: [global] server string = Samba %v on (%h)
Der Vorgabewert für diese Option zeigt lediglich die aktuelle Version von Samba und ist äquivalent zu: server string = Samba %v
Die Konfiguration einer Plattenfreigabe
Wir erwähnten im vorangegangenen Abschnitt, dass es auf dem Server toltec keine Plattenfreigaben gibt. Lassen Sie uns daher an der Konfigurationsdatei weiterarbeiten und eine leere Festplattenfreigabe namens [data] erzeugen. Folgende Ergänzungen erledigen dies: [data] path = /export/samba/data comment = Datenlaufwerk volume = Sample-Data-Drive writable = yes
Die Freigabe [data] ist typisch für eine Samba-Plattenfreigabe. Die Freigabe wird dem Verzeichnis /export/samba/data auf dem Samba-Server zugeordnet. Wir haben außerdem einen Kommentar angegeben, der die Freigabe als Datenlaufwerk beschreibt sowie als Name für die Freigabe selbst verwendet wird. Laut Voreinstellung erzeugt Samba eine schreibgeschützte Freigabe. Daher muss die Option writable für jede Plattenfreigabe, die schreibbar sein soll, explizit gesetzt werden. Sie müssen außerdem das Verzeichnis /export/samba/data auf dem Samba-Server anlegen. Dazu verwenden Sie folgende Befehle: # mkdir /export/samba/data # chmod 777 /export/samba/data
Wenn Sie nun wieder eine Verbindung zum Server toltec herstellen, indem Sie in der Windows-Netzwerkumgebung auf sein Symbol doppelklicken, sehen Sie eine einzelne Freigabe mit der Bezeichnung data, wie in Abbildung 6-4 gezeigt. Diese Freigabe hat Lese-/Schreibzugriff, es können also Dateien von ihr und auf sie kopiert werden. Abbildung 6-4 Die neu angelegte Freigabe auf dem Samba-Server
Optionen zur Konfiguration einer Plattenfreigabe Die gerade vorgestellten Samba-Konfigurationsoptionen für Plattenfreigaben sind in Tabelle 6-5 aufgeführt.
Tabelle 6-5 Grundlegende Konfigurationsoptionen für Freigaben Option
Parameter
Funktion
Legt das UnixVerzeichnis fest, das für eine Plattenfreigabe path String bereitgestellt oder (directory) (Verzeichnisname) für das Spooling durch eine Druckerfreigabe verwendet wird.
Vorgabewert Geltungsbereich
/tmp
Freigabe
keiner
Freigabe
comment
String
Setzt einen Kommentar, der zusammen mit der Freigabe angezeigt wird.
volume
String
Legt den MS-DOSVolume-Namen für die Freigabe fest.
Freigabename
Freigabe
Boolescher Wert
Wenn yes, ist nur schreibgeschützter Zugriff auf eine Freigabe möglich.
yes
Freigabe
Boolescher Wert
Wenn no, ist nur schreibgeschützter Zugriff auf eine Freigabe möglich. Wenn yes, sind sowohl Lesen als auch Schreiben erlaubt.
no
Freigabe
read only
writable (write ok oder writeable)
path Diese Option, die das Synonym directory besitzt, gibt den Pfadnamen für die Wurzel des freigegebenen Verzeichnisses oder Druckers an. Sie können ein beliebiges Verzeichnis auf dem Samba-Server wählen. Der Eigentümer des Samba-Prozesses muss lediglich Lese- und Schreibzugriff auf dieses Verzeichnis haben. Handelt es sich um den Pfad für eine Druckerfreigabe, sollte er auf ein temporäres Verzeichnis verweisen, in dem die Dateien zwischengespeichert werden können, bevor sie an den Zieldrucker weitergeleitet werden (gern genommen werden /tmp und /var/spool). Ist dieser Pfad für eine Plattenfreigabe gedacht, entspricht der Inhalt des Ordners, der den Freigabenamen auf dem Client repräsentiert, dem Inhalt des Verzeichnisses auf dem Samba-Server.
Das Verzeichnis, das als Wert für path festgelegt wird, kann als relativer Pfad angegeben werden. In diesem Fall liegt der Pfad relativ zu dem Verzeichnis, das durch den Parameter root directory vorgegeben wurde. Da root directory standardmäßig root (/ ) ist, bietet es sich im Allgemeinen an, absolute Pfade für den Parameter path zu verwenden, es sei denn, root directory wurde auf einen anderen als den Vorgabewert gesetzt. comment Die Option comment erlaubt es Ihnen, einen Kommentar einzugeben, der an den Client gesendet wird, wenn dieser versucht, die Freigabe zu durchsuchen. Der Benutzer kann den Kommentar in der detaillierten Ansicht des Freigabeordners oder über den Befehl net view an der MS-DOS-Eingabeaufforderung sehen. So könnten Sie beispielsweise einen Kommentar für eine Freigabe einfügen: [network] comment = Netzwerklaufwerk path = /export/samba/network
Verwechseln Sie die Option comment, die die Freigaben eines Samba-Servers dokumentiert, nicht mit der Option server string, die den Server selbst dokumentiert. volume Diese Option erlaubt es Ihnen, den Volume-Namen der Freigabe festzulegen, der ansonsten standardmäßig auf den Namen der Freigabe lauten würde, der in der smb.conf angegeben wird. Manche Software-Installationsprogramme prüfen den Volume-Namen der DistributionsCD-ROM, um sicherzustellen, dass sich die richtige CD-ROM im Laufwerk befindet, bevor sie versuchen, davon zu installieren. Falls Sie den Inhalt der CD-ROM in eine Netzwerkfreigabe kopieren, um davon zu installieren, können Sie diese Option einsetzen, um dafür zu sorgen, dass das Installationsprogramm den richtigen Volume-Namen sieht: [network] comment = Netzwerklaufwerk volume = ASVP-102-RTYUIKA path = /home/samba/network
read only, writable Die Optionen read only und writable (auch als writeable oder write ok bezeichnet) stellen in der Tat zwei Möglichkeiten dar, das Gleiche auszudrücken, allerdings von entgegengesetzten Ausgangspunkten aus. Sie können zum Beispiel eine der folgenden Optionen im Abschnitt [global] oder in einer speziellen Freigabe setzen: read only = yes
writable = no
Wenn beide Optionen entsprechend gesetzt sind, können Daten von der Freigabe gelesen, aber nicht auf sie geschrieben werden. Vermutlich glauben Sie jetzt, dass Sie diese Option nur brauchen, wenn Sie eine schreibgeschützte Freigabe erzeugen. Beachten Sie jedoch, dass ein Schreibschutz für Freigaben das vorgegebene Verhalten darstellt. Falls Sie Daten auf eine Freigabe schreiben wollen, müssen Sie in der Konfigurationsdatei für jede Freigabe ausdrücklich eine der folgenden Optionen festlegen: read only = no writable = yes
Treten die beiden Optionen jeweils mehr als einmal auf, beachtet Samba für die Freigabe den letzten Wert, den es erkennt.
Netzwerkoptionen für Samba Wenn Sie Samba auf einem so genannten Multihomed-System (einem System, das sich in mehreren Subnetzen befindet) ausführen, müssen Sie es so konfigurieren, dass es alle Netzwerkschnittstellen benutzt. Ein weiterer Einsatzfall für die in diesem Abschnitt präsentierten Optionen ist die Implementierung einer größeren Sicherheit, indem Verbindungen zu bestimmten Schnittstellen erlaubt oder verboten werden. Nehmen wir einmal an, der Samba-Server kann auf die beiden Subnetze 192.168.220.* und 134.213.233.* zugreifen. Sie müssen folgende Ergänzungen in die Konfigurationsdatei aufnehmen, um die Netzwerk-Konfigurationsoptionen hinzuzufügen: [global] #
Netzwerk-Konfigurationsoptionen
hosts allow = 192.168.220. 134.213.233. hosts deny = 192.168.220.102 interfaces = 192.168.220.100/255.255.255.0 \ 134.213.233.110/255.255.255.0 bind interfaces only = yes
Schauen Sie sich die Optionen hosts allow und hosts deny an. Falls Ihnen diese Optionen jetzt bekannt vorkommen, denken Sie vermutlich gerade an die Dateien hosts. allow und hosts.deny, die in den /etc-Verzeichnissen vieler Unix-Systeme zu finden sind. Die Aufgabe dieser Optionen ist identisch mit der dieser Dateien. Sie bieten eine gewisse Sicherheit, indem sie Verbindungen anderer Hosts auf der Grundlage der IP-Adressen erlauben oder verbieten. Wir könnten die Dateien hosts.allow und hosts.deny benutzen, verwenden aber stattdessen diese Methode, da es auf dem Server Dienste geben könnte, auf die Benutzer zugreifen können sollen, ohne dass wir ihnen außerdem Zugriff auf die Platten- oder Druckerfreigaben von Samba gewähren. Mit der Option hosts allow haben wir die IP-Adresse 192.168.220 angegeben. Dies ist
äquivalent zur Aussage: »Alle Hosts im Subnetz 192.168.220.« Allerdings haben wir in einer hosts deny-Zeile ausdrücklich festgelegt, dass dem System 192.168.220.102 kein Zugriff erlaubt ist. Sie wundern sich vielleicht jetzt, wieso 192.168.220.102 ausgeschlossen wird, obwohl es sich in dem Subnetz befindet, das durch die Option hosts allow erfasst wurde. Es ist wichtig zu verstehen, wie Samba die Regeln interpretiert, die durch hosts allow und hosts deny bestimmt werden: 1. Wurden keine allow- oder deny-Optionen in smb.conf definiert, lässt Samba Verbindungen von allen Systemen zu. 2. hosts allow- oder hosts deny-Optionen, die im Abschnitt [global] der smb.conf definiert wurden, gelten für alle Freigaben, selbst wenn eine der Optionen in einer oder mehreren der Freigaben definiert wurde. 3. Wurde für eine Freigabe nur eine hosts allow-Option definiert, ist es nur den aufgeführten Hosts erlaubt, die Freigabe zu benutzen. Alle anderen werden abgewiesen. 4. Wurde für eine Freigabe nur eine hosts deny-Option definiert, kann jeder Host, der nicht auf der Liste steht, auf die Freigabe zugreifen. 5. Wurde sowohl eine hosts allow- als auch eine hosts deny-Option definiert, muss ein Host in der allow-Liste auftauchen und darf nicht in der deny-Liste stehen (in welcher Form auch immer), um auf die Freigabe zuzugreifen. Ansonsten wird der Host abgewiesen.
Achten Sie darauf, dass Sie nicht einem Host ausdrücklich den Zugriff auf eine Freigabe erlauben und dann dem gesamten Subnetz, in dem sich der Host befindet, den Zugriff verweigern. Schauen wir uns ein weiteres Beispiel dieses letzten Elements an. Betrachten Sie folgende Optionen: hosts allow = 111.222. hosts deny = 111.222.333.
In diesem Fall ist nur den Hosts, die zu dem Subnetz 111.222.*.* gehören, der Zugriff auf die Samba-Freigaben erlaubt. Gehört ein Client jedoch zum Subnetz 111.222.333.*, wird ihm der Zugriff verweigert, obwohl die Bedingungen, die durch hosts allow formuliert wurden, erfüllt werden. Der Client muss in der hosts allow-Liste auftauchen und darf nicht auf der hosts deny-Liste stehen, um Zugriff auf eine Samba-Freigabe zu erlangen. Die beiden anderen Optionen, die wir festgelegt haben, sind interfaces und bind interface only. Wir wollen uns zuerst die Option interfaces ansehen. Samba sendet standardmäßig Daten nur von der primären Netzwerkschnittstelle. In unserem Beispiel befindet sich dort das Subnetz 192.168.220.100. Wollten wir Daten an mehr als eine Schnittstelle senden, müssten wir mit der Option interfaces die komplette Liste angeben. Im vorangegangenen Beispiel haben wir Samba an beide Subnetze
(192.168.220 und 134.213.233) gebunden, in denen das System aktiv ist, indem wir die andere Netzwerkschnittstellenadresse angegeben haben: 134.213.233.100. Besitzt Ihr Computer mehr als eine Netzwerkschnittstelle, sollten Sie diese Option immer setzen, da es keine Garantie dafür gibt, dass die primäre Schnittstelle, die Samba auswählt, auch wirklich die richtige ist. Die Option bind interfaces only schließlich weist den nmbd-Prozess an, BroadcastNachrichten nur von den Subnetzen zu akzeptieren, die mit der Option interfaces festgelegt wurden. Dies unterscheidet sich von den Optionen hosts allow und hosts deny, die zwar verhindern, dass Clients Verbindungen zu Diensten herstellen, aber nicht, dass Broadcast-Meldungen empfangen werden. Die Option bind interfaces only stellt eine Möglichkeit dar, alle Datagramme aus fremden Subnetzen auszuschließen. Darüber hinaus weist sie den smbd-Prozess an, nur die Schnittstellenliste zu binden, die durch die Option interfaces vorgegeben wurde. Dies beschränkt die Anzahl der Netzwerke, die Samba bedient.
Netzwerkoptionen Die vorgestellten Netzwerkoptionen werden in Tabelle 6-6 noch einmal zusammengefasst.
Tabelle 6-6 Netzwerk-Konfigurationsoptionen Option
Parameter
Funktion
Vorgabewert
Geltungsbereich
hosts allow (allow hosts)
String (Liste von Hostnamen)
Client-Systeme, die sich bei Samba anmelden dürfen.
keiner
Freigabe
hosts deny (deny hosts)
String (Liste von Hostnamen)
Client-Systeme, die sich nicht bei Samba anmelden dürfen.
keiner
Freigabe
interfaces
Netzwerkschnittstellen, String (Liste auf die Samba von IPantwortet. Erlaubt das NetzmaskeKorrigieren von Kombinationen) Vorgabewerten.
bind interfaces only
Auf yes gesetzt, wird Samba nur an die Schnittstellen gebunden, die durch die Option interfaces festgelegt werden.
Boolescher Wert
systemabhängig global
no
global
hosts allow Die Option hosts allow (manchmal auch allow hosts geschrieben) legt die Clients fest, die die Berechtigung besitzen, auf Freigaben auf dem Samba-Server zuzugreifen. Die Clients werden als durch Kommata oder Leerzeichen getrennte Liste von den Hostnamen der Systeme oder deren IP-Adressen angegeben. Sie können eine gewisse Sicherheit erzielen, indem Sie die Subnetzadresse Ihres LANs in diese Option setzen.
Für diese Option sind folgende Formate möglich: ● ● ●
●
●
● ●
Hostnamen, wie etwa ftp.example.com . IP-Adressen, wie etwa 130.63.9.252. Domänennamen, die sich von einzelnen Hostnamen dadurch unterscheiden, dass sie mit einem Punkt beginnen. Beispielsweise repräsentiert .ora.com alle Systeme innerhalb der Domäne ora.com. Netzgruppen, die mit einem at-Zeichen (@) beginnen, wie etwa @printerhosts. Netzgruppen stehen üblicherweise nur auf Systemen zur Verfügung, die NIS oder NIS+ ausführen. Werden Netzgruppen auf Ihrem System unterstützt, sollte es auch eine netgroups-Manpage geben, die diese näher beschreibt. Subnetze, die auf einen Punkt enden. Beispielsweise repräsentiert 130.63.9. alle Systeme, deren IP-Adressen mit 130.63.9 beginnen. Das Schlüsselwort ALL, das allen Clients den Zugriff erlaubt. Das Schlüsselwort EXCEPT, gefolgt von einem oder mehreren Namen, IP-Adressen, Domänennamen, Netzgruppen oder Subnetzen. So könnten Sie zum Beispiel mit hosts allow = ALL EXCEPT 192.168.110. (denken Sie an den abschließenden Punkt) festlegen, dass Samba alle Hosts mit Ausnahme derjenigen im Subnetz 192.168.110 zulässt.
Das Schlüsselwort ALL allein zu benutzen ist fast immer eine ganz schlechte Idee, weil das bedeutet, dass Cracker aus jedem Netzwerk auf Ihren Samba-Server zugreifen können. Der Hostname localhost für die Loopback-Adresse 127.0.0.1 ist standardmäßig in die hosts allow-Liste eingeschlossen und muss nicht ausdrücklich aufgeführt werden, es sei denn, Sie haben den Parameter bind interfaces only festgelegt. Diese Adresse ist erforderlich, damit Samba ordentlich funktioniert. Abgesehen davon gibt es keinen Vorgabewert für die Konfigurationsoption hosts allow. Falls weder die Option hosts allow noch die Option hosts deny in der Datei smb.conf festgelegt wurde, wird standardmäßig der Zugriff von allen Quellen aus erlaubt.
Wenn Sie hosts allow im Abschnitt [global] festlegen, setzt diese Definition alle hosts allow-Zeilen in den Freigabe-Definitionen außer Kraft. Dies ist das Gegenteil des üblichen Verhaltens, bei dem Parameter, die in Freigabe-Definitionen gesetzt sind, Standardwerte aus dem Abschnitt [global] überschreiben. hosts deny Die Option hosts deny (synonym mit deny hosts) gibt Client-Systeme an, die keine Berechtigung haben, um auf eine Freigabe zuzugreifen. Die Client-Systeme werden als durch Kommata oder Leerzeichen getrennte Liste von Hostnamen oder deren IP-Adressen festgelegt. Verwenden Sie zum Vorgeben der Clients das gleiche Format wie bei der Option hosts allow. Um beispielsweise den Zugriff auf den Server von jedem System mit Ausnahme von example.com zu verbieten, könnten Sie schreiben:
hosts deny = ALL EXCEPT .example.com
Es gibt für die Konfigurationsoption hosts deny keinen Vorgabewert, allerdings wird standardmäßig der Zugriff von allen Quellen aus erlaubt, falls keine Option festgelegt wurde. Und falls Sie diese Option im Abschnitt [global] der Konfigurationsdatei angeben, werden alle hosts deny-Optionen außer Kraft gesetzt, die in den Freigaben definiert wurden. Wollen Sie den Zugriff auf bestimmte Freigaben verbieten, vermeiden Sie den Einsatz der Optionen hosts allow und hosts deny im Abschnitt [global] der Konfigurationsdatei.
Schließen Sie niemals die Loopback-Adresse (Localhost unter der IPAdresse 127.0.0.1) in die hosts deny-Liste ein. Das Programm smbpasswd muss sich über die Loopback-Adresse als Client am Samba-Server anmelden, um das verschlüsselte Kennwort eines Benutzers zu ändern. Wenn die Loopback-Adresse deaktiviert ist, werden die lokal erzeugten Pakete, die die Änderung des verschlüsselten Kennworts anfordern, von Samba abgewiesen.
Außerdem verlangen sowohl die lokale Suchlistenbekanntgabe als auch einige Funktionen des SWAT den Zugriff auf den Samba-Server über die Loopback-Adresse und funktionieren nicht richtig, wenn diese Adresse deaktiviert ist. interfaces Die Option interfaces legt die Netzwerke fest, die der Samba-Server erkennen und verarbeiten soll. Diese Option ist ganz praktisch, wenn Sie einen Computer haben, der sich in mehr als einem Subnetz befindet. Wenn diese Option nicht gesetzt ist, sucht Samba beim Start nach der primären Netzwerkschnittstelle des Servers (normalerweise die erste Ethernet-Karte) und konfiguriert sich selbst so, dass es nur in diesem Subnetz arbeitet. Wurde der Server für den Einsatz in mehr als einem Subnetz konfiguriert und Sie legen diese Option nicht fest, funktioniert Samba nur in dem ersten Subnetz, das es erkennt. Sie müssen diese Option verwenden, um Samba zu zwingen, die anderen Subnetze in Ihrem Netzwerk zu bedienen. Der Wert dieser Option ist eine oder mehrere Gruppen von IP-Adresse/NetzmaskePaaren, wie im folgenden Beispiel: interfaces = 192.168.220.100/255.255.255.0 192.168.210.30/255.255.255.0
Sie können optional eine Bit-Maske im CIDR-Format angeben: interfaces = 192.168.220.100/24 192.168.210.30/24
Die Zahl nach dem Schrägstrich gibt die Anzahl der Bits an, die in der Netzmaske gesetzt werden. So bedeutet zum Beispiel die Zahl 24, dass die ersten 24 (von 32) Bits in der BitMaske gesetzt werden. Das ist identisch mit dem Wert 255.255.255.0 als Netzmaske. 16 wäre demnach äquivalent zur Netzmaske 255.255.0.0, und 8 wäre identisch mit der Netzmaske 255.0.0.0.
Diese Option funktioniert unter Umständen nicht richtig, wenn Sie DHCP benutzen. bind interfaces only Die Option bind interfaces only kann verwendet werden, um die Prozesse smbd und nmbd zu zwingen, nur auf solche Adressen zu reagieren, die durch die Option interfaces festgelegt wurden. Der nmbd-Prozess ist normalerweise an die Schnittstelle für alle Adressen (0.0.0.0.) an den Ports 137 und 138 gebunden, wodurch der Empfang von Broadcast-Nachrichten von allen Absendern erlaubt ist. Sie können dieses Verhalten jedoch mit der folgenden Einstellung außer Kraft setzen: bind interfaces only = yes
Dies veranlasst Samba, alle Pakete zu ignorieren (einschließlich der Broadcast-Pakete), deren Quelladressen nicht mit einer der Netzwerkschnittstellen korrespondieren, die durch die Option interfaces festgelegt wurden. Sie sollten den Einsatz dieser Option vermeiden, falls Sie temporäre Netzwerkverbindungen erlauben wollen, die zum Beispiel über SLIP oder PPP erzeugt werden. Es kommt nur selten vor, dass diese Option benötigt wird, und sie sollte auch nur von Experten verwendet werden.
Falls Sie bind interfaces only auf yes setzen, nehmen Sie die lokale Hostadresse (127.0.01) in die »interfaces«-Liste auf. Ansonsten ist smbpasswd in seinem Standardmodus nicht in der Lage, eine Verbindung zum Server aufzunehmen, um ein Kennwort zu ändern, die lokale Suchlistenbekanntgabe wird fehlschlagen, und einige Funktionen des SWAT werden nicht richtig funktionieren.
Virtuelle Server Virtuelle Server können eingesetzt werden, um die Illusion zu erzeugen, dass im Netzwerk mehrere Server vorhanden sind, während es in Wirklichkeit nur einen gibt. Die
Technik ist einfach umzusetzen: Ein System registriert einfach mehr als einen NetBIOSNamen im Zusammenhang mit seiner IP-Adresse. Dieses Vorgehen bringt deutliche Vorteile mit sich. Beispielsweise könnte die Buchhaltung einen buchhaltung-Server haben. Dessen Clients würden nur die Festplatten und Drucker aus der Buchhaltung sehen. Die MarketingAbteilung könnte ihren eigenen Server namens marketing mit eigenen Berichten usw. haben. All diese Dienste würden von einem mittelgroßen Unix-Server (und einem entspannten Administrator) bereitgestellt werden. Es wäre nicht nötig, einen kleinen Server pro Abteilung zu installieren.
Konfigurationsoptionen für virtuelle Server Samba erlaubt es einem Server, mit Hilfe der Option netbios aliases mehr als einen NetBIOS-Namen zu verwenden; Genaueres dazu in Tabelle 6-7.
Tabelle 6-7 Konfigurationsoptionen für virtuelle Server Option
Parameter
String (Liste von NetBIOSNamen)
netbios aliases
Funktion Zusätzliche NetBIOS-Namen, auf die reagiert werden soll, für den Einsatz mit mehreren »virtuellen« Samba-Servern.
Vorgabewert Geltungsbereich
keiner
global
netbios aliases Die Option netbios aliases kann eingesetzt werden, um dem Samba-Server mehr als einen NetBIOS-Namen zu geben. Jeder als Wert aufgeführte NetBIOS-Name wird in der Netzwerkumgebung der Windows-Clients angezeigt. Wird eine Verbindung zu einem der Server angefordert, wird immer der gleiche Samba-Server kontaktiert. Das könnte sich beispielsweise als praktisch erweisen, wenn Sie die Daten von drei Abteilungen auf einen einzigen Unix-Server mit größeren und schnelleren Festplatten übertragen und die alten Windows NT/2000-Server außer Dienst stellen oder umsetzen. Falls die drei Server die Bezeichnungen vertrieb, buchhaltung und admin tragen, können Sie Samba mit Hilfe der folgenden Optionen veranlassen, alle drei Server zu repräsentieren: [global] netbios aliases = vertrieb buchhaltung admin include = /usr/local/samba/lib/smb.conf.%L
In Abbildung 6-5 sehen Sie, was die Netzwerkumgebung eines Clients darstellen würde. Wenn ein Client versucht, sich bei Samba anzumelden, gibt er den Namen des Servers an, zu dem eine Verbindung gewünscht wird. Dieser Name wird in der Konfigurationsdatei durch die Variable %L bereitgestellt. Handelt es sich bei dem
angeforderten Server um vertrieb, fügt Samba die Datei /usr/local/samba/lib/smb.conf. vertrieb ein. Diese Datei könnte globale und Freigabe-Deklarationen enthalten, die ausschließlich für das Vertriebsteam vorgesehen sind: [global] workgroup = VERTRIEB hosts allow = 192.168.10.255
[vertrieb2003] path = /usr/local/samba/vertrieb/vertrieb2003/ ...
Dieses spezielle Beispiel würde außerdem die Arbeitsgruppe auf VERTRIEB setzen und die IP-Adresse so einstellen, dass nur Verbindungen aus dem Subnetz VERTRIEB zulässig sind (192.168.10). Darüber hinaus würden Freigaben aus der Vertriebsabteilung angeboten werden. Abbildung 6-5 NetBIOS-Aliase für einen Samba-Server einsetzen
Konfigurationsoptionen für die Protokollierung Gelegentlich müssen Sie sich darum kümmern, was Samba so treibt. Dies gilt vor allem dann, wenn Samba eine unerwartete Aktion ausführt oder vielleicht überhaupt nichts mehr tut. Um diese Informationen zu ermitteln, müssen Sie die Protokolldateien von Samba überprüfen, um genau feststellen zu können, weshalb etwas geschehen ist. Die Samba-Protokolldateien können so kurz oder so ausführlich sein, wie Sie das wünschen. Hier ein Beispiel dafür, wie eine Samba-Protokolldatei aussehen könnte:
[2002/07/21 13:23:25, 3] smbd/service.c:close_cnum(514) maya (172.16.1.6) closed connection to service IPC$ [2002/07/21 13:23:25, 3] smbd/connection.c:yield_connection(40) Yielding connection to IPC$ [2002/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 923 of length 49 [2002/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBread (pid 467) [2002/07/21 13:23:25, 3] lib/doscalls.c:dos_ChDir(336) dos_ChDir to /home/samba [2002/07/21 13:23:25, 3] smbd/reply.c:reply_read(2199) read fnum=4207 num=2820 nread=2820 [2002/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 924 of length 55 [2002/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467) [2002/07/21 13:23:25, 3] smbd/reply.c:reply_readbraw(2053) readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276 [2002/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 925 of length 55 [2002/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467)
Viele dieser Informationen sind nur für Samba-Programmierer von Belang. Wir werden jedoch die Bedeutung einiger dieser Einträge in Kapitel 12 näher betrachten. Samba enthält sechs Optionen, die es Benutzern erlauben zu beschreiben, wie und wo Protokollierungsinformationen abgelegt werden sollen. Es handelt sich um globale Optionen, die nicht in Freigabe-Definitionen auftauchen dürfen. Hier ein Beispiel für Protokollierungsoptionen, die wir unserer Konfigurationsdatei hinzufügen: [global] log level = 2 log file = /var/log/samba.log.%m
max log size = 50 debug timestamp = yes
Wir haben eine eigene Protokolldatei angelegt, die Informationen bis zur Protokollierungsstufe 2 aufzeichnet. Dies ist eine relativ niedrige Protokollierungsstufe. Die Protokollierungsstufen bewegen sich im Bereich von 1 bis 10, wobei Stufe 1 nur sehr wenige Informationen bereitstellt, Stufe 10 dagegen eine Unmenge an mehr und auch weniger wichtigen Informationen sammelt. Die Stufen 2 oder 3 beliefern uns mit nützlichen Debugging-Informationen, ohne Festplattenplatz auf dem Server zu verschwenden. In der Praxis sollten Sie es vermeiden, Protokollierungsstufen einzustellen, die größer als 3 sind, es sei denn, Sie arbeiten am Samba-Quellcode. Die Protokolldatei befindet sich dank der Konfigurationsoption log file im Verzeichnis / var/log. Wir können jedoch mit Hilfe von Variablen spezielle Protokolldateien für einzelne Benutzer oder Clients anlegen. Betrachten Sie dazu die folgende Zeile mit der Variablen % m: log file = /usr/local/logs/samba.log.%m
Das Isolieren der Protokollierungsmeldungen erweist sich beim Verfolgen eines Netzwerkfehlers vor allem dann als sinnvoll, wenn Sie wissen, dass das Problem von einem bestimmten Client-System oder Benutzer stammt. Im Zusammenhang mit der Protokollierung müssen Sie Folgendes beachten: Eine Protokolldatei kann nicht größer als 50 KByte sein, wie durch die Option max log size festgelegt. Überschreitet eine Protokolldatei diese Größe, wird der Inhalt in eine Datei mit dem gleichen Namen und dem Suffix .old verschoben. Existiert die .old-Datei bereits, wird sie überschrieben, und der Inhalt geht verloren. Die Originaldatei wird geleert und ist nun für die Aufnahme neuer Protokollierungsinformationen bereit. Dies verhindert, dass die Festplatte während des Lebenszyklus der Samba-Daemons mit SambaProtokolldateien vollgestopft wird. Wir haben beschlossen, mit der Option debug timestamp die Zeitstempel der Nachrichten in das Protokoll aufzunehmen - das ist das Standardverhalten. Jede Nachricht, die in die Protokolldatei geschrieben wird, erhält dadurch einen Zeitstempel. Wären wir an dieser Information nicht interessiert, könnten wir für diese Option stattdessen den Wert no festlegen.
syslog verwenden Vielleicht möchten Sie ja an Stelle oder zusätzlich zu der normalen Samba-Protokolldatei den System-Logger (syslog ) einsetzen. Samba bietet dafür ebenfalls Optionen. Um syslog benutzen zu können, müssen Sie allerdings zunächst sicherstellen, dass Samba mit der Konfigurationsoption configure --with-syslog kompiliert wurde. In Kapitel 2 finden Sie weitere Informationen über die Konfiguration und Kompilierung von Samba. Anhang E bietet Einzelheiten über die Option --with-syslog. Sobald dies erledigt ist, müssen Sie Ihre /etc/syslog.conf so konfigurieren, dass sie Protokollierungsinformationen von Samba akzeptiert. Falls es noch keinen daemon.*Eintrag in der Datei /etc/syslog.conf gibt, fügen Sie folgende Zeile hinzu: daemon.*
/var/log/daemon.log
Dies legt fest, dass alle Protokollierungsinformationen von System-Daemons in der Datei / var/log/daemon.log gespeichert werden. An dieser Stelle werden auch die SambaInformationen abgelegt. Von dort können Sie einen Wert für den Parameter syslog in Ihrer Samba-Konfigurationsdatei setzen, um festzulegen, welche Protokollierungsnachrichten an syslog geschickt werden sollen. Es werden nur solche Nachrichten an syslog gesandt, deren Protokollierungsstufen niedriger sind als der Wert des syslog-Parameters. Wenn Sie zum Beispiel Folgendes einstellen: syslog = 3
legen Sie fest, dass alle Protokollierungsnachrichten der Stufe 2 oder niedriger an syslog sowie an die Samba-Protokolldateien geschickt werden. (Die Zuordnungen zu den syslogPrioritäten werden im kommenden Abschnitt »syslog« beschrieben.) Um das Beispiel fortzusetzen, lassen Sie uns annehmen, dass wir die Option log level auf 4 gesetzt haben. Die Protokollierungsnachrichten der Stufen 2 und 1 werden sowohl an syslog als auch an die Samba-Protokolldateien gesandt. Nachrichten der Stufen 3 oder 4 werden an die Samba-Protokolldateien geschickt, nicht jedoch an syslog. Überschreitet der syslogWert den log level-Wert, wird nichts an syslog geschickt. Wollen Sie festlegen, dass Nachrichten nur an syslog gesandt werden - und nicht an die normalen Samba-Protokolldateien -, können Sie diese Option in die Konfigurationsdatei aufnehmen: syslog only = yes
Ist dies der Fall, werden alle Protokollierungsinformationen über dem in der Option syslog festgelegten Wert abgewiesen, wie bei der Option log level.
Konfigurationsoptionen für die Protokollierung Tabelle 6-8 zeigt alle Konfigurationsoptionen für die Protokollierung, die Samba verwenden kann.
Tabelle 6-8 Konfigurationsoptionen für die Protokollierung Option
log file
Parameter
String (Name der Datei)
Funktion Name der Protokolldatei, die Samba benutzen soll. Funktioniert mit allen Variablen.
Vorgabewert
Geltungsbereich
wird im Sambamakefile festgelegt
global
log level (debug level)
numerischer Wert (0 bis 10)
Menge der Protokollierungs-/ DebuggingNachrichten, die an die Protokolldatei geschickt werden. 0 bedeutet keine, 3 ist ein annehmbarer Wert.
max log size
numerischer Wert (Größe in KByte)
Maximale Größe der Protokolldatei.
5000
global
Boolescher Wert
Wenn no, werden die Protokolleinträge nicht mit Zeitstempeln versehen, wodurch sich die Lesbarkeit bei der Fehlersuche verbessert.
yes
global
numerischer Wert (0 bis 10)
Stufe der Nachrichten, die an syslog gesandt werden. Stufen unterhalb des syslog-Werts werden an den System-Logger geschickt.
1
global
Boolescher Wert
Wenn yes, wird nur syslog verwendet. Es werden keine Nachrichten an die SambaProtokolldateien ausgegeben.
no
global
debug timestamp (timestamp logs)
syslog
syslog only
1
global
log file Samba schreibt Protokollierungsinformationen standardmäßig in Textdateien im Verzeichnis /usr/local/samba/var. Die Option log file kann verwendet werden, um die Datei an einer anderen Stelle abzulegen. Um beispielsweise die SambaProtokollierungsinformationen in /usr/local/logs/samba.log zu speichern, könnten Sie Folgendes verwenden: [global] log file = /usr/local/logs/samba.log
Mittels Variablenersetzung können Sie Protokolldateien für einzelne Benutzer oder Clients anlegen. Beim Start der Daemons können Sie den Wert für den Ablageort der Datei mit der Kommandozeilen-Option -l überschreiben. Dies setzt jedoch nicht die Option log file außer Kraft. Wenn Sie diesen Parameter setzen, werden die ersten Protokollierungsinformationen an die Datei geschickt, die nach -l angegeben wurde (oder an die Standarddatei, die im Samba-makefile festgelegt wurde), bis die Daemons die Datei smb.conf verarbeitet haben und wissen, dass sie die Daten an eine neue Datei weiterleiten sollen. log level Die Option log level legt die Menge der Daten fest, die protokolliert werden sollen. Normalerweise ist diese Option auf 0 oder 1 gesetzt. Haben Sie jedoch ein spezielles Problem, könnten Sie sie auf 3 setzen, wodurch die notwendigen Informationen geliefert werden, um ein Problem zu verfolgen. Protokollierungsstufen, die größer als 3 sind, liefern Informationen, die vorrangig für Entwickler gedacht sind, die interne Fehler suchen, und verlangsamen den Server merklich. Wir empfehlen Ihnen deshalb für den normalen Betrieb Werte, die kleiner als 3 sind. max log size Die Option max log size legt in KByte die maximale Größe der Protokolldatei fest, die Samba anlegt. Überschreitet die Protokolldatei diese Größe, wird die aktuelle Datei mit der Erweiterung .old versehen (wobei eine eventuell vorhandene Datei dieses Namens gelöscht wird), und eine neue Protokolldatei mit dem Originalnamen wird angelegt, zum Beispiel: [global] log file = /usr/local/logs/samba.log.%m max log size = 1000
Überschreitet hier eine Protokolldatei die eingestellte Größe von 1 MByte, benennt Samba die Protokolldatei in samba.log. maschinenname.old um und legt eine neue Protokolldatei an. Gibt es bereits eine Datei mit der Erweiterung .old, löscht Samba diese. Wir empfehlen Ihnen, diese Option in Ihren Konfigurationsdateien auf jeden Fall einzustellen, da bei der Fehlerprotokollierung (selbst bei niedrigen Stufen) schnell große Datenmengen zusammenkommen und Ihren verfügbaren Festplattenplatz belegen. Diese Option verhindert, dass unachtsame Administratoren plötzlich entdecken müssen, dass der meiste Platz auf einer Festplatte oder Plattenpartition von einer einzigen SambaProtokolldatei belegt wird. debug timestamp oder timestamp logs Falls Sie einmal ein Netzwerkproblem verfolgen und feststellen, dass die Zeitinformation in den Samba-Protokollierungszeilen Ihnen im Weg sind, können Sie sie deaktivieren, indem Sie der Option timestamp logs oder ihrer synonymen Option debug timestamp den Wert no geben. Eine normale Samba-Protokolldatei präsentiert ihre Ausgabe beispielsweise in der folgenden Form: 12/31/01 12:03:34 toltec (172.16.1.1) connect to server network as user jay
Beim Wert no für diese Option würde die Ausgabe ohne den Zeitstempel erscheinen: toltec (172.16.1.1) connect to server network as user jay
syslog Die Option syslog veranlasst Samba, die Protokollierungsnachrichten an den UnixSystem-Logger zu schicken. Die Art der aufzuzeichnenden Protokollierungsinformationen wird über einen numerischen Wert festgelegt. Wie bei der Option log level ist dies eine Zahl zwischen 0 und 10. Protokollierungsinformationen mit einem Wert, der niedriger ist als die angegebene Zahl, werden an den System-Logger gesandt. Informationen, deren Protokollierungsstufe größer oder gleich der syslog-Stufe ist, aber niedriger als log level, werden weiterhin an die normalen Protokolldateien von Samba geschickt. Ein Beispiel: [global] log level = 3 syslog = 1
Damit werden alle Protokollierungsinformationen der Stufe 0 an die normalen SambaProtokolle und den System-Logger geschickt, während Informationen mit den Stufen 1, 2 und 3 nur an die normalen Samba-Protokolle gesandt werden würden. Stufen über 3 werden überhaupt nicht protokolliert. Alle Nachrichten, die an den System-Logger geschickt werden, werden auf eine Prioritätsstufe abgebildet, die der syslogd-Daemon versteht, wie in Tabelle 6-9 dargestellt. Der Standardwert ist 1.
Tabelle 6-9 syslog-Prioritätenkonvertierung Protokollierungsstufe syslog-Priorität 0
LOG_ERR
1
LOG_WARNING
2
LOG_NOTICE
3
LOG_INFO
4 und höher
LOG_DEBUG
Wollen Sie syslog verwenden, müssen Sie bei der Kompilierung von Samba die Konfigurationsoption configure --with-syslog einsetzen und Ihre /etc/syslog.conf entsprechend konfigurieren. (Beachten Sie auch den Abschnitt »syslog verwenden« weiter oben in diesem Kapitel.) syslog only Die Option syslog only weist Samba an, seine eigenen Protokolldateien überhaupt nicht zu verwenden, sondern nur den System-Logger einzusetzen. Um dies zu aktivieren, geben Sie die folgende Option im Abschnitt [global] der Samba-Konfigurationsdatei an:
[global] syslog only = yes
1Je
nach Ihrem verwendeten System handelt es sich bei dieser Datei nicht um /etc/ printcap. Sie können den Befehl testparm verwenden, der in Samba enthalten ist, um die Parameter-Definitionen auszulesen und den Wert der Konfigurationsoption printcap name zu ermitteln. Der zugewiesene Wert ist der Standardwert, der bei der Konfiguration und Kompilierung von Samba gewählt wurde. Dieser Wert sollte richtig sein.
2Wir
meinen damit das Fenster, das sich öffnet, wenn Sie auf ein Druckersymbol in der Drucker-Systemsteuerung doppelklicken.
Kapitel 7 Die Namensauflösung und das Durchsuchen Die Namensauflösung ist für den Betrieb von Samba von entscheidender Bedeutung, weil die Namen benötigt werden, um diejenigen Server zu finden, die Dateien oder Drucker für eine gemeinsame Nutzung zur Verfügung stellen. Das Durchsuchen (Browsing) hat die Aufgabe des Auffindens der Server dergestalt verbessert, dass es einem Benutzer nun erlaubt ist, eine Hierarchie von Netzwerken, Domänen, Hosts und Diensten, die von den einzelnen Servern angeboten werden, hinabzusteigen. Namensauflösung und Suche sind zwar eigentlich nicht schwierig zu konfigurieren, eine gewisse Komplexität ergibt sich allerdings aus der Tatsache, dass eine Vielzahl unterschiedlicher Systeme zur Namensauflösung zur Verfügung stehen. Im Laufe ihrer Entwicklung sind Unix und andere Anwender von TCP/IP von der einfachen hosts-Datei zum Domain Name System übergegangen. Auch das Network Information System stellt eine beliebte Wahl dar. Microsoft dagegen ist von einem Broadcasting-System zu einem einfachen, nur im LAN vorhandenen Namensdienst namens WINS und schließlich zum DNS gelangt. Wir erwähnen diese quasi historischen Fakten deshalb, weil alle genannten Systeme zur Namensauflösung heute noch in Benutzung sind! Das Suchen und Finden eines Hosts ist für den Netzwerkbetrieb so wichtig, dass viele Einrichtungen weiterhin robuste (wenn auch eingeschränkte) Systeme zur Namensauflösung verwenden, auf die sie zurückgreifen können, falls die Hauptsysteme ausfallen. Das Durchsuchen wiederum wird verkompliziert, weil es häufig notwendig ist, Hosts in anderen Subnetzen zu zeigen. In diesem Kapitel erfahren Sie, wie Sie Ihr Netzwerk so konfigurieren, dass die Namensauflösung und das Durchsuchen so vonstatten gehen, wie Sie dies wünschen. Einige der Unterschiede zwischen Unix- und Microsoft-Netzwerkimplementierungen sind das Ergebnis fundamentaler Designziele. Unter Unix waren Netzwerke ursprünglich hauptsächlich dafür vorgesehen, eine relativ formale Gruppe von Systemen zu implementieren, von denen angenommen wurde, dass es nur wenige sind, die gut gewartet werden, immer verfügbar sind, statische IP-Adressen besitzen und sich physisch nicht von der Stelle bewegen. Das Einbinden eines neuen Servers in das Netzwerk war eine arbeitsintensive Aufgabe, die jedoch nicht oft ausgeführt werden musste. Im Gegensatz dazu waren Windows-Netzwerke ursprünglich als eine Peer-to-Peer-Ansammlung kleiner PCs in einem einzigen Subnetz entwickelt worden, die keine zentrale oder hierarchische Organisationsstruktur hatten. SMB-Netzwerkbetrieb ist dynamisch. Den Computern ist es erlaubt, das Netzwerk jederzeit zu verlassen. Manchmal geschieht das sogar ohne Warnung. Ebenso können sie dem Netzwerk jederzeit beitreten bzw. wieder beitreten. Darüber hinaus kann jeder Benutzer in einem Windows-Netzwerk dem Netzwerk eine neue freigegebene Ressource hinzufügen oder eine Ressource entfernen, die er zuvor angelegt hatte. Die Änderung in der Konfiguration des Netzwerks wird von den restlichen Elementen des Netzwerks automatisch vorgenommen, ohne dass ein Systemadministrator auf den Plan treten muss.
Namensauflösung TCP/IP-Netzwerke identifizieren Systeme anhand ihrer IP-Adressen und verknüpfen
diese Adressen immer mit normal lesbaren Namen. In den frühesten NetzwerkImplementierungen von Microsoft (für MS-DOS und Windows for Workgroups) wurde die Übersetzung der Namen in Netzwerk-Adressen in einer Weise ausgeführt, die sehr einfach, aber auch sehr ineffizient war. Wenn ein System im Netzwerk eine IP-Adresse benötigte, die mit einem bestimmten Namen korrespondierte, schickte es den Namen als Broadcast-Nachricht an alle anderen Systeme im Netzwerk und wartete darauf, dass das System, zu dem der Name gehörte, mit seiner IP-Adresse antwortete. Das Hauptproblem beim Ausführen der Namensauflösung mit Hilfe von BroadcastPaketen besteht in der schlechten Leistung des Netzwerks als Ganzes, einschließlich der CPU-Zeit, die von den einzelnen Hosts im Netzwerk beansprucht wird, weil diese jedes Broadcast-Paket akzeptieren müssen und anschließend zu entscheiden haben, ob sie darauf antworten. Broadcast-Pakete werden außerdem nicht von Routern weitergeleitet, wodurch die Namensauflösung auf das lokale Subnetz beschränkt ist. Microsofts Lösung bestand darin, Windows NT um Unterstützung für WINS (Windows Internet Name Service) zu erweitern. Die Computer im Netzwerk können nun eine direkte Anfrage an den WINS-Server richten und müssen nicht mehr auf BroadcastPakete zurückgreifen. Moderne Windows-Clients verwenden eine Vielzahl von Methoden für die Übersetzung von Hostnamen in IP-Adressen. Welche Methode das genau ist, hängt davon ab, welche Windows-Version der Client ausführt, wie der Client konfiguriert ist (d.h., ob DNS-Server- und/oder WINS-Server-IP-Adressen bereitgestellt werden) und ob die Anwendungssoftware auf das Netzwerk über Microsofts Winsock oder eine TCP/IP-API zugreift. Im Allgemeinen verwendet Windows einige Kombinationen der folgenden Methoden: ● ● ● ● ● ●
Nachschauen des Namens in seinem Cache mit den kürzlich aufgelösten Namen Abfragen von DNS-Servern Benutzen der DNS-hosts-Datei Abfragen von WINS-Servern Benutzen der WINS-LMHOSTS-Datei Ausführen einer Broadcast-Namensauflösung
Die erste Methode ist praktisch selbsterklärend. Ein Hostname wird mit anderen Hostnamen verglichen, die kürzlich in IP-Adressen aufgelöst wurden und in einem Cache zwischengespeichert sind. Dies spart Zeit und Netzwerkbandbreite bei der Auflösung von Namen, die häufig eingesetzt werden. Wenn ein Windows-System mit der IP-Adresse wenigstens eines DNS-Servers konfiguriert wird, kann es DNS benutzen, um voll qualifizierte Domain-Namen wie die im Internet benutzten aufzulösen. Die DNS-Server können entweder Windows NT/2000- oder Unix-Systeme sein. Ausführliche Informationen über das DNS und die Konfiguration von DNS-Servern finden Sie im O'Reilly-Buch DNS und BIND. In diesem Kapitel konzentrieren wir uns vor allem auf die Namensauflösung mittels WINS, die von Samba mit dem nmbd-Daemon unterstützt wird.
WINS-Clients und Server-Interaktion Es gibt zwei Arten der Interaktion zwischen einem WINS-Client und einem Server: Der Client sorgt dafür, dass sein eigener NetBIOS-Name1 am Server registriert ist, und fragt den Server ab, um die IP-Adresse zu erhalten, die mit dem NetBIOS-Namen eines anderen Systems korrespondiert.
Wenn ein WINS-Client dem Netzwerk beitritt, registriert er seinen NetBIOS-Namen am WINS-Server, der diesen zusammen mit der IP-Adresse des Clients in der WINSDatenbank speichert. Dieser Eintrag wird als aktiv gekennzeichnet. Von dem Client wird nun erwartet, dass er seine Registrierung regelmäßig (üblicherweise alle vier Tage) erneuert, um den Server davon in Kenntnis zu setzen, dass er den Namen weiterhin verwendet. Diese Periode wird Time to Live (Lebenszeit) oder TTL genannt. Wenn der Client das Netzwerk verlässt, weil er ordnungsgemäß heruntergefahren wird, kennzeichnet der Server den Eintrag des Clients in seiner Datenbank als released (freigegeben). Verlässt ein Client das Netzwerk, ohne dem WINS-Server mitzuteilen, dass sein Name freigegeben werden soll, wartet der Server den Zeitpunkt der erwarteten Erneuerung seiner Registrierung durch den Client ab und kennzeichnet den Eintrag danach als freigegeben. In jedem Fall steht der freigegebene Name anderen Clients zur Verfügung, die dem Netzwerk beitreten. Er kann in der WINS-Datenbank als freigegeben verbleiben und wird schließlich irgendwann gelöscht, wenn er nicht wieder registriert wird. Weitere Informationen über WINS finden Sie im Microsoft-Whitepaper Windows Internet Naming Service (WINS) Architecture and Capacity Planning. Dieses Dokument kann von der Microsoft-Website unter http://www.microsoft.com heruntergeladen werden.
Die lmhosts-Datei In Kapitel 3 haben wir Ihnen gezeigt, wie Sie Windows-Systeme so konfigurieren, dass diese die lmhosts-Datei als Alternative zum WINS-Server für die Namensauflösung einsetzen. Samba kann ebenfalls eine lmhosts-Datei benutzen. Standardmäßig ist dies /usr/local/samba/lib/lmhosts. Die lmhosts-Datei von Samba besitzt das gleiche Format wie die Windows-Version. Eine einfache lmhosts-Datei könnte so aussehen: 172.16.1.1
toltec
172.16.1.6
maya
Die Namen auf der rechten Seite der Einträge sind NetBIOS-Namen. Sie können diesen Ressourcentypen zuordnen und weitere Einträge für Computer hinzufügen: 172.16.1.1
toltec#20
172.16.1.1
metran#1b
172.16.1.6
maya#20
Hier haben wir toltec zum primären Domänen-Controller der Domäne METRAN auf der zweiten Zeile gemacht. Diese Zeile beginnt mit der IP-Adresse von toltec, gefolgt vom Namen metran und dem Ressourcentyp <1B>. Die anderen Zeilen beinhalten Einträge für toltec und maya als Standard-Workstations. Falls Sie eine lmhosts-Datei an einer anderen als der vorgegebenen Stelle ablegen wollen, müssen Sie dies dem Prozess nmbd beim Start mitteilen. Dazu verwenden Sie die Option -H, gefolgt vom Namen Ihrer lmhosts-Datei:
# nmbd -H /etc/samba/lmhosts -D
Konfigurieren der Namensauflösung für die Samba-Suite Verschiedene Daemons und Dienstprogramme in der Samba-Suite müssen eine Namensauflösung durchführen. Sie können die Reihenfolge, in der die Programme die einzelnen Methoden zur Namensauflösung nacheinander durchprobieren, mit dem Parameter name resolve order festlegen: [global] name resolve order = wins lmhosts hosts bcast
Der zum Definieren des Parameters verwendete String erkennt bis zu vier Werte: lmhosts Verwendet die lokale lmhosts-Datei des Samba-Servers. hosts Verwendet die Unix-Standardmethoden zur Namensauflösung, d.h. je nach Konfiguration des lokalen Systems /etc/hosts, DNS, NIS oder eine Kombination aus diesen. wins Verwendet den WINS-Server. bcast Verwendet die Broadcast-Methode. Die Reihenfolge, in der diese Elemente angegeben werden, ist die Reihenfolge, in der die Namensauflösung versucht wird. Im Beispiel spricht Samba zuerst seinen WINSServer für die Namensauflösung an, gefolgt von der Datei lmhosts auf dem lokalen System. Als Nächstes weist der Wert hosts es an, die Unix-Methoden zur Namensauflösung einzusetzen. Das Wort hosts kann irreführend sein. Damit ist nicht nur die Datei /etc/hosts gemeint, sondern auch die Benutzung von DNS oder NIS (wie auf dem Unix-Host konfiguriert). Wenn diese drei nicht funktionieren, führt es schließlich eine Broadcast-Namensauflösung durch.
Samba als WINS-Server einrichten Sie können Samba als WINS-Server einrichten, indem Sie den Parameter wins support in der Konfigurationsdatei setzen: [global] wins support = yes
Ob Sie es glauben oder nicht, das ist alles! Die Option wins support macht aus Samba einen WINS-Server. Bei den meisten Installationen ist die Standardkonfiguration von Samba ausreichend.
Denken Sie daran, dass Samba mit Windows-WINS-Servern nicht kommunizieren kann. Wenn Sie Samba als Ihren WINS-Server einsetzen, müssen Sie sicherstellen, dass keine anderen WindowsSysteme oder Samba-Server in Ihrem Netzwerk als WINS-Server konfiguriert sind, da sich ansonsten ihre WINS-Datenbanken nicht synchronisieren lassen und die Namensauflösung inkonsistent wird. Einen DNS-Proxy konfigurieren Ein Samba-WINS-Server kann beim DNS-Server des Systems nachfragen, wenn ein angeforderter Host in seiner WINS-Datenbank nicht zu finden ist. Bei einem typischen Linux-System finden Sie die IP-Adresse des DNS-Servers beispielsweise, wenn Sie die Datei /etc/resolv.conf durchsuchen. Darin könnte ein Eintrag dieser Art stehen: nameserver 127.0.0.1 nameserver 172.16.1.192
Dies sagt Ihnen, dass das Linux-System einen DNS-Server benutzen soll, der unter der Adresse 172.16.1.192 zu finden ist. (127.0.0.1 ist die localhost-Adresse und kann niemals eine gültige DNS-Server-Adresse sein.) Nun ist es einfach, die Option dns proxy einzusetzen, um Samba anzuweisen, den DNS-Server zu benutzen: [global] dns proxy = yes
Dies erlaubt zwar Windows-Clients, voll qualifizierte InternetDomain-Namen über den Samba-WINS-Server aufzulösen, allerdings funktioniert dies nur für Domain-Namen, die sich an die 15-Zeichen-Beschränkung für NetBIOS-Namen halten. Aus diesem Grund empfehlen wir Ihnen, dns proxy nur als Ergänzung zu Ihrem WINS-Server einzusetzen und nicht als Ersatz für einen DNS-Server.
Samba für die Benutzung eines anderen WINS-Servers einrichten
Sie können Samba so konfigurieren, dass es einen WINS-Server irgendwo im Netzwerk benutzt. Dazu übergeben Sie ihm einfach die IP-Adresse des WINS-Servers. Sie erledigen das mit der globalen Konfigurationsoption wins server, wie hier zu sehen: [global] wins server = 172.16.1.1
Ist diese Option aktiviert, leitet Samba alle WINS-Anfragen an den Server unter der Adresse 172.16.1.1 weiter. Da die Anfrage an eine einzige Maschine gerichtet ist, müssen Sie sich keine Sorgen über Probleme machen, die dem Versand von BroadcastNachrichten innewohnen. Allerdings wird es nicht unbedingt so sein, dass Samba den WINS-Server vor anderen Formen der Namensauflösung verwendet. Die Reihenfolge, in der Samba verschiedene Techniken zur Namensauflösung durchprobiert, wird mit der bereits vorgestellten Konfigurationsoption name resolve order vorgegeben. Die Parameter wins support und wins server schließen sich gegenseitig aus; Sie können nicht Samba als WINS-Server anbieten und gleichzeitig ein anderes System für diesen Zweck verwenden! Üblicherweise wird ein Samba-Server mittels wins support als WINS-Server eingerichtet, und alle anderen Samba-Server werden mit dem Parameter wins server so konfiguriert, dass sie auf den Samba-WINS-Server verweisen. Einen WINS-Proxy konfigurieren Wenn Sie einen Samba-Server in einem Subnetz haben, das keinen WINS-Server besitzt, und der Samba-Server wurde mit einem WINS-Server in einem anderen Subnetz konfiguriert, können Sie den Samba-Server anweisen, alle Anforderungen zur Namensauflösung weiterzuleiten. Dazu dient die Option wins proxy: [global] wins server = 172.16.200.12 wins proxy = yes
Benutzen Sie diese Option nur, wenn sich der WINS-Server in einem anderen Subnetz befindet. Ansonsten wird die Broadcast-Nachricht den WINS-Server ungeachtet der Proxy-Einstellung erreichen.
Optionen zur Konfiguration der Namensauflösung Die Samba-Optionen zur Namensauflösung sind Tabelle 7-1 zu entnehmen.
Tabelle 7-1 Optionen zur Namensauflösung Option
Parameter
Funktion
Vorgabewert
Geltungsbereich
wins support
Boolescher Wert
Auf yes gesetzt, darf Samba als WINSServer arbeiten.
no
global
wins server
String (IPAdresse oder DNSName)
Identifiziert einen WINS-Server, den Samba für die Namensregistrierung und -auflösung verwendet.
keiner
global
Boolescher Wert
Erlaubt es Samba, als Proxy für einen WINS-Server in einem anderen Subnetz zu arbeiten.
no
global
String
Befehl, der ausgeführt wird, wenn sich die WINSDatenbank ändert.
keiner
global
dns proxy
Boolescher Wert
Auf yes gesetzt, wird einem Samba-WINSServer erlaubt, auf das DNS zurückzugreifen, wenn er einen Namen im WINS nicht finden kann.
no
global
name resolve order
String
Die Reihenfolge der Methoden zum Auflösen von NetBIOS-Namen.
lmhosts hosts wins bcast
global
max ttl
numerischer Wert
Maximale TTL in Sekunden für einen angeforderten NetBIOS-Namen.
259200 ( 3 Tage)
global
numerischer Wert
Maximale TTL in Sekunden für NetBIOS-Namen, die Samba als WINSServer ausgegeben hat.
518400 (6 Tage)
global
numerischer Wert
Minimale TTL in Sekunden für NetBIOS-Namen, die Samba als WINSServer ausgegeben hat.
21600 (6 Stunden)
global
wins proxy
wins hook
max wins ttl
min wins ttl
wins support Samba stellt allen Maschinen im Netzwerk den WINS-Namensdienst zur Verfügung,
wenn Sie im Abschnitt [global] der Datei smb.conf Folgendes einstellen: [global] wins support = yes
Der Vorgabewert ist no. Dieser Vorgabewert wird üblicherweise verwendet, um einem Windows NT/2000-Server oder einem anderen Samba-Server zu erlauben, der WINSServer zu sein. Wenn Sie diese Option aktivieren, denken Sie daran, dass ein SambaWINS-Server zur gleichen Zeit keine Daten mit anderen WINS-Servern austauschen kann. Sie dürfen also keine anderen WINS-Server im Netzwerk zulassen. Auf yes gesetzt, schließen sich diese Option und der Parameter wins server gegenseitig aus. wins server Samba verwendet einen existierenden WINS-Server im Netzwerk, wenn Sie die globale Option wins server in Ihrer Konfigurationsdatei aktivieren. Der Wert dieser Option ist entweder die IP-Adresse oder der DNS-Name (nicht der NetBIOS-Name) des WINSServers, zum Beispiel: [global] wins server = 172.16.220.110
oder: [global] wins server = wins.metran.cx
Damit diese Option funktioniert, muss die Option wins support auf no (das ist der Vorgabewert) gesetzt werden. Ansonsten gibt Samba einen Fehler aus. Sie können mit dieser Option nur einen WINS-Server festlegen. wins proxy Diese Option erlaubt es Samba, als Proxy für einen anderen WINS-Server zu agieren und auf diese Weise die Anfragen zur Namensregistrierung und -auflösung von sich selbst an den echten WINS-Server weiterzuleiten, der sich häufig außerhalb des aktuellen Subnetzes befindet. Der WINS-Server kann durch die Option wins server gekennzeichnet werden. Der Proxy liefert dann die WINS-Antwort zurück an den Client. Sie aktivieren diese Option über folgenden Eintrag im Abschnitt [global]: [global] wins proxy = yes
wins hook Diese Option ermöglicht es Ihnen, ein Skript oder ein anderes Programm auszuführen,
wenn die WINS-Datenbank geändert wurde. Eine Anwendungsmöglichkeit könnte die Einrichtung eines weiteren Samba-Servers sein, der als Sicherung für einen anderen Samba-WINS-Server dient. Dies erreicht man, indem man mit dem wins hookSkriptaufruf rsync die WINS-Datenbanken (/usr/local/samba/var/locks/wins.dat) auf den beiden Systemen synchronisiert, wenn ein Eintrag hinzugefügt oder entfernt wird. Das Skript würde auf folgende Weise in der Samba-Konfigurationsdatei angegeben werden: [global] wins hook = /usr/local/bin/sync_wins
dns proxy Wenn Sie wollen, dass auf das DNS zurückgegriffen wird, wenn ein NetBIOS-Name im WINS nicht zu finden ist, können Sie die folgende Option setzen: [global] dns proxy = yes
Dies erlaubt es dem nmbd, das Standard-DNS des Servers abzufragen. Möglicherweise wollen Sie diese Option deaktivieren, falls keine permanente Verbindung zu Ihrem DNS-Server besteht. Diese Option darf nicht an Stelle eines DNS-Servers in Ihrem Netzwerk verwendet werden. Sie ist dazu gedacht, NetBIOS-Namen aufzulösen und keine vollqualifizierten Internet-Domain-Namen. name resolve order Die globale Option name resolve order gibt die Reihenfolge der Dienste an, die Samba zur Durchführung der Namensauflösung verwendet. Die vorgegebene Reihenfolge sieht so aus: zuerst die lmhosts-Datei, gefolgt von den Unix-Standardmethoden zur Namensauflösung (eine Kombination aus /etc/hosts, DNS und NIS), anschließend wird ein WINS-Server abgefragt, und schließlich werden Broadcast-Nachrichten verschickt, um die Adresse eines NetBIOS-Namens zu ermitteln. Sie können diese Option außer Kraft setzen, indem Sie beispielsweise Folgendes angeben: [global] name resolve order = lmhosts wins hosts bcast
Dies sorgt dafür, dass bei der Auflösung zuerst die lmhosts-Datei verwendet wird, gefolgt von der Abfrage eines WINS-Servers und dann der /etc/hosts-Datei. Zum Schluss werden Broadcast-Nachrichten versendet. Sie müssen nicht alle vier Optionen verwenden. Diese Option wird im Abschnitt »Samba als WINS-Server einrichten« weiter oben in diesem Kapitel näher erläutert. max ttl Diese Option wird eingesetzt, wenn Samba nicht als WINS-Server arbeitet, sondern ein anderes System im Netzwerk als seinen WINS-Server verwendet. Sie setzt die maximale T T L für NetBIOS-Namen, die vom Samba-Server am WINS-Server
registriert sind. Es sollte nicht notwendig sein, diesen Wert zu ändern. max wins ttl Diese Option wird verwendet, wenn Samba den WINS-Namensdienst zur Verfügung stellt. Sie setzt die maximale T T L für NetBIOS-Namen, die bei Samba registriert sind. Es sollte nicht notwendig sein, diesen Wert zu ändern. min wins ttl Diese Option wird verwendet, wenn Samba den WINS-Namensdienst zur Verfügung stellt. Sie setzt die minimale T T L für NetBIOS-Namen, die bei Samba registriert sind. Es sollte nicht notwendig sein, diesen Wert zu ändern.
Das Durchsuchen Das Durchsuchen ist von Microsoft entwickelt worden, um den Benutzern beim Auffinden von freigegebenen Ressourcen im Netzwerk zu helfen. In einer Umgebung mit vernetzten Computern, in der Benutzer jederzeit Freigaben hinzufügen oder entfernen können, ist es wichtig, eine automatisierte Methode zu haben, mit der die freigegebenen Ressourcen überwacht werden können und die es Benutzern erlaubt, sie zu »durchsuchen«, um die gewünschten Freigaben zu finden. Bevor das Durchsuchen in SMB-Netzwerken eingeführt wurde, musste jeder, der eine neue Ressource freigab, diejenigen, für die er sie freigeben wollte, darüber informieren. Die UNC der Freigabe wurde auf relativ primitive Weise weitergegeben, entweder persönlich oder telefonisch oder auch per E-Mail. In großen Organisationen war das natürlich sehr unbequem. Um die Dinge noch etwas komplizierter zu machen, mussten die Benutzer an den Client-Computern die UNC der Freigabe eintippen, um eine Verbindung dazu herzustellen. Die einzige Möglichkeit, das andauernde Eintippen der UNC zu umgehen, bestand darin, ein Netzlaufwerk mit der Freigabe zu verbinden. Bei sehr vielen Freigaben im Netzwerk konnte dies leicht aus dem Ruder laufen.
Ein Windows-Netzwerk durchsuchen Wir fangen erst mal einfach an und beschreiben zunächst das Durchsuchen eines Netzwerks, das nur Windows-Systeme enthält. Anschließend zeigen wir Ihnen, wie Sie einen Samba-Server hinzufügen. Im Prinzip funktioniert das Durchsuchen so, dass ein Computer im Netzwerk die Rolle des Hauptsuchdiensts übernimmt (auch als lokaler Hauptsuchdienst, Browse-Master oder Browse-Server bezeichnet) und eine Liste aller Computer im lokalen Subnetz führt, die als SMB-Server agieren. Die Liste der Computer wird Suchliste genannt und enthält alle Samba-Server, Windows NT/2000/XP-Systeme sowie alle Windows 95/98/ Me-Systeme, bei denen die Netzwerkkomponente »Datei- und Druckerfreigabe für Microsoft-Netzwerke« installiert ist. Die Suchliste enthält außerdem die Namen aller Arbeitsgruppen und Domänen. Auf dieser Stufe ist das Durchsuchen auf das lokale Subnetz beschränkt, da das Suchprotokoll von Broadcast-Paketen abhängt, die von den Routern üblicherweise nicht in andere Subnetze weitergeleitet werden. Ein Benutzer eines beliebigen Windows-Systems kann sich die Suchliste anschauen, indem er die Netzwerkumgebung öffnet, wie wir in Kapitel 1 gezeigt haben. Es ist aber auch möglich, den Befehl net view in einer Windows-Eingabeaufforderung einzusetzen:
C:\>net view Server Name
Remark
------------------------------------------------------------------------------\\MAYA
Windows 98
\\MIXTEC
Samba 2.2.5
\\OLMEC
Windows XP Pro on Pentium/ASUS
\\TOLTEC
Samba 2.2.5
\\YAQUI
Windows 95 on mixtec/VMware
\\ZAPOTEC The command completed successfully.
Anschließend kann net view ein Computername als Argument übergeben werden, um einen Server direkt anzusprechen und die Ressourcen auszugeben, die dieser freigibt: C:\>net view \\maya Shared resources at \\maya
Windows 98
Share name
Type
Used as
Comment
------------------------------------------------------------------------------D
Disk
E
Disk
HP
Print
The command completed successfully.
Am Durchsuchen sind nicht nur der Hauptsuchdienst und seine Clients beteiligt. Es gibt außerdem Sicherungssuchdienste, die Kopien der Suchliste verwalten und auf ClientAnfragen danach antworten. Sicherungssuchdienste sind daher in der Lage, nahtlos die Rolle des Hauptsuchdiensts zu übernehmen, falls dieser ausfällt. Normalerweise liefert der Hauptsuchdienst die Suchliste nicht direkt an die Clients. Stattdessen besteht seine Aufgabe hauptsächlich darin, die Suchliste auf dem neuesten Stand zu halten und
regelmäßig die Sicherungssuchdienste zu aktualisieren. Die Clients sollen ihre Kopien der Suchliste von den Sicherungssuchdiensten erhalten. Sie wählen zufällig einen Sicherungssuchdienst aus und helfen somit, die Last gleichmäßig auf sie zu verteilen. Idealerweise beschränkt sich die Interaktion zwischen einem Client und dem Hauptsuchdienst darauf, dass der Client ankündigt, wenn er dem Netzwerk beitritt oder es verlässt (falls es sich um einen Server handelt), und dass er eine Liste der Sicherungssuchdienste anfordert. Es kann mehr als einen Sicherungssuchdienst geben. Eine Arbeitsgruppe besitzt einen Sicherungssuchdienst, falls zwei oder mehr Computer im Subnetz Windows 95/98/Me oder Windows NT Workstation (oder eine andere Nicht-Server-Version von Windows NT/2000/XP) ausführen. Für jeweils 32 weitere Computer wird ein neuer Sicherungssuchdienst hinzugefügt. In einer Windows NT-Domäne ist der primäre Domänen-Controller immer der lokale Hauptsuchdienst. Fällt dieser aus, übernimmt ein anderer Windows NT/2000-Server (so es einen gibt) die Rolle des lokalen Hauptsuchdiensts. Andere Versionen von Windows können als Sicherungssuchdienste fungieren, werden allerdings niemals zum Hauptsuchdienst, wenn ein Windows NT/2000-Server zur Verfügung steht. Zusätzlich zur Funktion als lokaler Hauptsuchdienst kann der primäre DomänenController auch als Domänen-Hauptsuchdienst auftreten, der Subnetze verbindet und die gemeinsame Nutzung von Suchlisten zwischen Haupt- und Sicherungssuchdiensten in getrennten Subnetzen erlaubt. Folgendermaßen wird das Durchsuchen so erweitert, dass es über das lokale Subnetz hinaus funktioniert. Jedes Subnetz funktioniert als separate Sucheinheit. Der Domänen-Hauptsuchdienst synchronisiert die Hauptsuchdienste der einzelnen Subnetze. In einem reinen Windows-Netzwerk funktioniert die Suche über Subnetzgrenzen hinaus nicht, es sei denn, es gibt einen Windows NT/2000-PDC in dem Netzwerk. Samba kann als Domänen-Hauptsuchdienst agieren und diese Aufgabe sogar in einem Arbeitsgruppen-Netzwerk ausführen. Das bedeutet, dass der Windows-PDC für diese Aufgabe nicht erforderlich ist. (Es ist auch möglich, mit dem Parameter remote browse sync einen Samba-Server so zu konfigurieren, dass er seine Suchliste mit einem Samba-Server in einem anderen Subnetz synchronisiert. In diesem Fall muss jeder der beiden Server in seinem Subnetz der lokale Hauptsuchdienst sein.) Solange ein Computer im Subnetz nicht gerade so konfiguriert ist, dass er nie als Suchdienst arbeitet, wird er als potenzieller Suchdienst betrachtet und kann vom Hauptsuchdienst zum Sicherungssuchdienst gemacht werden oder kann sich selbst als Sicherungssuchdienst bezeichnen und die Rolle annehmen.
Suchdienstwahlen Wenn im Subnetz kein Hauptsuchdienst läuft, wählen potenzielle Suchdienste unter sich einen neuen Hauptsuchdienst. Dieser Vorgang wird als Wahl bezeichnet. Eine Wahl wird von einem Computer im Subnetz gestartet, wenn dieser feststellt, dass gerade kein Hauptsuchdienst läuft. Wurde ein Hauptsuchdienst ordnungsgemäß heruntergefahren, sendet er eine Broadcast-Nachricht mit einem Datagramm, das eine Wahl anfordert. Dadurch wird durch die verbleibenden Computer eine Suchdienstwahl initiiert. Stürzt der Hauptsuchdienst ab, kann die Wahl von einem Client-Computer gestartet werden, der eine Liste mit Sicherungssuchdiensten vom Hauptsuchdienst anfordert, oder von einem Sicherungssuchdienst, der seine Suchliste vom Hauptsuchdienst aktualisieren lassen will. In jedem Fall erhält das System keine Antwort vom Hauptsuchdienst und löst dadurch eine Suchdienstwahl aus. Suchdienstwahlen werden in mehreren Runden des Selbstausschlusses entschieden. In
jeder Runde schicken potenzielle Suchdienste per Broadcast Datagramme zur Wahlanforderung, um andere potenzielle Suchdienste davon in Kenntnis zu setzen, dass eine Suchdienstwahl stattfindet. Besitzt der Empfänger eine höhere Qualifikation, sollte er ebenfalls eine Bewerbung schicken. Wenn ein potenzieller Suchdienst ein Wahlanforderungsdatagramm von einem höher qualifizierten Gegenspieler empfängt, schließt er sich selbst von der Wahl zum Hauptsuchdienst aus. Ansonsten antwortet er mit seinem eigenen Wahlanforderungsdatagramm. Nach einigen Runden ist nur noch ein potenzieller Suchdienst an der Wahl beteiligt. Nach vier weiteren Runden, in denen ein Wahlanforderungsdatagramm ausgesendet und keine Antwort empfangen wurde, wird er zum Hauptsuchdienst und verschickt ein Broadcast-Datagramm, in dem er sich selbst als lokaler Hauptsuchdienst für dieses Subnetz bekannt macht. Anschließend weist er bei Bedarf den Nächstplatzierten in der Suchdienstwahl Aufgaben als Sicherungssuchdienste zu. Zu den Qualifikationen eines potenziellen Suchdiensts gehört unter anderem Folgendes: ● ● ● ● ●
ob er kürzlich eine Suchdienstwahl verloren hat die Version des Wahlprotokolls, das er ausführt seine Auswahlkriterien die Zeitspanne, die das System läuft der NetBIOS-Name des Computers
Hat der potenzielle Suchdienst erst kürzlich eine Wahl verloren, disqualifiziert er sich auf der Stelle selbst. Die Version des ausgeführten Wahlprotokolls wird zwar geprüft, allerdings verwenden bisher alle Windows-Systeme (und Samba) das gleiche Wahlprotokoll. Diese Prüfung ist also nicht sehr sinnvoll. Durch die Auswahlkriterien wird festgestellt, welcher Computer zum lokalen Hauptsuchdienst wird. Die Auswahlkriterien bestehen aus zwei Teilen, wie in den Tabellen 7-2 und 7-3 gezeigt wird.
Tabelle 7-2 Betriebssystemwerte in einer Wahl Betriebssystem
Wert
Windows NT/2000-Server, als PDC betrieben
32
Windows NT/2000/XP, nicht als PDC betrieben 16 Windows 95/98/Me
1
Windows for Workgroups
1
Tabelle 7-3 Werte für die Rolle des Computers bei einer Wahl Rolle
Wert
Domänen-Hauptsuchdienst
128
WINS-Client
32
Bevorzugter Hauptsuchdienst
8
Laufender Hauptsuchdienst
4
Aktueller Sicherungssuchdienst 2 Sicherungssuchdienst
1
Zuerst wird der Betriebssystemtyp verglichen. Das System mit dem höchsten Wert gewinnt. Die Werte wurden gewählt, um den primären Domänen-Controller - falls es einen gibt - zu veranlassen, zum lokalen Hauptsuchdienst zu werden. Ansonsten sticht ein Windows NT/2000/XP-System ein Windows for Workgroups- oder Windows 95/98/ Me-System aus. Ergibt der Vergleich der Betriebssystemtypen einen Gleichstand, wird die Rolle des Computers verglichen. Ein Computer kann mehr als einen der Werte aus Tabelle 7-3 besitzen. In diesem Fall werden die Werte addiert. Ein Domänen-Hauptsuchdienst hat einen Rollenwert von 128, um die Wahl so stark zu seinen Gunsten zu beeinflussen, dass er in seinem eigenen Subnetz zum lokalen Hauptsuchdienst wird. Zwar würde der primäre Domänen-Controller (der immer der Domänen-Hauptsuchdienst ist) die Suchdienstwahl bereits auf der Grundlage seines Betriebssystemtyps gewinnen, allerdings gibt es manchmal keinen primären DomänenController im Netzwerk, und der Domänen-Hauptsuchdienst könnte ansonsten nicht von den anderen potenziellen Suchdiensten unterschieden werden. Systeme, die einen WINS-Server für die Namensauflösung verwenden, werden mit einem Rollenwert von 32 viel stärker gewichtet als andere, die die BroadcastNamensauflösung nutzen. Ein bevorzugter Hauptsuchdienst ist ein Computer, der manuell von einem Systemadministrator ausgewählt und konfiguriert wurde. Wenn ein bevorzugter Hauptsuchdienst startet, erzwingt er eine Suchdienstwahl, selbst wenn ein existierender Hauptsuchdienst noch aktiv ist. Ein bevorzugter Hauptsuchdienst besitzt einen Rollenwert von 8, während der existierende Hauptsuchdienst den Rollenwert 4 hat. Ein Sicherungssuchdienst, der kürzlich Hauptsuchdienst war und immer noch eine aktuelle Suchliste besitzt, erhält den Rollenwert 2. Ein potenzieller Suchdienst, der als Sicherungssuchdienst betrieben wurde, bekommt den Wert 1. Ergeben die Vergleiche des Betriebssystemtyps und der Rolle einen Gleichstand, gewinnt der Computer, der am längsten läuft. Im unwahrscheinlichen Fall, dass zwei Computer genau gleich lang laufen, gewinnt der Computer, dessen NetBIOS-Name bei der alphabetischen Sortierung weiter vorn steht. Sie können feststellen, ob eine Maschine ein lokaler Hauptsuchdienst ist, indem Sie den Windows-Befehl nbtstat benutzen. Setzen Sie den NetBIOS-Namen der Maschine, die Sie prüfen wollen, hinter die Option -a: C:\>nbtstat -a toltec
Local Area Connection: Node IpAddress: [172.16.1.4] Scope Id: []
NetBIOS Remote Machine Name Table
Name
Type
Status
--------------------------------------------TOLTEC
<00>
UNIQUE
Registered
TOLTEC
<03>
UNIQUE
Registered
TOLTEC
<20>
UNIQUE
Registered
.._
_MSBROWSE_ _.<01>
GROUP
Registered
METRAN
<00>
GROUP
Registered
METRAN
<1B>
UNIQUE
Registered
METRAN
<1C>
GROUP
Registered
METRAN
<1D>
UNIQUE
Registered
METRAN
<1E>
GROUP
Registered
MAC Address = 00-00-00-00-00-00
Der Ressourceneintrag, nach dem Sie suchen, lautet .._ _MSBROWSE_ _.<01>. Dieser gibt an, dass der Server momentan als lokaler Hauptsuchdienst für das aktuelle Subnetz arbeitet. Ist die Maschine ein Samba-Server, können Sie in der SambaProtokolldatei des nmbd nach einem solchen Eintrag suchen: nmbd/nmbd_become_lmb.c:become_local_master_stage2(406) ***** Samba name server TOLTEC is now a local master browser for workgroup METRAN on subnet 172.16.1.0
Oder Sie verwenden auf einem beliebigen Samba-Server den Befehl nmblookup mit der Option -M und dem Arbeitsgruppen- oder Domänen-Namen, um die IP-Adresse des lokalen Hauptsuchdiensts zu ermitteln: $ nmblookup -M metran querying metran on 172.16.1.255 172.16.1.1 metran<1d>
Server-Ankündigungen Wenn die Wahl des Hauptsuchdiensts entschieden ist, machen die Server im Netzwerk sich selbst dem Netzwerk bekannt, damit der Hauptsuchdienst und die Sicherungssuchdienste ihre Suchlisten aufbauen können. Zuerst finden die ServerAnkündigungen einmal pro Minute statt, der Abstand wird dann schrittweise auf 12 Minuten erhöht. Wenn ein Server ordnungsgemäß heruntergefahren wird, sendet er die Mitteilung, dass er offline geht, um es dem Hauptsuchdienst und den Sicherungssuchdiensten zu erlauben, ihn von der Suchliste zu entfernen. Geht ein Server jedoch offline, weil er abstürzt oder ein anderer Fehler auftritt, bemerkt der Hauptsuchdienst sein Verschwinden nur, weil er keine Server-Ankündigungen mehr empfängt. Der Hauptsuchdienst wartet drei Ankündigungsperioden des Servers ab, bevor er entscheidet, dass dieser Server offline ist. Das heißt, dieser Vorgang kann bis zu 36 Minuten dauern. Da die Sicherungssuchdienste ihre Suchlisten beim Hauptsuchdienst nur einmal in 15 Minuten aktualisieren, kann es bis zu 51 Minuten dauern, bis die Clients über einen ausgefallenen Server informiert worden sind. Ausführlichere Informationen über die Suchprotokolle von Microsoft finden Sie in den Microsoft-Dokumenten Browsing and Windows 95 Networking und CIFS/E Browser Protocol. Sie finden diese Dokumente, indem Sie nach den Titeln auf der MicrosoftWebsite unter http://www.microsoft.com suchen. Nähere Informationen über die Konfiguration von Samba für das Durchsuchen finden Sie in den Dateien BROWSING.txt und BROWSING-Config.txt im Verzeichnis docs/ textdocs der Samba-Distribution.
Samba für das Durchsuchen konfigurieren Samba bietet volle Unterstützung für das Durchsuchen und kann als Hauptsuchdienst, als Sicherungssuchdienst, als Domänen-Hauptsuchdienst, als potenzieller Suchdienst oder als einfacher Server, der nicht an Suchdienstwahlen teilnimmt, auftreten. Falls Sie sicherstellen wollen, dass Ihr Samba-Server niemals zum Haupt- oder Sicherungssuchdienst wird, setzen Sie einfach Folgendes: [global] local master = no
Normalerweise werden Sie wollen, dass Samba als lokaler Hauptsuchdienst oder wenigstens als Sicherungssuchdienst zur Verfügung steht. Im einfachsten Fall müssen Sie überhaupt nichts tun, da Samba per Voreinstellung an Suchdienstwahlen teilnimmt. Sein Betriebssystemwert von 20 schlägt dabei jedes Windows-System, das nicht wenigstens ein primärer Domänen-Controller mit Windows NT/2000 ist (siehe Tabelle 7-2). Der Betriebssystemwert, den Samba selbst bei Suchdienstwahlen bekannt gibt, kann mit dem Parameter os level eingestellt werden: [global] os level = 33
Der eben gezeigte Wert erlaubt es Samba, sogar einen primären Domänen-Controller
mit Windows 2000 Advanced Server auszustechen. Wie wir jedoch im nächsten Abschnitt zeigen, empfiehlt es sich nicht, Samba auf diese Weise zum Sieg zu zwingen. Falls Sie ein Windows XP Professional-System zum Hauptsuchdienst machen wollen, müssten Sie den Samba-Wert verringern: [global] os level = 8
Der Maximalwert für os level ist 255, da dies als vorzeichenloser 8-Bit-Integer-Wert behandelt wird. Angenommen, Sie wollten absolut sichergehen, dass Ihr SambaServer für immer zum lokalen Hauptsuchdienst wird, müssten Sie Folgendes einstellen: [global] local master = yes os level = 255 preferred master = yes
Der zusätzliche Parameter preferred master veranlasst Samba, sofort nach dem Start eine Suchdienstwahl zu beginnen. Der Wert des Parameters os level von 255 erlaubt es Samba, jedes andere System im Netzwerk zu schlagen. Dies schließt andere SambaServer ein, vorausgesetzt, diese sind richtig konfiguriert! Verwendet ein anderer Server eine ähnliche Konfigurationsdatei (mit os level = 255 und preferred master = yes), kämpfen diese beiden um die Rolle des Hauptsuchdiensts. Der Gewinn der Wahl hängt in diesem Fall von so einfachen Kriterien wie der Laufzeit oder der aktuellen Rolle des Systems ab. Um dies zu verhindern, sollten andere Samba-Server einen niedrigeren os level-Wert haben und nicht dazu konfiguriert werden, der bevorzugte Hauptsuchdienst zu sein.
Samba als Domänen-Hauptsuchdienst Wir erwähnten bereits, dass ein System die Rolle des Domänen-Hauptsuchdiensts übernehmen muss, damit eine Windows-Arbeitsgruppe oder -Domäne sich über mehrere Subnetze erstrecken kann. Der Domänen-Hauptsuchdienst macht die Suchlisten in allen Subnetzen der Arbeitsgruppe bekannt. Das funktioniert, weil alle lokalen Hauptsuchdienste ihre Suchlisten regelmäßig mit dem DomänenHauptsuchdienst synchronisieren. Während dieser Synchronisierung übergibt der lokale Hauptsuchdienst die Namen aller Server, die der Domänen-Hauptsuchdienst nicht in seiner Suchliste hat und umgekehrt. Schließlich besitzt jeder lokale Hauptsuchdienst die Suchliste für die gesamte Domäne. Es gibt keine Wahl zur Festlegung, welche Maschine die Rolle des DomänenHauptsuchdiensts übernimmt. Stattdessen muss der Administrator dies von Hand einstellen. Auf Grund des Microsoft-Designs jedoch registrieren sich der DomänenHauptsuchdienst und der PDC mit dem Ressourcentyp <1B>, die Rollen - und die Maschinen - sind also untrennbar. Wenn Sie in dem Netzwerk einen Windows NT-Server als PDC einsetzen, empfehlen
wir Ihnen, darauf zu verzichten, Samba zum Domänen-Hauptsuchdienst zu machen. Das Gleiche gilt umgekehrt: Wenn Samba die Pflichten eines PDC übernimmt, sollten Sie es auch zum Domänen-Hauptsuchdienst machen. Es ist zwar möglich, die Rollen bei Samba aufzuteilen, allerdings ist das keine gute Idee. Wenn Sie zwei unterschiedliche Maschinen für die Aufgaben des PDC und des DomänenHauptsuchdiensts einsetzen, können in einer Windows-Arbeitsgruppe willkürlich Fehler auftreten. Mit den folgenden Optionen kann Samba die Rolle des Domänen-Hauptsuchdiensts für alle Subnetze in der Arbeitsgruppe übernehmen: [global] domain master = yes preferred master = yes local master = yes os level = 255
Die letzten drei Parameter stellen sicher, dass der Server auch der lokale Hauptsuchdienst ist. Das ist wichtig, damit er richtig als Domänen-Hauptsuchdienst fungieren kann. Sie können überprüfen, ob eine Samba-Maschine tatsächlich der Domänen-Hauptsuchdienst ist, indem Sie in der Protokolldatei des nmbd nachsehen: nmbd/nmbd_become_dmb.c:become_domain_master_stage2(118) ***** Samba name server TOLTEC is now a domain master browser for workgroup METRAN on subnet 172.16.1.0
Oder Sie verwenden den Befehl nmblookup, der in der Samba-Distribution enthalten ist, um einen eindeutigen Ressourcentyp <1B> in der Arbeitsgruppe abzufragen: # nmblookup METRAN#1B Sending queries to 172.16.1.255 172.16.1.1 METRAN<1b>
Mehrere Subnetze Sie müssen drei Regeln beherzigen, wenn Sie eine Arbeitsgruppe/Domäne schaffen, die mehr als ein Subnetz umfasst: ●
●
●
Sie brauchen entweder einen Windows NT/2000- oder einen Samba-Server als lokalen Hauptsuchdienst in den einzelnen Subnetzen der Arbeitsgruppe/Domäne. Sie brauchen einen Server mit Windows NT/2000-Server oder mit Samba als Domänen-Hauptsuchdienst irgendwo in der Arbeitsgruppe/Domäne. Im Netzwerk sollte es einen WINS-Server geben; alle Systeme im Netzwerk
müssen so konfiguriert sein, dass sie den WINS-Server für die Namensauflösung einsetzen. Samba besitzt einige zusätzliche Funktionen, die Sie einsetzen können, falls Sie keinen Domänen-Hauptsuchdienst in Ihrem Netzwerk haben oder wünschen und trotzdem über Subnetzgrenzen hinaus suchen wollen. Betrachten Sie die Subnetze in Abbildung 7-1. Abbildung 7-1 Mehrere Subnetze mit Samba-Servern
Erstens, ein Samba-Server, der lokaler Hauptsuchdienst ist, kann die Konfigurationsoption remote announce verwenden, um sicherzustellen, dass den Computern in den verschiedenen Subnetzen Broadcast-Ankündigungen über den Server geschickt werden. Dies hat zur Folge, dass der Samba-Server in den Suchlisten der fremden Subnetze auftaucht. Um das zu erreichen, müssen die gerichteten Broadcast-Nachrichten jedoch den lokalen Hauptsuchdienst im anderen Subnetz erreichen. Bedenken Sie, dass viele Router standardmäßig keine Weiterleitung von gerichteten Broadcasts erlauben; Sie müssten diese Einstellung des Routers ändern, damit die gerichteten Broadcasts durch den Router in das andere Subnetz gelangen. Mit der Option remote announce listen Sie die Subnetze und die Arbeitsgruppe auf, die die Broadcast-Nachricht empfangen sollen. Um beispielsweise sicherzustellen, dass den Maschinen in den Subnetzen 172.16.2 und 172.16.3 sowie in der Arbeitsgruppe METRAN Broadcast-Informationen von Ihrem Samba-Server geschickt werden, könnten Sie Folgendes festlegen: [global] remote announce = 172.16.2.255/METRAN \ 172.16.3.255/METRAN
Anstatt eine Broadcast-Adresse des entfernten Subnetzes anzugeben, dürfen Sie die genaue Adresse festlegen, an die Broadcasts geschickt werden sollen, falls der lokale Hauptsuchdienst des entfernten Subnetzes garantiert immer die gleiche IP-Adresse besitzt. Ein lokaler Samba-Hauptsuchdienst kann seine Suchliste direkt mit einem oder mehreren Samba-Servern synchronisieren, die jeweils als lokale Hauptsuchdienste in anderen Subnetzen agieren. Dies ist eine andere Möglichkeit, das Suchen über Subnetzgrenzen hinweg zu implementieren. Nehmen Sie zum Beispiel an, dass Samba als lokaler Hauptsuchdienst konfiguriert ist und lokale Samba-Hauptsuchdienste unter 172.16.2.130 und 172.16.3.120 existieren. Sie können die Option remote browse sync einsetzen, um direkt mit den Samba-Servern zu synchronisieren: [global] remote browse sync = 172.16.2.130 172.16.3.120
Damit dies funktioniert, müssen auch die anderen Samba-Maschinen lokale Hauptsuchdienste sein. Sie können mit dieser Option ebenfalls gerichtete Broadcasts einsetzen, falls Sie die speziellen IP-Adressen der lokalen Hauptsuchdienste nicht kennen.
Eine Freigabe unsichtbar machen Mit der Option browsable können Sie festlegen, ob eine Freigabe in der Suchliste auftaucht. Diese Boolesche Option verhindert, dass eine Freigabe in der Netzwerkumgebung zu sehen ist. Um beispielsweise dafür zu sorgen, dass die Freigabe [data] unsichtbar ist, könnten Sie Folgendes schreiben: [data] path = /export/samba/userdata browsable = no
Mit einer normalen Verzeichnisfreigabe werden Sie zwar vermutlich nicht so umgehen wollen, die Option browsable ist jedoch in solchen Fällen ganz nützlich, in denen Sie eine Freigabe erzeugen, deren Inhalt andere nicht sehen sollen, wie etwa bei der Freigabe [netlogon] zum Ablegen von Anmeldeskripten für die WindowsDomänensteuerung (siehe Kapitel 4 für weitere Informationen über Anmeldeskripten). Ein anderes Beispiel ist die Freigabe [homes]. Diese Freigabe wird häufig als nicht durchsuchbar gekennzeichnet, so dass eine Freigabe mit dem Namen [homes] nicht auftaucht, wenn die Ressourcen ihrer Maschine durchsucht werden. Meldet sich jedoch der Benutzer alice an und betrachtet die Freigaben der Maschine, erscheint dort eine Freigabe mit der Bezeichnung [alice]. Was jedoch, wenn wir sicherstellen wollen, dass die Freigabe von alice für alle zu sehen ist, bevor sie sich anmeldet? Dies erreichen Sie mit der globalen Option auto services. Diese Option lädt Freigaben in die Suchliste, um sicherzustellen, dass sie immer sichtbar sind:
[global] auto services = alice
Suchoptionen Tabelle 7-4 zeigt Optionen, die definieren, wie Samba Suchaufgaben erledigt.
Tabelle 7-4 Optionen zur Konfiguration des Durchsuchens Option
Parameter
Funktion
Vorgabewert Geltungsbereich
announce as
String
Betriebssystem, als das Samba sich bekannt macht.
N T Server
global
announce version
numerischer Wert
Version des Betriebssystems, als das Samba sich bekannt macht.
4.5
global
Erlaubt, dass die Freigabe in der Liste der Maschinenressourcen angezeigt wird.
yes
Freigabe
browse list
Boolescher Wert
Wenn yes, wird Samba erlaubt, eine Suchliste auf diesem Server bereitzustellen.
yes
global
auto services (preload)
String (Freigabeliste)
Liste der Freigaben, die immer in der Suchliste auftauchen.
keiner
global
default service (default)
Name einer Freigabe (Dienst), die angegeben wird, String wenn der Client eine (Freigabename) Freigabe anfordert, die nicht in smb.conf aufgeführt ist.
keiner
global
local master
Boolescher Wert
Wenn yes, wird Samba erlaubt, an Suchdienstwahlen teilzunehmen.
yes
global
lm announce
yes, no oder auto
Aktiviert oder deaktiviert LAN Manager-artige HostAnkündigungen.
auto
global
browsable Boolescher (browseable) Wert
numerischer Wert
Häufigkeit in Sekunden, mit der LAN ManagerAnkündigungen durchgeführt werden, falls diese aktiviert worden sind.
60
global
Boolescher Wert
Wenn yes, darf Samba das BevorzugterHauptsuchdienst-Bit verwenden, um zu versuchen, zum lokalen Hauptsuchdienst zu werden.
no
global
domain master
Boolescher Wert
Wenn yes, darf Samba zum DomänenHauptsuchdienst für die Arbeitsgruppe oder Domäne werden.
no
global
os level
numerischer Wert
Betriebssystemwert von Samba bei einer Wahl zum lokalen Hauptsuchdienst.
0
global
remote browse sync
String (Liste von IPAdressen)
Samba-Server, mit denen Suchlisten synchronisiert werden.
keiner
global
String (IPAdresse/ ArbeitsgruppePaare)
Subnetze und Arbeitsgruppen, an die gerichtete Broadcast-Pakete geschickt werden, damit Samba in deren Suchlisten auftauchen kann.
keiner
global
lm interval
preferred master (prefered master)
remote announce
announce as Diese globale Konfigurationsoption gibt den Typ des Betriebssystems an, den Samba anderen Maschinen im Netzwerk bekannt macht. Der Vorgabewert für diese Option lautet N T Server, wodurch Samba sich als das Betriebssystem Windows NT Server ausgeben kann. Andere mögliche Werte sind NT, NT Workstation, Win95 und W f W für Windows for Workgroups. Sie können den Vorgabewert folgendermaßen außer Kraft setzen: [global] announce as = Win95
Wir empfehlen Ihnen, den Vorgabewert dieser Konfigurationsoption nicht zu ändern. announce version Diese globale Option wird häufig zusammen mit der Konfigurationsoption announce as verwendet. Sie gibt die Version des Betriebssystems an, das Samba den anderen Maschinen im Netzwerk bekannt macht. Der Vorgabewert dieser Option lautet 4.5, wodurch Samba über Windows NT Version 4.0, aber unter Windows 2000 landet. Sie können mit einem solchen globalen Eintrag einen neuen Wert festlegen: [global] announce version = 4.3
Wir empfehlen Ihnen, den Vorgabewert dieser Konfigurationsoption nicht zu ändern. browsable Die Option browsable (auch browseable geschrieben) zeigt an, ob die angegebene Freigabe in der Liste der verfügbaren Ressourcen des Systems, auf dem sie sich befindet, auftauchen soll. Diese Option ist standardmäßig immer auf yes gesetzt. Falls Sie verhindern wollen, dass die Freigabe im Suchfenster eines Clients zu sehen ist, können Sie diese Option auf no setzen. Beachten Sie, dass dies nicht den Zugriff auf die Freigabe mit anderen Methoden verhindert, etwa durch die Angabe einer UNC (z.B. \\server\buchhaltung) im Windows-Explorer. Die Freigabe wird lediglich beim Durchsuchen der Ressourcen des Systems nicht mit aufgeführt. browse list Es sollte eigentlich niemals notwendig sein, den Vorgabewert yes dieses Parameters zu ändern. Arbeitet Ihr Samba-Server als lokaler Hauptsuchdienst (d.h., hat er die Suchdienstwahl gewonnen), können Sie Samba mit Hilfe der globalen Option browse list anweisen, seine Suchlisten allen Clients zur Verfügung zu stellen oder sie zurückzuhalten. Standardmäßig liefert Samba immer eine Suchliste. Sie können diese Informationen zurückhalten, indem Sie Folgendes festlegen: [global] browse list = no
Wenn Sie die Suchliste deaktivieren, können Clients die Namen anderer Maschinen, deren Dienste und andere Domänen, die gerade im Netzwerk verfügbar sind, nicht suchen. Beachten Sie, dass dies nicht den Zugriff auf einen bestimmten Rechner verhindert; wenn jemand einen gültigen Maschinennamen oder eine gültige Adresse sowie eine Freigabe auf dieser Maschine kennt, kann er sich immer noch dort anmelden, indem er den Windows-Befehl net use verwendet oder im Windows-Explorer einen Laufwerkbuchstaben damit verbindet. Es werden lediglich den Clients, die eine Suchliste anfordern, Informationen vorenthalten.
auto services Die globale Option auto services, auch als preload bezeichnet, stellt sicher, dass die angegebenen Freigaben immer in der Suchliste zu sehen sind. Ein gebräuchlicher Anwendungsfall für diese Option ist die Bekanntgabe bestimmter Benutzer oder Drucker, die durch die Freigaben [homes] oder [printers] erzeugt wurden, anders aber nicht suchbar gemacht werden können. Diese Option funktioniert am besten mit Plattenfreigaben. Wenn Sie jeden Ihrer Systemdrucker (d.h. diejenigen Drucker, die in der printcap-Datei aufgeführt sind) zwingen wollen, in der Suchliste aufzutauchen, empfehlen wir Ihnen, stattdessen die Option load printers zu verwenden. Freigaben, die mit der Option auto services aufgeführt werden, werden nicht angezeigt, wenn die Option browse list auf no gesetzt ist. default service Die globale Option default service (manchmal auch als default bezeichnet) benennt eine Freigabe, die quasi als Ersatz verwendet wird. Der Wert wird auf einen existierenden Freigabenamen ohne die einschließenden eckigen Klammern gesetzt. Fordert ein Client eine nicht-existierende Platten- oder Druckerfreigabe an, versucht Samba, den Benutzer stattdessen mit der durch diese Option bezeichneten Freigabe zu verbinden. Die Option wird folgendermaßen festgelegt: [global] default service = helpshare
Wenn Samba den angeforderten, nicht-existierenden Dienst an den durch default service festgelegten Dienst weiterleitet, übernimmt die Option %S den Wert des angeforderten Diensts, wobei alle Unterstriche ( _ ) im angeforderten Dienst durch Schrägstriche (/) ersetzt werden. local master Diese globale Option gibt an, ob Samba beim Start versucht, lokaler Hauptsuchdienst des Subnetzes zu werden. Ist die Option auf yes gesetzt, nimmt Samba an den Wahlen teil. Das Setzen dieser Option ist jedoch noch keine Garantie für den Sieg. (Andere Parameter, wie preferred master und os level, helfen Samba, die Suchdienstwahlen zu gewinnen.) Ist diese Option auf no gesetzt, verliert Samba alle Suchdienstwahlen, unabhängig davon, welche Werte durch die anderen Konfigurationsoptionen vorgegeben wurden. Der Standardwert ist yes. lm announce Die globale Option lm announce teilt Sambas nmbd mit, ob im Namen des Servers LAN Manager-Host-Ankündigungen verschickt werden sollen. Diese Host-Ankündigungen werden von älteren Clients erwartet, wie etwa dem IBM-Betriebssystem OS/2. Die Ankündigung erlaubt das Aufnehmen des Servers in die Suchlisten des Clients. Ist die Option aktiviert, macht Samba sich selbst wiederholt in dem durch die Option lm interval angegebenen Intervall bekannt.
Sie können die Option folgendermaßen angeben: [global] lm announce = yes
Diese Konfigurationsoption erwartet die normalen Booleschen Werte yes und no, die die LAN Manager-Ankündigungen entsprechend aktivieren bzw. deaktivieren. Darüber hinaus veranlasst eine dritte Option namens auto den nmbd, passiv auf LAN ManagerAnkündigungen zu warten, selbst zunächst aber keine zu verschicken. Werden für eine andere Maschine im Netzwerk LAN Manager-Ankündigungen entdeckt, beginnt nmbd damit, seine eigenen LAN Manager-Ankündigungen zu verschicken, um sicherzugehen, dass er sichtbar ist. Der Vorgabewert ist auto. Vermutlich müssen Sie diesen Wert gar nicht ändern. lm interval Diese Option, die zusammen mit lm announce verwendet wird, gibt in Sekunden an, wie lange nmbd wartet, bevor er wiederholt LAN Manager-artige Ankündigungen als Broadcast zu verschicken. Damit diese Option funktioniert, müssen LAN ManagerAnkündigungen aktiviert sein. Der Vorgabewert sind 60 Sekunden. Setzen Sie diesen Wert auf 0, sendet Samba unabhängig vom Wert der Option lm announce keine LAN Manager-Host-Ankündigungen. Folgendermaßen können Sie den Wert dieser Option zurücksetzen: [global] lm interval = 90
preferred master Die Option preferred master veranlasst, dass Samba das BevorzugterHauptsuchdienst-Bit setzt, wenn es an einer Wahl teilnimmt. Dadurch erhält der Server einen höheren Status in der Arbeitsgruppe als andere Maschinen mit dem gleichen Betriebssystemwert. Konfigurieren Sie Ihre Samba-Maschine so, dass sie lokaler Hauptsuchdienst wird, sollten Sie den folgenden Wert einstellen: [global] preferred master = yes
Anderenfalls lassen Sie den Vorgabewert no stehen. Ist Samba so konfiguriert, dass es ein bevorzugter Hauptsuchdienst ist, erzwingt es nach dem Start sofort eine Wahl. domain master Wenn Samba der primäre Domänen-Controller Ihrer Arbeitsgruppe oder NT-Domäne ist, sollte es auch zum Domänen-Hauptsuchdienst gemacht werden. Beim DomänenHauptsuchdienst handelt es sich um eine besondere Maschine, die den NetBIOSRessourcentyp <1B> trägt und dazu verwendet wird, die Suchlisten zwischen den einzelnen lokalen Hauptsuchdiensten in den einzelnen Subnetzen innerhalb der
Domäne bekannt zu machen. Damit Samba zum Domänen-Hauptsuchdienst wird, geben Sie Folgendes im Abschnitt [global] der Datei smb.conf an: [global] domain master = yes
Haben Sie in Ihrem Netzwerk einen Windows NT-Server als primären DomänenController (PDC), empfehlen wir Ihnen, Samba nicht zum Domänen-Hauptsuchdienst zu machen. Das gilt auch umgekehrt: Wenn Samba die Aufgaben eines PDC übernimmt, sollten Sie es auch zum Domänen-Hauptsuchdienst machen. Das Aufteilen der Aufgaben des PDC und des Domänen-Hauptsuchdiensts auf zwei verschiedene Rechner kann unvorhersehbare Fehler im Netzwerk zur Folge haben. os level Die globale Option os level definiert den Betriebssystemwert, den Samba während einer Suchdienstwahl verwendet. Wenn Sie wollen, dass Samba eine Wahl gewinnt und zum Hauptsuchdienst wird, setzen Sie die Option os level höher als die anderen Systeme im Subnetz. Die Werte sind in Tabelle 7-2 zu sehen. Der Vorgabewert ist 20, was bedeutet, dass Samba alle Windows-Versionen aussticht, mit Ausnahme von Windows NT/2000, falls dies als PDC arbeitet. Wenn Samba alle Wahlen gewinnen soll, können Sie seinen Betriebssystemwert folgendermaßen einstellen: [global] os level = 255
remote browse sync Die globale Option remote browse sync gibt an, dass Samba seine Suchlisten mit den lokalen Hauptsuchdiensten in anderen Subnetzen synchronisieren soll. Die Synchronisierung kann jedoch nur mit anderen Samba-Servern erfolgen und nicht mit Windows-Computern. Wenn Ihr Samba-Server zum Beispiel im Subnetz 172.16.235 ein Hauptsuchdienst wäre und in anderen Subnetzen unter 172.16.234.92 und 172.16.236.2 lokale Samba-Hauptsuchdienste existieren würden, müssten Sie Folgendes festlegen: [global] remote browse sync = 172.16.234.92 172.16.236.2
Der Samba-Server würde direkt die anderen Maschinen auf der Adressliste kontaktieren und die Suchlisten synchronisieren. Sie können auch sagen: [global] remote browse sync = 172.16.234.255 172.16.236.255
Dies zwingt Samba, Anfragen per Broadcast zu verschicken, um die IP-Adressen der lokalen Hauptsuchdienste in den einzelnen Subnetzen zu ermitteln, mit denen es dann
wiederum die Suchlisten synchronisieren würde. Das funktioniert allerdings nur, wenn Ihr Router gerichtete Broadcast-Anfragen, die auf 255 enden, nicht blockiert. remote announce Samba-Server sind in der Lage, mit der Option remote announce fremden Subnetzen Suchlisten zur Verfügung zu stellen. Diese werden üblicherweise an den lokalen Hauptsuchdienst des fraglichen fremden Subnetzes geschickt. Falls Sie jedoch die Adresse des lokalen Hauptsuchdiensts nicht kennen, können Sie folgendermaßen vorgehen: [global] remote announce = 172.16.234.255/ACCOUNTING \ 172.16.236.255/ACCOUNTING
Damit sendet Samba Broadcast-Nachrichten mit Host-Ankündigungen an alle Maschinen in den Subnetzen 172.16.234 und 172.16.236, die hoffentlich den lokalen Hauptsuchdienst des Subnetzes erreichen. Sie können auch die genauen IP-Adressen angeben, falls diese bekannt sind. Das funktioniert aber nur, wenn diese Systeme garantiert die Rolle des Hauptsuchdiensts in ihren Subnetzen innehaben. Durch Anhängen eines Arbeitsgruppen- oder Domänennamens an die IP-Adresse gibt Samba bekannt, dass es in dieser Arbeitsgruppe oder Domäne liegt. Fehlt diese Angabe, wird die Arbeitsgruppe verwendet, die durch den Parameter workgroup festgelegt wurde. 1Wie
wir in Kapitel 1 erläutert haben, kann ein System sich unter mehr als einem NetBIOS-Namen registrieren. Wir verwenden hier den Singular nur deshalb, damit unsere Erklärungen nicht zu verwirrend werden.
Kapitel 8 Erweiterte Verzeichnisfreigaben Dieses Kapitel setzt unsere Besprechung der Konfiguration von Samba aus Kapitel 6 fort. Wir werden einige komplexere Fragen bezüglich der Integration der Dateisysteme von Unix und Windows klären. Dies schließt verborgene Dateien, Unix-Links, Dateiberechtigungen, die Namensverkürzung, Groß- und Kleinschreibung von Dateinamen, Dateisperren, Oplocks (engl. Opportunistic Locking), Verbindungsskripten, die Unterstützung von Microsoft-Dfs-(Distributed filesystem-)Freigaben und die Verwendung von NIS-Home-Verzeichnissen ein.
Unterschiede zwischen Dateisystemen Eines der größten Probleme für Samba sind die Unterschiede zwischen Unix- und Microsoft-Dateisystemen. Dazu gehört die Behandlung von symbolischen Links, versteckten Dateien und Dateinamen, die einen Punkt enthalten. Darüber hinaus können die Dateiberechtigungen einige Kopfschmerzen bereiten, wenn Sie sie nicht korrekt berücksichtigen.
Versteckte und unsichtbare Dateien Manchmal müssen Sie dafür sorgen, dass ein Benutzer eine Datei weder sehen noch überhaupt auf sie zugreifen kann. Ein anderes Mal wollen Sie die Benutzer nicht vom Zugriff auf eine Datei abhalten - Sie wollen sie nur verstecken, wenn die Benutzer den Inhalt des Verzeichnisses betrachten. Windows-Systeme kennen ein Versteckt-Attribut, während bei Unix versteckte Dateien traditionell mit einem Punkt (.) als erstem Zeichen des Dateinamens gekennzeichnet sind. Dadurch bleiben Benutzern Konfigurationsdateien oder Dateien mit Vorgabewerten verborgen, wenn sie einen gewöhnlichen ls-Befehl eingeben. Wollen Sie einem Benutzer jedoch den Zugriff auf Dateien verweigern, müssen Sie mit Berechtigungen für Dateien und Verzeichnisse arbeiten. Die erste Option, die wir nennen wollen, ist die Boolesche Option hide dot files. Wenn ihr Wert yes ist, werden Dateien, deren Namen mit einem Punkt (.) beginnen, von Samba als versteckt gekennzeichnet. Hat der Benutzer beschlossen, beim Durchsuchen auch die verborgenen Dateien anzeigen zu lassen (z.B. über den Menüeintrag Ordneroptionen im Menü Ansicht von Windows 98), kann er die Dateien sehen, ihre Symbole erscheinen allerdings ausgegraut. Wenn der Client so konfiguriert ist, dass er keine verborgenen Dateien anzeigt, erscheinen die Dateien überhaupt nicht. Anstatt einfach die Dateien auszublenden, die mit einem Punkt beginnen, können Sie auch für Samba ein String-Muster zum Ausblenden festlegen. Dazu verwenden Sie die Option hide files. Nehmen wir zum Beispiel an, Sie haben Folgendes in der Beispielfreigabe [data] festgelegt: [data] hide files = /*.java/*README*/
Jeder Eintrag für diese Option muss mit einem Schrägstrich ( / ) beginnen, enden oder von einem anderen Eintrag getrennt sein. Diese Vereinbarung lässt auch Leerzeichen in Dateinamen zu. Die Schrägstriche haben nichts mit Unix-Verzeichnissen zu tun; stattdessen dienen sie als Trennzeichen für die hide files-Werte. Wollen Sie ganz und gar verhindern, dass Benutzer Dateien sehen können, verwenden Sie die Option veto files. Diese Option, die die gleiche Syntax hat wie die Option hide files, gibt eine Liste mit Dateien an, die nie vom Benutzer gesehen werden dürfen. Lassen Sie uns zum Beispiel die Freigabe [data] folgendermaßen ändern: [data] veto files = /*.java/*README*/
Die Syntax dieser Option ist identisch mit der der Konfigurationsoption hide files: Jeder Eintrag muss mit einem Schrägstrich (/) beginnen, enden oder von einem anderen Eintrag getrennt sein, auch wenn nur ein Muster aufgeführt ist. Wenn Sie so vorgehen, verschwinden Dateien, auf die das Muster zutrifft - wie etwa hello.java oder README.txt -, einfach aus dem Verzeichnis, und der Benutzer kann über SMB nicht auf sie zugreifen. Wir müssen uns noch mit einer weiteren Frage befassen. Was passiert, wenn der Benutzer versucht, ein Verzeichnis zu löschen, das unsichtbare Dateien enthält? An dieser Stelle kommt die Option delete veto files ins Spiel. Ist diese Boolesche Option auf yes gesetzt, darf der Benutzer sowohl die normalen als auch die unsichtbaren Dateien in dem Verzeichnis löschen. Auch das Verzeichnis selbst wird entfernt. Ist die Option auf no gesetzt, kann der Benutzer die unsichtbaren Dateien nicht löschen, und auch das Verzeichnis bleibt folglich bestehen. Aus Sicht des Benutzers scheint das Verzeichnis leer zu sein, lässt sich aber nicht löschen. Die Anweisung dont descend gibt eine Liste mit Verzeichnissen an, deren Inhalt Samba nicht anzeigen soll. Beachten Sie, dass wir vom Inhalt sprechen, nicht vom Verzeichnis selbst. Benutzer können in ein Verzeichnis wechseln, das so gekennzeichnet ist, es ist ihnen allerdings verboten, den Verzeichnisbaum weiter hinabzusteigen - sie sehen immer einen leeren Ordner. Lassen Sie uns zum Beispiel diese Option mit einer einfacheren Form der Freigabe nutzen, die wir weiter vorn in diesem Kapitel definiert haben: [data] dont descend = config defaults
Darüber hinaus wollen wir annehmen, dass das Verzeichnis /home/samba/data folgenden Inhalt hat: drwxr-xr-x
6 tom
users
1024 Jun 13 09:24 .
drwxr-xr-x
8 root
root
1024 Jun 10 17:53 ..
-rw-r--r--
2 tom
users
1024 Jun
drwxr-xr-x
3 tom
users
1024 Jun 13 09:28 config
drwxr-xr-x
3 tom
users
1024 Jun 13 09:28 defaults
9 11:43 README
drwxr-xr-x
3 tom
users
1024 Jun 13 09:28 market
Wenn der Benutzer sich mit der Freigabe verbindet, sieht er die Verzeichnisse in der Freigabe. Der Inhalt der Verzeichnisse /config und /defaults wäre für ihn jedoch nicht zu sehen, auch wenn es in diesen Verzeichnissen Ordner oder Dateien gäbe. Außerdem dürfen die Benutzer keine Daten in den Ordner schreiben (was verhindert, dass sie eine Datei oder einen Ordner mit dem Namen eines bereits vorhandenen, wenn auch unsichtbaren Objekts anlegen). Unternimmt ein Benutzer einen entsprechenden Versuch, erhält er die Meldung »Zugriff verweigert«. Die Option dont descend dient administrativen Zwecken und nicht der Sicherheit und bildet daher keinen Ersatz für gut gewählte Dateiberechtigungen.
Links Wenn ein Client versucht, auf einer Samba-Server-Freigabe einen symbolischen Link zu öffnen, versucht Samba, dem Link zu folgen, um die eigentliche Datei zu finden und den Client diese öffnen zu lassen, so als würde der Benutzer an einer Unix-Maschine sitzen. Wollen Sie dies nicht zulassen, stellen Sie die Option follow symlinks so ein: [data] follow symlinks = no
Sie können diese Einstellung testen, indem Sie einen symbolischen Link einrichten und versuchen, auf ihn zuzugreifen. Legen Sie unter der Benutzerkennung, die Sie zur Anmeldung an Samba verwenden, auf dem Unix-Server ein Verzeichnis an. Geben Sie folgende Befehle ein: $ echo "Dies ist ein Test" >hello.txt $ ln -s hello.txt hello-link.txt
Sie erhalten die Textdatei hello.txt und einen symbolischen Link mit dem Namen hellolink.txt auf diese Datei. Wenn Sie auf eines von beiden doppelklicken, bekommen Sie normalerweise eine Datei, die den Text »Dies ist ein Test« enthält. Wenn die Option follow symlinks jedoch auf no gesetzt ist, erhalten Sie nur eine Fehlermeldung, nachdem Sie doppelt auf hello-link.txt geklickt haben. Die Option wide links verhindert, wenn sie auf no gesetzt ist, dass der Client-Benutzer symbolischen Links folgt, die auf Ziele außerhalb des freigegebenen Verzeichnisbaums verweisen. Lassen Sie uns beispielsweise annehmen, dass wir die Freigabe [data] folgendermaßen verändert haben: [data] follow symlinks = yes wide links = no
Solange die Option follow symlinks deaktiviert ist, lehnt Samba es ab, symbolischen
Links außerhalb des aktuellen Freigabebaums zu folgen. Wenn wir eine Datei außerhalb der Freigabe anlegen (zum Beispiel im Home-Verzeichnis eines Benutzers) und dann auf die folgende Weise einen Link darauf in der Freigabe erzeugen: ln -s ~tom/datafile ./datafile
kann der Client die Datei in Toms Home-Verzeichnis nicht öffnen.
Dateisystem-Optionen Tabelle 8-1 zeigt eine Zusammenfassung der zuvor besprochenen Optionen. Für die meisten empfehlen wir die Vorgabewerte. Ausnahmen bilden die in den folgenden Beschreibungen aufgeführten Werte.
Tabelle 8-1 Optionen zur Konfiguration des Dateisystems Option
dont descend
follow symlinks
getwd cache
wide links
hide dot files
Parameter
Funktion
Vorgabewert Geltungsbereich
String (Liste mit Verzeichnissen)
Legt eine Liste mit Verzeichnissen fest, deren Inhalt Samba vor den Clients verbergen soll.
keiner
Freigabe
Boolescher Wert
Auf no gesetzt, werden symbolische Links nicht verfolgt.
yes
Freigabe
Boolescher Wert
Auf yes gesetzt, wird ein Zwischenspeicher für getwd( )Aufrufe verwendet.
yes
global
Boolescher Wert
Auf yes gesetzt, werden symbolische Links außerhalb der Freigabe verfolgt.
yes
Freigabe
Boolescher Wert
Auf yes gesetzt, werden verborgene UnixDateien wie verborgene Windows-Dateien behandelt.
yes
Freigabe
hide files
String (Liste mit Dateien)
Liste mit Dateimustern, die als verborgene Dateien behandelt werden sollen.
keiner
Freigabe
veto files
String (Liste mit Dateien)
Liste mit Dateien, die unsichtbar sein sollen.
keiner
Freigabe
Boolescher Wert
Auf yes gesetzt, werden Dateien gelöscht, auf die veto files zutrifft, wenn das Verzeichnis gelöscht wird, in dem sie sich befinden.
no
Freigabe
delete veto files
dont descend Die Option dont descend kann verwendet werden, um verschiedene Verzeichnisse festzulegen, die für den Client leer erscheinen sollen. Beachten Sie, dass das Verzeichnis selbst angezeigt wird. Samba zeigt jedoch dem Client-Benutzer den Inhalt des Verzeichnisses nicht an. Diese Option ist nicht als Sicherheitsmechanismus geeignet; sie dient einfach nur dazu, Benutzer davon abzuhalten, in Verzeichnissen herumzusuchen, die sensible Daten enthalten. Beachten Sie dazu auch das Beispiel weiter oben in diesem Abschnitt. follow symlinks Diese Option steuert, ob Samba einem symbolischen Link im Unix-Dateisystem folgt oder ob der Benutzer eine Fehlermeldung erhalten soll. Ist die Option auf yes gesetzt, wird das Ziel des Links als Datei interpretiert. Bei no wird beim Zugriff auf einen symbolischen Link ein Fehler ausgegeben. getwd cache Diese globale Option gibt an, ob Samba einen lokalen Zwischenspeicher für den UnixSystemaufruf getwd( ) ( get current working directory; aktuelles Arbeitsverzeichnis beziehen) verwenden soll. Sie können den Vorgabewert yes folgendermaßen überschreiben: [global] getwd cache = no
Wenn Sie diese Option auf no setzen, dauert es deutlich länger, das Arbeitsverzeichnis zu ermitteln, vor allem, wenn Sie die Option wide links auf no gesetzt haben. Normalerweise sollte es nicht erforderlich sein, diese Option zu verändern. wide links
Hiermit geben Sie an, ob der Benutzer symbolischen Links folgen kann, deren Ziel außerhalb des freigegebenen Verzeichnisbaums liegt. Dazu gehören Dateien und Verzeichnisse am anderen Ende der Links, solange die Berechtigungen dafür vorliegen. Der Vorgabewert für diese Option ist yes. Beachten Sie, dass diese Option keine Wirkung hat, wenn der Wert der Option follow symlinks auf no steht. Wenn Sie hier den Wert no angeben, arbeitet smbd deutlich langsamer, weil er jeden Link prüfen muss, den er entdeckt. hide dot files Die Option hide dot files versteckt alle Dateien auf dem Server, die mit einem Punkt (.) beginnen, um die entsprechende Funktion verschiedener Shell-Befehle nachzubilden, die es auf Unix-Systemen gibt. Wie bei hide files ist das DOS-Attribut »versteckt« (hidden) bei Dateien aktiviert, die mit einem Punkt beginnen. Das garantiert jedoch nicht, dass ein Client die Dateien nicht sieht. Der Vorgabewert für diese Option ist yes. hide files Die Option hide files liefert Samba ein oder mehrere Verzeichnis- oder Dateinamenmuster. Jede Datei, die diesem Muster entspricht, wird aus Sicht des Clients als verborgene Datei behandelt. Beachten Sie, dass diese Option lediglich das entsprechende DOS-Attribut setzt. Clients können versteckte Dateien durchaus anzeigen, wenn ihr Benutzer dies möchte. Jeder Eintrag in der Liste muss mit einem Schrägstrich (/) beginnen, enden oder von anderen Einträgen getrennt sein. Dadurch können die einzelnen Muster Leerzeichen enthalten. Sternchen gelten als Platzhalter für null oder mehr Zeichen, Fragezeichen als Platzhalter für genau ein Zeichen. Hier ein Beispiel: hide files = /.jav*/README.???/
veto files Die Konfigurationsoption veto files hat eine stärkere Einschränkung zur Folge als die Optionen hide files und hide dot files. Samba würde es nicht einmal zugeben, dass diese Dateien existieren. Man kann unsichtbare Dateien vom Client aus weder anzeigen noch öffnen. Aber auch diese Option schafft keine optimale Sicherheit. Sie hat lediglich den Zweck, PCs davon abzuhalten, besondere Dateien zu löschen, wie zum Beispiel jene, die den Resource Fork von Mac-Dateien auf Unix-Dateisystemen darstellen. Wenn sowohl Mac-Computer als auch Windows-Systeme auf dieselben Dateien zugreifen, kann diese Option verhindern, dass nicht ausreichend informierte Benutzer mit entsprechenden Berechtigungen Dateien löschen, die Mac-Benutzer benötigen. Die Syntax dieser Option ist identisch mit der der Konfigurationsoption hide files: Jeder Eintrag muss mit einem Schrägstrich ( / ) beginnen, enden oder von anderen Einträgen getrennt sein, selbst wenn es nur ein Muster gibt. Sternchen gelten als Platzhalter für null oder mehr Zeichen, Fragezeichen als Platzhalter für genau ein Zeichen. Hier ein Beispiel: veto files = /*config/*default?/
Diese Option dient vor allem administrativen Zwecken und kann gute
Dateiberechtigungen nicht ersetzen. delete veto files Diese Option weist Samba an, unsichtbare Dateien zu löschen, wenn ein Benutzer versucht, das Verzeichnis zu entfernen, in dem sie sich befinden. Vorgabewert ist no. Wenn also ein Benutzer versucht, ein Verzeichnis zu löschen, das eine unsichtbare Datei enthält, wird die Datei (und das Verzeichnis) nicht gelöscht. Stattdessen bleibt das Verzeichnis vorhanden und erscheint aus Sicht des Benutzers leer. Ist die Option auf yes gesetzt, werden das Verzeichnis und die unsichtbaren Dateien gelöscht.
Dateiberechtigungen und Attribute unter MS-DOS und Unix DOS war niemals als Mehrbenutzer-Netzwerkbetriebssystem gedacht, Unix dagegen war von Anfang an so konzipiert. Samba muss daher Unterschiede und Lücken zwischen den Dateisystemen dieser beiden Betriebssysteme nicht nur beachten, sondern in Konfliktfällen auch für Lösungen sorgen. Zu den größten Unterschieden zwischen DOS und Unix gehört die Behandlung von Dateiberechtigungen. Schauen wir uns zunächst an, wie Unix Berechtigungen zuweist. Alle Unix-Dateien besitzen Bits für die Lese-, Schreib- und Ausführungsberechtigung, und zwar jeweils getrennt für den Besitzer, die Gruppe und den Rest der Welt. Sie sehen die Berechtigungen ganz links, wenn Sie den Befehl ls -al in einem Unix-Verzeichnis eingeben. Hier ein Beispiel: -rwxr--r--
1 tom
users
2014 Apr 13 14:11 access.conf
Windows kennt für jede Datei die folgenden vier Bits: schreibgeschützt, System, versteckt und Archiv. Sie können sie sehen, indem Sie im Windows-Explorer mit der rechten Maustaste auf eine Datei klicken und aus dem Kontextmenü den Eintrag Eigenschaften auswählen. Daraufhin erscheint ein Dialogfenster, das dem in Abbildung 8-1 ähnelt.1 Abbildung 8-1 DOS- und Windows-Dateieigenschaften
Hier die Definition der einzelnen Bits: Schreibgeschützt Ein Benutzer kann den Inhalt der Datei lesen, ihn aber nicht verändern. System Die Datei wird vom Betriebssystem verwendet. Versteckt Die Datei ist als unsichtbar gekennzeichnet, so dass Benutzer sie normalerweise nicht sehen, es sei denn, das Betriebssystem erlaubt ausdrücklich das Anzeigen der Datei. Archiv Diese Datei wurde seit dem letzten DOS-Backup verändert. Beachten Sie, dass es kein Bit gibt, das ausführbare Dateien kennzeichnet. DOS- und Windows NT-Dateisysteme erkennen ausführbare Dateien an den Erweiterungen .exe, . com, .cmd oder .bat. Folglich gibt es keine Verwendung für die drei Bits für ausführbare Dateien unter Unix, die eine Datei auf einer Samba-Verzeichnisfreigabe besitzt. DOS-Dateien jedoch haben ihre eigenen Attribute, die beim Speichern in einer Unix-Umgebung beibehalten werden müssen: die Archiv-, System- und Versteckt-Bits. Samba kann diese Bits schützen, indem es die Bits wiederverwendet, die Ausführungsberechtigungen auf Unix-Dateien signalisieren - wenn es entsprechend konfiguriert ist. Diese Zuordnung hat aber eine unerwünschte Nebenwirkung: Wenn ein Windows-Benutzer eine Datei in einer SambaFreigabe speichert und Sie sich die Datei auf dem Unix-Computer mit ls -al ansehen, haben die Bits für die Ausführbarkeit nicht die Bedeutung, die Sie für gewöhnlich von ihnen erwarten. Drei Samba-Optionen entscheiden, ob die Bits zugeordnet werden: map archive, map system und map hidden. Diese Optionen ordnen die Attribute Archiv, System und Versteckt den Ausführbarkeits-Bits Eigentümer, Gruppe bzw. Rest der Welt zu. Legen Sie die Optionen für die Freigabe [data] folgendermaßen fest:
[data] map archive = yes map system = yes map hidden = yes
Versuchen Sie anschließend, eine Datei in der Freigabe unter Unix anzulegen - etwa hello.java - und die Dateiberechtigungen auf 755 zu ändern. Wenn Sie die genannten Samba-Optionen verwendet haben und die Dateieigenschaften unter Windows betrachten, sollten die drei Werte im Eigenschaften-Dialogfeld aktiviert sein. Was ist mit dem Attribut für schreibgeschützte Dateien? Standardmäßig setzt Samba dieses Bit, wenn dem Unix-Eigentümer der Datei keine Schreibberechtigung gewährt wurde. Sie können dieses Bit also setzen, wenn Sie die Berechtigungen der Datei auf 555 ändern. Der Standardwert der Option map archive ist yes, die anderen beiden Optionen dagegen haben den Standardwert no. Dies liegt daran, dass viele Programme nicht richtig arbeiten, wenn das Archiv-Bit für DOS- und Windows-Dateien nicht richtig gespeichert ist. Die Attribute System und Versteckt sind für den Betrieb eines Programms nicht entscheidend und werden dem Ermessen des Administrators überlassen. Abbildung 8-2 fasst die Unix-Berechtigungs-Bits zusammen und stellt dar, wie Samba diese Bits auf DOS-Attribute abbildet. Beachten Sie, dass die Lese-/Schreib-Bits für die Gruppe und für den Rest der Welt nicht direkt einem DOS-Attribut zugeordnet werden, sondern ihre ursprünglichen Unix-Definitionen auf dem Samba-Server behalten.
Erstellungsmasken Datei- und Verzeichnis-Erstellungsmasken ähneln den Umasks, mit denen Sie beim Arbeiten auf Unix-Systemen möglicherweise bereits zu tun hatten. Sie helfen beim Definieren der Berechtigungen, die einer Datei oder einem Verzeichnis zum Zeitpunkt seiner Erstellung zugewiesen werden. Sambas Masken funktionieren ein wenig anders. Bei Samba werden die Bits, die gesetzt werden können, in der Erstellungsmaske gesetzt, während bei Unix-Umasks die Bits nicht in der Umask gesetzt werden können. Vermutlich werden Sie die Samba-Methode intuitiver finden. Gelegentlich müssen Sie eine Unix-Umask in die äquivalente Samba-Maske konvertieren. Das ist einfach: die eine ist das bitweise Komplement der anderen. Beispielsweise hat ein oktaler UmaskWert von 0022 die gleichen Auswirkungen wie eine Samba-Maske von 0755. Abbildung 8-2 Wie Samba und Unix die Berechtigungen einer Datei sehen
Unix-Umasks werden auf Grundlage der Benutzer gesetzt, üblicherweise beim Ausführen der Startskripten der grafischen Oberfläche oder der Shell. Wenn Benutzer sich von einem Netzwerk-Client aus an einer Samba-Freigabe anmelden, werden diese Skripten nicht ausgeführt. Samba bietet also die Fähigkeit, die Erstellungsmasken für Dateien und Verzeichnisse einzustellen. Normalerweise wird dies auf Basis der Freigabe erledigt, obwohl Sie auch den Parameter include in der Samba-Konfigurationsdatei verwenden können (wie in Kapitel 6 erläutert), um Masken benutzerweise zuzuweisen und damit dem herkömmlichen Unix-Verhalten zu folgen. Um zu demonstrieren, wie die Erstellungsmasken von Samba funktionieren, nehmen Sie einmal an, es gibt einen Windows Me-Benutzer, der sich über Samba an seinem Unix-Home-Verzeichnis anmeldet. Samba wiederum ist mit create mask = 777 in der Freigabe [homes] konfiguriert. Mit diesem Wert beeinflusst create mask nicht die Bits, die auf neuen Dateien gesetzt werden. Wenn der Benutzer eine Datei mit Wordpad erzeugt, taucht diese im Unix-Dateisystem so auf: $ ls -l file.doc -rwxrw-rw-
1 jay
jay
0 Sep 21 11:02 file.doc
Wordpad hat die Datei mit Lese-/Schreibberechtigung erzeugt (d.h., das MS-DOSAttribut Schreibgeschützt wurde nicht gesetzt), Samba hat also die MS-DOS-Attribute den Unix-Lese-/Schreibrechten für Benutzer, Gruppe und Rest zugeordnet. Für den Eigentümer wurde das Ausführbarkeits-Bit gesetzt, weil der Parameter map archive standardmäßig auf yes gesetzt ist. Die anderen Ausführbarkeits-Bits sind nicht gesetzt worden, weil map system und map hidden standardmäßig no sind. Sie können dieses Verhalten an Ihre Bedürfnisse anpassen. Vermutlich wollen Sie map archive = no festlegen, um zu vermeiden, dass Windows-Dateien auf Unix-Systemen als ausführbare Dateien erscheinen, es sei denn, Sie machen Backups von MS-DOS- oder WindowsSystemen. Stellen Sie sich nun vor, Sie setzen create mask, um eine Wirkung zu erzielen, zum Beispiel: [homes] create mask = 664
Dies ist äquivalent zu einem Unix-Umask-Wert von 113. Erzeugt der Benutzer das Wordpad-Dokument so wie zuvor, sieht dieses so aus:
$ ls -l file.doc -rw-rw-r--
1 jay
jay
0 Sep 22 16:38 file.doc
Bei einem Vergleich mit dem vorherigen Beispiel sollten Sie feststellen, dass - wie erwartet - nicht nur die Schreibberechtigung für den Rest der Welt verschwunden ist, sondern dass es auch keine Ausführungsberechtigung mehr für den Eigentümer gibt. Dies ist geschehen, weil der Wert von create mask die Berechtigungen des Eigentümers mit einer 6 logisch UND-verknüpft hat, wodurch das Ausführbarkeits-Bit demaskiert wurde. Falls Sie daher map archive, map system oder map hidden aktivieren wollen, müssen Sie unbedingt darauf achten, dass Sie nicht das korrespondierende Ausführbarkeits-Bis mit Ihrem create mask demaskieren. Die Option directory mask funktioniert ähnlich. Sie maskiert die Berechtigungen für neu erschaffene Verzeichnisse. Das folgende Beispiel sorgt dafür, dass die Berechtigungen eines neu erzeugten Verzeichnisses höchstens bei 755 liegen: [data] directory mask = 755
Sie können auch verschiedene Bits mit den Optionen force create mode und force directory mode erzwingen. Diese Optionen führen eine logische ODER-Verknüpfung mit den Datei- und Verzeichniserstellungsmasken durch. Dadurch wird sichergestellt, dass die angegebenen Bits immer gesetzt sind. Üblicherweise würden Sie diese Optionen global setzen, um sicherzustellen, dass Lese-/Schreibrechte für neue Dateien oder Verzeichnisse in den einzelnen Freigaben für Gruppen und den Rest der Welt richtig gesetzt sind. Falls Sie die Unix-Benutzer- und Gruppen-Attribute einer Datei, die auf der WindowsSeite erzeugt wurde, explizit setzen wollen, können Sie ähnlich vorgehen und die Optionen force user und force group verwenden; beispielsweise: [data] create mask = 744 directory mask = 755 force user = joe force group = accounting
Diese Optionen weisen jedem Client, der sich an der Freigabe anmeldet, den gleichen Unix-Benutzernamen und die gleiche Unix-Gruppe zu. Dies geschieht jedoch, nachdem der Client sich authentifiziert hat; es wird kein freier Zugriff auf die Freigabe erlaubt. Diese Optionen werden häufig verwendet, damit neue Dateien und Verzeichnisse einem bestimmten Benutzer und einer bestimmten Gruppe zugeordnet werden. Verwenden Sie diese Optionen nach persönlichem Gusto. Schließlich fehlt DOS eine Unix-Funktion: DOS kann schreibgeschützte Dateien nicht löschen, auch wenn die Schreibberechtigung für das Verzeichnis besteht, in dem sich
die Datei befindet. Wenn ein Verzeichnis unter Unix schreibbar ist, können Sie auch schreibgeschützte Dateien löschen. Demnach kann man Dateien in jedem beliebigen Verzeichnis löschen, und zwar unabhängig davon, wer sie erstellt hat. DOS-Dateisysteme sind nicht für die Verwendung durch mehrere Benutzer gedacht, und so haben ihre Entwickler das Schreibschutz-Bit als Sicherung gegen versehentliches Ändern oder Löschen vorgesehen anstatt als Schutz vor einem anderen Benutzer auf einer Einbenutzermaschine. Die Entwickler von DOS haben daher das Löschen schreibgeschützter Dateien verboten. Windows zeigt selbst heutzutage noch das gleiche Verhalten. Normalerweise ist das harmlos. Windows-Programme versuchen nicht, schreibgeschützte Dateien zu löschen, weil sie wissen, dass das keine gute Idee ist. Allerdings laufen verschiedene Source-Code-Control-Programme - die es zuerst für Unix gab - unter Windows und erfordern die Fähigkeit, schreibgeschützte Dateien löschen zu können. Samba unterstützt dieses Verhalten mit der Option delete readonly. Um diese Funktion zu aktivieren, setzen Sie die Option auf yes: [data] delete readonly = yes
Optionen für Datei- und Verzeichnisberechtigungen Die Optionen für Datei- und Verzeichnisberechtigungen sind in Tabelle 8-2 zusammengefasst; alle Optionen werden anschließend im Detail beschrieben.
Tabelle 8-2 Optionen für Datei- und Verzeichnisberechtigungen Option create mask (create mode)
directory mask (directory mode)
Parameter
Funktion
Vorgabewert Geltungsbereich
numerischer Wert
Maximal mögliche Berechtigungen für Dateien, die von Samba erstellt wurden.
0744
Freigabe
numerischer Wert
Maximal mögliche Berechtigungen für Verzeichnisse, die von Samba erstellt wurden.
0755
Freigabe
Erzwingt die angegebenen Berechtigungen (bitweise ODERverknüpft) für Dateien, die über Samba erstellt wurden.
0000
Freigabe
force numerischer create mode Wert
force directory mode
numerischer Wert
Erzwingt die angegebenen Berechtigungen (bitweise ODERverknüpft) für Verzeichnisse, die über Samba erstellt wurden.
force group (group)
String (Gruppenname)
Effektive Gruppe für einen Benutzer, der auf diese Freigabe zugreift.
keiner
Freigabe
force user
Effektiver Benutzername String für einen (Benutzername) Benutzer, der auf diese Freigabe zugreift.
keiner
Freigabe
Boolescher Wert
Erlaubt einem Benutzer, eine schreibgeschützte Datei aus einem schreibbaren Verzeichnis zu löschen.
no
Freigabe
Boolescher Wert
Speichert das DOS-ArchivAttribut im AusführbarkeitsBit des Benutzers (0100).
yes
Freigabe
Boolescher Wert
Speichert das DOS-SystemAttribut im AusführbarkeitsBit der Gruppe (0010).
no
Freigabe
Boolescher Wert
Speichert das DOS-VerstecktAttribut im AusführbarkeitsBit für »Welt« (0001).
no
Freigabe
delete readonly
map archive
map system
map hidden
0000
Freigabe
inherit Boolescher permissions Wert
Wenn yes, werden die Berechtigungen für neue Dateien und Verzeichnisse vom übergeordneten Verzeichnis übernommen.
no
Freigabe
create mask Das Argument für diese Option ist eine oktal geschriebene Zahl, die die BerechtigungsFlags angibt, die von einem Client bei der Erzeugung einer Datei in einer Freigabe gesetzt werden können. Die Vorgabe ist 0744, so dass der Unix-Besitzer seine eigenen Dateien zumindest lesen, schreiben und optional ausführen kann, während Mitglieder der Gruppe des Benutzers und andere die Dateien lediglich lesen können. Wenn Sie dies zu nicht-ausführbaren Dateien ändern wollen, empfehlen wir, 0644 oder rw-r-r-- zu verwenden. Denken Sie daran, dass der Server möglicherweise die AusführungsBits verwendet, um bestimmte DOS-Attribute zu speichern, wie wir bereits beschrieben haben. Wenn Sie die Erstellungsmaske ändern, müssen diese Bits ebenfalls Teil der Erstellungsmaske sein. directory mask Der Wert dieser Option ist eine oktal geschriebene Zahl für die Berechtigungs-Flags von Verzeichnissen, die Clients in einer Freigabe anlegen. Die Voreinstellung ist 0755, so dass jeder auf dem Unix-Server die Verzeichnisse zumindest lesen und in sie wechseln kann, während nur Sie sie ändern dürfen. Wir empfehlen die Maske 0750, die den Zugriff für »andere« Benutzer unmöglich macht. force create mode Diese Option legt die Berechtigungs-Bits fest, die Samba setzt, wenn eine Änderung an den Berechtigungen einer Datei vorgenommen wird. Diese Option wird häufig dazu verwendet, die bereits erwähnten Gruppenberechtigungen zu erzwingen. Mit ihr kann man darüber hinaus beliebige DOS-Attribute standardmäßig aktivieren. Dazu gehören Archiv (0100), System (0010) und Versteckt (0001).
Beim Speichern von Dokumenten benennen viele WindowsAnwendungen ihre Datendateien mit der Erweiterung .bak um und erzeugen neue. Befinden sich die Dateien in einer Samba-Freigabe, werden dadurch die Eigentümerschaft der Dateien und ihre Berechtigungen geändert, so dass Mitglieder der gleichen UnixGruppe sie nicht bearbeiten können. Wenn Sie force create mode = 0660 setzen, bleibt die neue Datei für die Mitglieder der Gruppe
änderbar. force directory mode Diese Option legt die Berechtigungs-Bits fest, die Samba setzt, wenn eine Änderung an den Berechtigungen eines Verzeichnisses vorgenommen oder wenn ein Verzeichnis erstellt wird. Sie wird häufig dazu benutzt, die bereits erwähnten Gruppenberechtigungen zu erzwingen. Der Vorgabewert beträgt 0000 und kann genau wie bei force create mode dazu verwendet werden, Berechtigungen für die Gruppe oder für andere hinzuzufügen, falls dies erforderlich ist. force group Diese Option, die manchmal auch als group bezeichnet wird, weist allen Verbindungen zu einer Freigabe eine statische Gruppen-ID zu, nachdem die Authentifizierung eines Clients erfolgreich abgeschlossen wurde. Dadurch gehören alle neuen Dateien oder Verzeichnisse, die von einem SMB-Client erzeugt wurden, zu dieser Gruppe. force user Die Option force user weist allen Verbindungen zu einer Freigabe eine statische Benutzer-ID zu, nachdem die Authentifizierung eines Clients erfolgreich abgeschlossen wurde. Dadurch gehören alle neuen Dateien oder Verzeichnisse, die von einem SMBClient erzeugt wurden, zu diesem Benutzer. delete readonly Diese Option erlaubt es einem Benutzer, ein Verzeichnis zu löschen, das eine schreibgeschützte Datei enthält. DOS und Windows erlauben dies normalerweise nicht. Vermutlich werden Sie diese Option deaktiviert lassen, es sei denn, ein Programm (zum Beispiel ein RCS-Programm) benötigt diese Funktionalität; viele Windows-Benutzer wären entsetzt, wenn sie feststellten, dass sie versehentlich eine Datei gelöscht hätten, für die sie einen Schreibschutz aktiviert haben. map archive Das DOS-Archiv-Bit kennzeichnet Dateien, die seit ihrer letzten Sicherung (d.h. seit der Sicherung mit dem DOS-Archivprogramm) verändert wurden. Wenn Sie map archive = yes in Ihre Samba-Konfigurationsdatei eintragen, ordnet Samba das Archiv-Bit dem Unix-Bit für die Ausführung durch den Benutzer (0100) zu. Lassen Sie diese Option eingeschaltet, wenn Ihre Windows-Benutzer ihre eigenen Datensicherungen durchführen oder wenn Sie Programme verwenden, die das Archiv-Bit benutzen. Unix fehlt eine Entsprechung vollständig. Backup-Programme für Unix merken sich üblicherweise in einer Datei, welche Dateien sie zu welchem Zeitpunkt gesichert haben, ein Vergleich der Daten der letzten Änderung der Dateien erfüllt daher denselben Zweck. Wenn Sie yes als Wert für diese Option festlegen, überraschen Sie Unix-Benutzer, weil Datendateien hin und wieder als ausführbar gekennzeichnet sind; dies verursacht aber selten Probleme. Bei dem Versuch, eine Datendatei unter Unix auszuführen, erhält der Benutzer normalerweise eine Reihe von Fehlermeldungen, die von der Shell erzeugt werden, wenn sie die ersten Zeilen der Datei als Befehle zu interpretieren versucht. Der umgekehrte Fall ist ebenfalls möglich, so dass ein Unix-Programm auf einem WindowsRechner so aussieht, als wäre die Datei nicht kürzlich gesichert worden. Auch dieser Fall ist selten und in der Regel harmlos.
Damit map archive richtig funktioniert, darf das Ausführungs-Bit für den Eigentümer nicht mit dem Parameter create mask demaskiert worden sein. map system Das DOS-Attribut System kennzeichnet Dateien, die das Betriebssystem benötigt. Sie sollten nicht ohne besonderen Aufwand gelöscht, umbenannt oder verschoben werden können. Aktivieren Sie dieses Bit nur, wenn Sie Windows-Systemdateien auf dem UnixServer ablegen. Ausführbare Unix-Dateien erscheinen auf Windows-Clients als nicht löschbare Systemdateien. Das kann zu Unbequemlichkeiten führen, wenn Sie ein UnixProgramm von einem Windows-Client aus löschen oder verschieben wollen. In den meisten Netzwerken ist dies ziemlich harmlos. Damit map system richtig funktioniert, darf das Ausführungs-Bit für die Gruppe nicht mit dem Parameter create mask demaskiert worden sein. map hidden DOS verwendet das Attribut Versteckt für Dateien, die normalerweise bei Verzeichnisauflistungen nicht sichtbar sein sollen. Unix besitzt ein solches Bit nicht, und jedes Programm (hauptsächlich die Shell) kann selbst entscheiden, welche Dateien es anzeigt und welche nicht. Normalerweise haben Sie keine DOS-Dateien, die versteckt werden müssen, so dass Sie diese Option abgeschaltet lassen können. Wenn Sie als Wert dieser Option yes angeben, ordnet der Server dem VerstecktAttribut das Ausführungs-Bit für »andere« (0001) zu. Dieses Merkmal kann eine überraschende Wirkung haben: Jedes Unix-Programm, das von anderen ausführbar ist, scheint auf Windows-Clients verschwunden zu sein. Wenn diese Option aber nicht gesetzt ist und ein Windows-Benutzer eine Datei auf einer Samba-Freigabe verstecken will, bleibt dieser Versuch erfolglos - Samba kann das Versteckt-Attribut nicht speichern! Damit map hidden richtig funktioniert, darf das Ausführungs-Bit für andere (»World«) nicht mit dem Parameter create mask demaskiert worden sein. inherit permissions Wenn die Option inherit permissions auf yes gesetzt ist, werden create mask, directory mask, force create mode und force directory mode ignoriert. Das normale Verhalten, bei dem Berechtigungen auf neu erzeugten Dateien gesetzt werden, wird außer Kraft gesetzt. Das heißt, neue Dateien und Verzeichnisse erben ihre Berechtigungen von ihren übergeordneten Verzeichnissen. Neue Verzeichnisse verfügen über genau die gleichen Berechtigungen wie ihr übergeordnetes Verzeichnis, und neue Dateien erben die Lese- und Schreib-Bits ebenfalls vom übergeordneten Verzeichnis. Die Ausführungs-Bits dagegen werden wie gehabt durch die Werte der Parameter map archive, map hidden und map system festgelegt. Standardmäßig ist diese Option auf no gesetzt.
Windows NT/2000/XP-ACLs Unix und Windows verwenden unterschiedliche Sicherheitsmodelle. Windows NT/ 2000/ XP wiederum benutzt ein Sicherheitsmodell, das sich von Windows 95/98/Me
unterscheidet. Ein Bereich, in dem dies offensichtlich ist, ist der Schutz von Dateien. Auf Unix-Systemen wurde traditionell das System »Benutzer, Gruppen, andere« mit seinen 9 Bit verwendet, in dem die Lese-, Schreib- und Ausführungs-Bits separat für den Eigentümer der Datei, die Gruppe, zu der er gehört, und alle anderen Benutzer gesetzt werden können. Windows 95/98/Me besitzt ein System zum Schutz von Dateien, das eigentlich überhaupt kein Schutz ist. Diese Betriebssystemfamilie wurde aus MS-DOS heraus entwickelt, das als nicht netzwerkfähiges Einbenutzersystem implementiert wurde. Mehrbenutzersicherheit wurde einfach niemals hinzugefügt. Eine offensichtliche Ausnahme hierbei bildet die Sicherheit auf Benutzerebene für freigegebene Dateien, auf die wir in Kapitel 9 näher eingehen. Hier können bestimmten Netzwerk-ClientBenutzern oder -Gruppen eigene Zugriffsrechte zugewiesen werden. Sicherheit auf Benutzerebene auf Windows 95/98/Me-Systemen erfordert jedoch einen Windows NT/2000- oder Samba-Server zur Durchführung der eigentlichen Authentifizierung. Unter Windows NT/2000/XP stellt Sicherheit auf Benutzerebene eine Erweiterung des systemeigenen Dateisicherheitsmodells dar, das mit Zugriffskontrolllisten (Access Control Lists; ACLs) arbeitet. Dieses System ist ein wenig umfassender als das UnixSicherheitsmodell, da es die Festlegung von Zugriffsrechten für einzelne Dateien für eine beliebige Anzahl von Benutzern und/oder Benutzergruppen erlaubt. Die Abbildungen 8-3, 8-4 und 8-5 zeigen die Dialoge, in denen auf einem Windows 2000System die ACL für eine Datei gesetzt wird. Klicken Sie mit der rechten Maustaste auf das Symbol einer Datei, wählen Sie aus dem Kontextmenü den Eintrag Eigenschaften und klicken Sie auf die Registerkarte Sicherheitseinstellungen. Sie erhalten das Dialogfeld aus Abbildung 8-3. Hier können Sie die grundlegenden Berechtigungen für eine Datei einstellen, die ähnlich den Unix-Berechtigungen sind, allerdings nicht mit ihnen identisch. Abbildung 8-3 Die Registerkarte Sicherheitseinstellungen des Eigenschaften-Dialogfelds einer Datei
Durch einen Klick auf das Register Erweitert öffnen Sie den Dialog aus Abbildung 8-4, der eine Liste der Berechtigungseinträge in der ACL zeigt. Hier können Einträge in der ACL angelegt oder aus ihr gelöscht werden. Es ist auch möglich, einen existierenden Berechtigungseintrag zu betrachten und zu verändern. Jeder Berechtigungseintrag setzt oder entfernt bestimmte Berechtigungen für einen Benutzer oder eine Gruppe. Abbildung 8-4 Die Registerkarte Berechtigungen des Dialogfelds Zugriffseinstellungen
Abbildung 8-5 Der Dialog Berechtigungseintrag mit den Einstellungen eines Berechtigungseintrags
Abbildung 8-5 zeigt den Dialog zum Hinzufügen eines Berechtigungseintrags. Wie Sie sehen können, gibt es für die Berechtigungen in einer ACL mehr Optionen, als mit den Berechtigungs-Bits auf typischen Unix-Systemen üblich sind. Mehr über diese Einstellungen erfahren Sie in dem Buch Windows NT System-Administration von O'Reilly. In einer vernetzten Umgebung, in der ein Samba-Server Windows NT/2000/XP-Clients Dateien bereitstellt, muss Samba die Unix-Berechtigungen für Dateien und Verzeichnisse auf Windows NT/2000/XP-ACLs abbilden. Wenn ein Windows NT/2000/XPClient auf eine freigegebene Datei oder ein freigegebenes Verzeichnis auf einem SambaServer zugreift, übersetzt Samba die Eigentümerschaft des Objekts, seine Gruppe und seine Berechtigungen in eine ACL und liefert diese an den Client zurück. Abbildung 8-6 zeigt den Eigenschaften-Dialog für die Datei shopping_list.doc, die sich auf dem Samba-Server befindet. Abbildung 8-6 Der Eigenschaften-Dialog für eine Datei auf dem Samba-Server
Aus Sicht von Unix erscheint diese Datei folgendermaßen: $ ls -l shopping_list.doc -rw-------
1 adilia
users
49 Mar 29 11:58 shopping_list.doc
Da die Datei für den Eigentümer eine Leseberechtigung aufweist, ist das Optionsfeld Schreibgeschützt nicht angeklickt, obwohl der Benutzer auf dem Windows-Client (nicht adilia in diesem Beispiel) keine Berechtigung zum Lesezugriff hat. Die Optionsfelder zeigen hier nur die DOS-Attribute. Wenn Sie auf das Register Sicherheit klicken, können Sie die ACLs untersuchen, wie in Abbildung 8-7 zu sehen. Abbildung 8-7 Die Registerkarte Sicherheitseinstellungen des Eigenschaften-Dialogs für eine Datei auf dem Samba-Server
Der Eigentümer der Datei (adilia) wird als ein Eintrag angezeigt, während die Berechtigungen für die Gruppe (users) und für andere als Gruppen mit der Bezeichnung users und Jeder dargestellt werden. Wenn Sie auf einen der Einträge in den oberen Fenstern klicken, wird die vereinfachte Ansicht der Berechtigungen in diesem Eintrag im unteren Fenster dargestellt. Die Lese-/Schreibberechtigungen für adilia werden hier in einer Weise gezeigt, die das Sicherheitsmodell von Unix und Windows ähnlich erscheinen lässt. Ein Klick auf den Button Erweitert... öffnet jedoch das zusätzliche Dialogfeld aus Abbildung 8-8. Abbildung 8-8 Der Dialog Zugriffseinstellungen für eine Datei auf dem Samba-Server
In diesem Dialog sehen Sie die tatsächliche ACL der Datei. Die Berechtigungseinträge für users und Jeder sind mit Besitzrechte übernehmen in der Spalte Berechtigung aufgeführt. Dies ist ein Trick, der von Samba für ACLs eingesetzt wird, die keine Berechtigungen auf der Unix-Seite besitzen. Unter Windows ergibt eine ACL, bei der nichts gesetzt ist, überhaupt keine ACL. Deshalb setzt Samba die Berechtigung Besitzrechte übernehmen, um sicherzustellen, dass alle ACLs, die mit den UnixBerechtigungen für »Benutzer, Gruppe, andere« korrespondieren, unter Windows zu sehen sind. Für die Berechtigung Besitzrechte übernehmen gibt es kein entsprechendes Unix-Attribut, die Einstellung unter Windows hat also keinen Einfluss auf die tatsächliche Datei auf dem Unix-System. Windows-Benutzer könnten jetzt zwar fälschlicherweise annehmen, dass sie Eigentümer der Datei werden (d.h. die Eigentümerschaft der Datei auf sich selbst ändern), ein entsprechender Versuch würde jedoch fehlschlagen. Die Berechtigung-Spalte für die adilia-ACL ist als Speziell gekennzeichnet, da Samba Berechtigungen für die Datei aufführt, die nicht mit Einstellungen korrespondieren, für die Windows einen aussagekräftigeren Namen hat. Wenn Sie zuerst auf den Eintrag und anschließend auf den Button Anzeigen/Bearbeiten... klicken, öffnet sich der Dialog aus Abbildung 8-9, der die Details der ACL-Berechtigungen zeigt, die möglicherweise geändert werden können. Abbildung 8-9 Der Dialog Berechtigungseintrag für eine von Samba bereitgestellte Datei
Wir sagen »möglicherweise«, da das Aktivieren oder Deaktivieren von Optionsfeldern in diesem Dialog nicht unbedingt zu Einstellungen führt, die Samba wieder auf das UnixSicherheitsmodell zurückführen kann. Wenn ein Benutzer versucht, eine Einstellung (entweder Berechtigungen oder Eigentümerschaft) zu ändern, die er nicht ändern darf oder die nicht mit einer gültigen Einstellung auf dem Unix-System korrespondiert, antwortet Samba entweder mit einer Fehlermeldung, oder es ignoriert diese Einstellungen stillschweigend. Die ACLs für ein Verzeichnis sind ein wenig anders. Abbildung 8-10 zeigt die ACL nach einem Klick auf den Button Erweitert. Abbildung 8-10 Der Dialog Zugriffseinstellungen für ein Verzeichnis auf dem Samba-Server
Hier gibt es jeweils zwei ACLs für users und Jeder. Eine ACL legt die Berechtigungen für das Verzeichnis selbst fest, und die andere gibt die Berechtigungen für den Inhalt des Verzeichnisses an. Beim Ändern von Einstellungen im Dialog Anzeigen/ Bearbeiten... gibt es ein zusätzliches Drop-down-Menü, um die Einstellungen entweder nur auf das Verzeichnis oder auf eine Kombination aus dem Verzeichnis und den Dateien und Verzeichnissen, die dieses enthält, anzuwenden. Werden die Einstellungen auf mehr als nur das Verzeichnis angewendet, passt sich Samba an das Verhalten eines Windows-Servers an und ändert die Berechtigungen für den Inhalt des Verzeichnisses entsprechend diesem Dialog.
Unix-ACLs In den meisten Fällen werden Benutzer von Windows-Clients das UnixSicherheitsmodell ausreichend finden. Manchmal wollen Anwender jedoch, dass der Samba-Server das komplette Windows-ACL-Sicherheitsmodell unterstützt. Selbst wenn sie die ausgeklügelte Kontrolle über Datei- und Verzeichnisberechtigungen nicht benötigen, werden sie Sambas Übersetzung zwischen ACLs und Unix-Berechtigungen verwirrend und frustrierend finden. Wenn das zu Grunde liegende Unix-Host-Betriebssystem POSIX.1e-ACLs unterstützt, bietet Samba eine viel bessere Unterstützung für Windows NT/2000/XP-ACLs. Folgende Versionen von Unix enthalten die notwendige Funktionalität: ● ● ●
● ● ● ●
Solaris 2.6 und später SGI Irix Linux mit dem Kernel-Patch von Andreas Grünbacher (http://acl.bestbits.de), der die Linux-Dateisysteme ext2 und ext3 um ACL-Unterstützung erweitert Linux mit dem XFS-Dateisystem AIX FreeBSD 5.0 und später HP/UX 11.0 und später mit dem JFS 3.3-Dateisystem Version 4
Sollten Sie in der glücklichen Lage sein, ein Unix-Host-Betriebssystem zu haben, in das die ACL-Unterstützung bereits integriert ist, müssen Sie Samba jetzt lediglich noch einmal mit der Konfigurationsoption --with-acl-support kompilieren, wie wir in Kapitel 2 beschrieben haben. Falls Sie Linux betreiben und einen Kernel-Patch einspielen müssen, wird es etwas komplizierter. Wir empfehlen Ihnen, sich an die Dokumentation zu halten, die mit dem Patch geliefert wurde. Dort finden Sie alle notwendigen Informationen.
Konfigurationsoptionen für ACLs Tabelle 8-3 zeigt die Samba-Konfigurationsoptionen zum Arbeiten mit Windows NT/2000/XP-Zugriffskontrolllisten.
Tabelle 8-3 ACL-Konfigurationsoptionen Option
Parameter
Funktion
Vorgabewert Geltungsbereich
nt acl support
Boolescher Wert
Wenn yes, ist es den Benutzern auf Windows NT/2000/XP-Clients erlaubt, die ACLEinstellungen zu verändern.
security mask
numerischer Wert
Bit-Maske, die Berechtigungseinstellungen auf Dateien erlaubt oder verbietet.
0777
Freigabe
force security mode
numerischer Wert
Bits, die immer gesetzt sind, wenn die Dateiberechtigungen modifiziert werden.
0000
Freigabe
directory security mask
numerischer Wert
Bit-Maske, die Berechtigungseinstellungen auf Verzeichnissen erlaubt oder verbietet.
0777
Freigabe
force directory security mode
numerischer Wert
Bits, die immer gesetzt sind, wenn die Verzeichnisberechtigungen modifiziert werden.
0000
Freigabe
yes
Freigabe
nt acl support Dieser Parameter ist standardmäßig yes. Dadurch ist es Benutzern auf Windows NT/2000/ XP-Clients erlaubt, die ACL-Einstellungen für Dateien auf dem Samba-Server zu verändern. Ist er auf no gesetzt, wird als Eigentümer für die Dateien Jeder angezeigt, die Berechtigungen stehen auf »Vollzugriff«. Als tatsächliche Eigentümerschaft und Berechtigungen werden jedoch die Werte erzwungen, die auf dem Samba-Server eingestellt sind. Der Benutzer auf dem Windows-Client kann sie mit den Dialogfeldern zum Verwalten von ACLs nicht betrachten oder verändern. Ist die Option aktiviert, ist die Unterstützung für Windows NT/2000/XP-ACLs auf das
beschränkt, was Eigentümerschaften und Berechtigungen auf gültige Benutzer und Berechtigungen auf dem Samba-Server abbilden können. Falls der Server ACLs unterstützt (entweder direkt oder mit einem zusätzlichen Patch zum Erweitern des Dateisystems), entspricht die ACL-Unterstützung von Samba eher der eines Windows NT/2000/ XP-Servers. security mask Mit der Option security mask ist es möglich zu definieren, welche Dateiberechtigungen Benutzer von Windows NT/2000/XP-Clients aus ändern dürfen. Dies gilt nur für Dateien. Für Verzeichnisse gibt es die Option directory security mask. Dem Parameter wird ein numerischer Wert zugewiesen, bei dem es sich um eine Berechtigungsmaske im Unix-Stil handelt. Für in der Maske gesetzte Bits darf der Client die entsprechenden Bits in den Berechtigungen der Dateien verändern. Ist das Bit null, kann der Client diese Berechtigung nicht modifizieren. Wenn security mask beispielsweise als: [data] security mask = 0777
gesetzt ist, darf der Client alle Berechtigungen von Benutzer/Gruppen/andere der Dateien in der Freigabe ändern. Das ist die Voreinstellung. Ein Wert von 0 würde den Clients das Ändern der Berechtigungen verbieten. Wird security mask als: [data] security mask = 0666
gesetzt, ist es den Benutzern auf den Clients erlaubt, die Lese- und Schreibrechte, nicht jedoch die Ausführungsrechte zu verändern. Verlassen Sie sich nicht auf security mask, wenn Sie eine vollständige Kontrolle wünschen. Wenn nämlich der Benutzer auf einem anderen Weg auf die Dateien auf dem Samba-Server zugreifen kann (zum Beispiel indem er sich direkt auf dem UnixHost anmeldet), kann er die Berechtigungen über diese Methode verändern. force security mode Die Option force security mode kann verwendet werden, um eine Gruppe von Berechtigungen einzustellen, die immer gesetzt bleiben, wenn ein Benutzer auf einem Windows NT/2000/XP-Client die Berechtigungen einer Datei verändert. (Siehe die Option force directory security mode für die Behandlung von Verzeichnissen.) Sie müssen diese Option unbedingt richtig verstehen. Die Maske, die als Wert des Parameters angegeben wird, ist nicht unbedingt identisch mit den endgültigen Berechtigungen auf der Datei. Die Berechtigungen, die der Benutzer auf dem Client zu verändern versucht, werden mit der Option force security mode mask logisch ODERverknüpft. Alle Bits, die eingeschaltet sind, veranlassen, dass die entsprechenden Berechtigungen auf der Datei gesetzt sind. Nehmen Sie zum Beispiel an, dass force security mode in einer Freigabe folgendermaßen gesetzt ist: [data]
force security mode = 0440
(Dies setzt das Lese-Bit für den Eigentümer und die Gruppe, nicht jedoch für andere.) Wenn ein Benutzer auf einem Windows NT/2000/XP-Client eine ACL auf einer Datei in der Freigabe [data] verändert und versucht, alle Leseberechtigungen zu entfernen, wird die Leseberechtigung für andere (Jeder) gelöscht, die Leseberechtigungen für den Eigentümer und die Gruppe dagegen bleiben bestehen. Beachten Sie, dass dieser Parameter sich nicht dazu eignet, ein Berechtigungs-Bit auszuschalten. Wie bei der Option security mask gilt, dass ein Benutzer, der eine andere Möglichkeit als Samba besitzt, auf die Dateien in der Freigabe zuzugreifen, leicht den Einfluss von Samba auf diesen Parameter umgehen kann. Der Vorgabewert für force security mode lautet 0000, wodurch es Benutzern erlaubt wird, alle Berechtigungen von Dateien zu entfernen. directory security mask Diese Option funktioniert genauso wie die Option security mask, allerdings gilt sie für Verzeichnisse und nicht für Dateien. Ebenso wie security mask hat sie den Standardwert 0777, der es Benutzern auf Windows NT/2000/XP-Clients erlaubt, alle Unix-Berechtigungen auf Verzeichnissen in der Freigabe zu verändern. force directory security mode Diese Option funktioniert genauso wie die Option force security mode, allerdings gilt sie für Verzeichnisse und nicht für Dateien. Sie besitzt den Vorgabewert 0000, der es Benutzern auf Windows NT/2000/XP-Clients erlaubt, alle Unix-Berechtigungen auf Verzeichnissen in der Freigabe zu entfernen.
Namensverkürzung und Groß-/Kleinschreibung In den Tagen von DOS und Windows 3.1 durften Dateinamen aus nicht mehr als acht Großbuchstaben, gefolgt von einem Punkt und drei weiteren Großbuchstaben bestehen. Diese Schreibweise wurde als 8.3-Format bezeichnet und stellte ein großes Ärgernis dar. Windows 95/98/Me, Windows NT/2000/XP und Unix haben dieses Problem seither entspannt, indem sie längere Dateinamen erlaubten, die manchmal sogar eine gemischte Schreibweise aufweisen durften. Tabelle 8-4 zeigt die aktuellen Benennungsmöglichkeiten einiger beliebter Betriebssysteme.
Tabelle 8-4 Dateinamenbeschränkungen von Betriebssystemen Betriebssystem DOS 6.22 oder niedriger
Regeln zur Benennung von Dateien Acht Zeichen, gefolgt von einem Punkt und einer dreibuchstabigen Erweiterung (8.3-Format); Groß-/ Kleinschreibung wird nicht beachtet.
Acht Zeichen, gefolgt von einem Punkt und einer Windows 3.1 for Workgroups dreibuchstabigen Erweiterung (8.3-Format); Groß-/ Kleinschreibung wird nicht beachtet. Windows 95/98/Me
255 Zeichen; Groß-/Kleinschreibung wird nicht beachtet, Schreibweise wird aber beibehalten.
Windows NT/2000/XP
255 Zeichen; Groß-/Kleinschreibung wird nicht beachtet, Schreibweise wird aber beibehalten.
Unix
255 Zeichen; Groß-/Kleinschreibung wird beachtet.
Samba muss mit Netzwerk-Clients kompatibel sein, die ihre Dateien immer noch im 8.3-Format speichern, wie etwa Windows for Workgroups. Erzeugt ein Benutzer auf einer Freigabe eine Datei namens antidisestablishmentarianism.txt, kann ein Windows for Workgroups-Client diese nicht von einer anderen Datei im gleichen Verzeichnis namens antidisease.txt unterscheiden. Ebenso wie Windows 95/98/Me und Windows NT/2000/ XP muss Samba eine besondere Methode entwickeln, um einen langen Dateinamen so in einen 8.3-Dateinamen umzuwandeln, dass ähnliche Dateinamen keine Konflikte auslösen. Dieser Vorgang wird Namensverkürzung genannt. Samba führt ihn in einer Weise aus, die ähnlich, aber nicht identisch mit Windows 95 und seinen Nachfolgern ist.
Funktion der Samba-Namensverkürzung Und so verkürzt Samba einen langen Dateinamen zu einem 8.3-Dateinamen: ●
●
●
●
●
Wenn der ursprüngliche Dateiname nicht mit einem Punkt beginnt, konvertiert Samba die ersten fünf Zeichen vor dem Punkt (sofern es einen gibt) in Großbuchstaben. Sie werden als erste fünf Zeichen des 8.3-Namens verwendet. Wenn der ursprüngliche Dateiname mit einem Punkt beginnt, wird dieser entfernt. Auf den Rest wird der vorherige Schritt angewandt. Den Zeichen folgt unmittelbar ein Abkürzungszeichen, standardmäßig eine Tilde (~), Samba erlaubt es Ihnen aber auch, ein anderes Zeichen anzugeben. Die Basis des langen Dateinamens vor dem letzten Punkt wird in einen Code aus zwei Zeichen konvertiert, Teile des Dateinamens nach dem letzten Punkt werden bei Bedarf verwendet. Dieser Code aus zwei Zeichen wird dem 8.3-Dateinamen nach dem Abkürzungszeichen angefügt. Die ersten drei Zeichen nach dem Punkt (sofern einer existiert) des ursprünglichen Dateinamens werden in Großbuchstaben gewandelt und dem abgekürzten Namen als Erweiterung hinzugefügt. Wenn der ursprüngliche Dateiname mit einem Punkt begonnen hat, werden als Erweiterung stattdessen drei Unterstriche ( _ _ _ ) verwendet.
Hier sind einige Beispiele: virtuosity.dat
VIRTU~F1.DAT
.htaccess
HTACC~U0._ _ _
hello.java
HELLO~1F.JAV
team.config.txt
TEAMC~04.TXT
antidisestablishmentarianism.txt
ANTID~E3.TXT
antidisease.txt
ANTID~9K.TXT
Auf diese Weise kann Windows for Workgroups die beiden Dateien für den bedauernswerten Anwender unterscheiden, der gezwungen ist, das Netzwerk nur aus der Perspektive dieses Betriebssystems zu sehen. Beachten Sie, dass ein langer Dateiname mit Samba immer zum selben kurzen Dateinamen gewandelt werden sollte. Das ist bei Windows nicht immer der Fall. Der Nachteil dieses Verfahrens besteht darin, dass es Kollisionen nicht ausschließt. Die Wahrscheinlichkeit von Kollisionen ist aber sehr gering. Sie werden im Allgemeinen die Namensverkürzung für die Kompatibilität mit den ältesten Clients konfigurieren wollen. Wir empfehlen Ihnen, dies auf eine Weise zu tun, die andere Clients nicht stört. Dazu fügen Sie eine include-Anweisung in die smb.confDatei ein: [global] include = /usr/local/samba/lib/smb.conf.%a
Dies ergibt smb.conf.WfWg, wenn ein Windows for Workgroups-Client eine Verbindung herstellt. Sie können jetzt die Datei /usr/local/samba/lib/smb.conf.WfWg mit folgenden Optionen erstellen: [global] case sensitive = no default case = upper preserve case = no short preserve case = no mangle case = yes mangled names= yes
Falls Sie Windows for Workgroups nicht benutzen, können Sie wahrscheinlich für diese Optionen die Vorgabewerte stehen lassen. Dateinamen mit Samba speichern und suchen In diesem Zusammenhang ist auch der Unterschied zwischen dem Speichern und Suchen von Dateinamen im Betriebssystem wichtig. Wenn Sie mit Windows arbeiten, sind Sie sicherlich bereits auf Dateien mit dem Namen README.TXT gestoßen. Der Name der Datei besteht möglicherweise ausschließlich aus Großbuchstaben. Wenn Sie aber die MS-DOS-Eingabeaufforderung öffnen und den Befehl: C:\> notepad readme.txt
eingeben, wird die Datei korrekt in den Windows-Editor geladen, obwohl sie den Namen mit Kleinbuchstaben geschrieben haben.
Der Grund dafür ist, dass die Betriebssystemfamilien Windows 95/98/Me und Windows NT/2000/XP bei der Suche nach Dateinamen die Groß-/Kleinschreibung nicht beachten, während die Groß-/Kleinschreibung beim Speichern von Dateien beachtet und beibehalten wird. Unix-basierte Betriebssysteme unterscheiden im Gegensatz dazu streng zwischen Groß- und Kleinschreibung. Wenn Sie die Datei README.TXT mit dem Befehl: $ vi readme.txt
bearbeiten wollen, erstellt der Editor wahrscheinlich eine neue, leere Datei. Und so geht Samba mit Groß-/Kleinbuchstaben um: Wenn Sie preserve case auf yes setzen, verwendet Samba immer den vom Client gelieferten Namen zum Speichern (nicht zum Suchen) von Dateinamen. Wenn Sie den Wert dieser Option auf no setzen, verwendet Samba den Wert der Option default case. Dasselbe gilt für short preserve case. Wenn Sie hier yes angeben, verwendet Samba die vorgegebene Groß-/ Kleinschreibung des Betriebssystems für 8.3-Dateinamen, bei no den Wert der Option default case. Zur Suche von Dateinamen in seinen Freigaben zieht Samba schließlich den Wert der Option case sensitive heran.
Optionen für die Namensabkürzung Mit Samba können Sie genau festlegen, wie die Namensverkürzung arbeiten soll: Sie besitzen die Kontrolle über Groß-/Kleinschreibung, das Abkürzungszeichen und können eine direkte Zuordnung von bestimmten Dateinamen angeben. Wir haben die Optionen für die Namensverkürzung in Tabelle 8-5 zusammengefasst.
Tabelle 8-5 Optionen für die Namensverkürzung Option
Parameter
case sensitive Boolescher (casesignames) Wert
default case
String (upper oder lower)
Funktion
Vorgabewert Geltungsbereich
Wenn yes, wird die Groß-/ Kleinschreibung bei Dateinamen beachtet (bei Windows nicht der Fall).
no
Freigabe
Schreibweise, die als Vorgabe betrachtet werden soll (wird nur verwendet, wenn preserve case den Wert no hat).
lower
Freigabe
Boolescher Wert
Wenn yes, wird die Schreibweise beibehalten, die der Client liefert (d. h., es wird nicht nach default case konvertiert).
yes
Freigabe
short preserve case
Boolescher Wert
Wenn yes, wird die Schreibweise der Namen im 8.3Format beibehalten, die der Client liefert.
yes
Freigabe
mangled names
Boolescher Wert
Verkürzt lange Namen zum 8.3DOS-Format.
yes
Freigabe
mangle case
Boolescher Wert
Verkürzt einen Namen, wenn dieser in gemischter Schreibweise vorliegt.
no
Freigabe
mangling char
String (einzelnes Zeichen)
Legt das Abkürzungszeichen fest.
~
Freigabe
mangled stack
numerischer Wert
Anzahl der verkürzten Namen, die im lokalen Abkürzungs-Stack verbleiben sollen.
50
global
mangled map
String (Liste mit Mustern)
Erlaubt die Zuordnung von Dateinamen von einem Format in ein anderes.
keiner
Freigabe
preserve case
case sensitive Diese Option auf Freigabeebene, die auch auf den ungewöhnlichen Namen casesignames hört, legt fest, ob Samba die Groß-/Kleinschreibung beachten soll, wenn es in einer bestimmten Freigabe einen Dateinamen sucht. Die Voreinstellung dieser Option ist no, so dass Samba hier wie Windows verfährt. Wenn Clients ein Betriebssystem verwenden, das die Groß-/ Kleinschreibung nicht nur beim Speichern, sondern auch beim Auffinden von Dateien beachtet, können Sie diese Konfigurationsoption auf yes setzen, wie hier gezeigt wird: [accounting] case sensitive = yes
Ansonsten empfehlen wir, den Vorgabewert dieser Option stehen zu lassen. default case Die Option default case wird zusammen mit preserve case benutzt. Sie legt fest, ob Samba beim Erstellen von Dateien auf einer seiner Freigaben Groß- oder Kleinbuchstaben (upper oder lower) für den Dateinamen verwenden soll. Die Vorgabe ist lower, so dass Namen von neu erstellten Dateien aus Kleinbuchstaben bestehen. Bei Bedarf können Sie diese globale Option außer Kraft setzen. Geben Sie dazu Folgendes an: [global] default case = upper
Wenn Sie diesen Wert festlegen, erhalten neue Dateien einen Namen aus Großbuchstaben. Dieser Name kann in einem Programm nicht überschrieben werden. Wir empfehlen Ihnen die Verwendung der Vorgabewerte, sofern in Ihr Netz keine Clients mit Windows for Workgroups oder andere Clients eingebunden sind, die lediglich das 8.3-Format beherrschen. In diesen Fällen sollten Sie den Wert auf upper setzen. preserve case Diese Option bestimmt, ob eine Datei, die von Samba für den Client erzeugt wurde, die vom Client gelieferte Groß-/Kleischreibung beibehalten oder die von der Konfigurationsoption default case festgelegte Schreibweise annehmen soll. Vorgabewert ist yes, das heißt, es wird die vom Client gelieferte Schreibweise behalten. Ist die Option auf no gesetzt, wird der Wert der Option default case (upper oder lower) verwendet. Beachten Sie, dass sich diese Option nicht auf 8.3-Dateinamen auswirkt - dazu dient die im nächsten Absatz beschriebene Option short preserve case. Sie sollten hier zum Beispiel yes angeben, wenn Anwendungen, die Dateien auf dem Samba-Server anlegen, die Datei in Großbuchstaben anfordern. Soll Samba dagegen das Verhalten eines Windows NT-Dateisystems nachahmen, können Sie den Vorgabewert (yes) verwenden. short preserve case Diese Option gibt an, ob ein 8.3-Dateiname, der von Samba für den Client erzeugt wurde, die vom Client gelieferte Schreibweise beibehält oder ob die durch die Konfigurationsoption default case festgelegte Schreibweise verwendet wird. Vorgabewert ist yes, das heißt, die vom Client vorgegebene Schreibweise wird beibehalten. Sie können Samba die Schreibweise über die Option default case wählen lassen, indem Sie Folgendes einstellen: [global] short preserve case = no
Soll Samba dagegen das Verhalten eines Windows NT-Dateisystems nachahmen,
können Sie den Vorgabewert (yes) verwenden. mangled names Diese Option auf Freigabeebene legt fest, ob Samba lange Dateinamen für 8.3-Clients verkürzt. Nehmen Sie den Wert no, verkürzt Samba lange Dateinamen nicht, so dass Betriebssysteme, die lediglich das 8.3-Format kennen, diese Dateien entweder mit abgeschnittenen Namen oder aber gar nicht sehen (je nach Client). Die Voreinstellung ist yes. Sie können diesen Wert in einer Freigabe folgendermaßen außer Kraft setzen: [data] mangled names = no
mangle case Der Wert dieser Option bestimmt, ob Samba lange Dateinamen verkürzen soll, die nicht ausschließlich in der von der Option default case angegebenen Schreibweise geschrieben sind, nämlich ausschließlich groß oder klein. Die Vorgabe ist no. Wenn Sie den Wert dieser Option auf yes festlegen, sollten Sie sicher sein, dass alle Clients mit den resultierenden abgekürzten Dateinamen zurechtkommen. Verwenden Sie diese Option wie folgt: [data] mangle case = yes
Wir empfehlen, nur dann zu dieser Option zu greifen, wenn Sie dafür einen triftigen Grund haben. mangling char Diese Option auf Freigabeebene gibt das Abkürzungszeichen an, das abgekürzte 8.3Dateinamen enthalten sollen. Der Vorgabewert ist die Tilde (~). Sie können jedoch auch jedes andere Zeichen dafür einsetzen, wie im folgenden Beispiel: [data] mangling char = #
mangled stack Samba verwaltet einen lokalen Stack kürzlich abgekürzter 8.3-Dateinamen, der herangezogen wird, um die gekürzten Dateinamen wieder in lange Namen zu verwandeln. Das erweist sich als nützlich, wenn Anwendungen eine Datei erstellen, speichern und schließen und sie später wieder verändern wollen. Standardmäßig merkt sich Samba die letzten 50 verwendeten Paare von langen Dateinamen und ihren Abkürzungen. Wenn Sie die CPU-Belastung verringern wollen, die durch die Abkürzung von Dateinamen hervorgerufen wird, können Sie den Stack vergrößern, wodurch Samba natürlich mehr Hauptspeicher beansprucht und der Dateizugriff geringfügig langsamer wird:
[global] mangled stack = 100
mangled map Wenn das vorgegebene Verfahren zur Namensabkürzung nicht Ihren Wünschen oder Erfordernissen entspricht, können Sie Samba mit der Option mangled map detailliertere Anweisungen geben. Diese Option erlaubt es, Zeichenmuster vorzugeben, die Samba an Stelle der gewöhnlichen Namensverkürzung verwenden soll. Hier ein Beispiel: [data] mangled map =(*.database *.db) (*.class *.cls)
In diesem Fall durchsucht Samba jeden Dateinamen, auf den es trifft, auf Zeichen im ersten Zeichenmuster hin, konvertiert ihn in das zweite Muster, das innerhalb eines Klammernpaars angegeben ist, und erzeugt so einen 8.3-Dateinamen. Das ist nützlich, wenn bestimmte Namen vom gewöhnlichen Abkürzungsverfahren nicht korrekt konvertiert werden oder wenn dadurch ein Dateiname entsteht, den ein Client nicht richtig erkennt. Die Muster werden durch Leerzeichen voneinander getrennt.
Sperren und Oplocks Dass zwei Anwendungen gleichzeitig in dieselbe Datei schreiben, ist nicht wünschenswert, und zwar in keinem Betriebssystem. Die meisten Betriebssysteme verwenden Sperren (Locks), um sicherzustellen, dass zu einem bestimmten Zeitpunkt nur jeweils genau ein Prozess in eine Datei schreiben kann. Traditionell sperren Betriebssysteme ganze Dateien, wohingegen neuere Ansätze auch das Sperren von Dateibereichen erlauben. Wenn ein anderer Prozess in die gesperrte Datei (oder in den gesperrten Bereich einer Datei) schreiben will, erhält er eine Fehlermeldung vom Betriebssystem und muss warten, bis die Sperre aufgehoben wird Samba unterstützt die Standard-(Deny Mode-)Sperranfragen der DOS- und NTDateisysteme, mit denen ein Prozess die Sperre einer ganzen Datei oder eines Dateibereichs anfordern kann. Außerdem unterstützt Samba einen Sperrmechanismus, der in der Windows NT-Welt als opportunistisches Sperren (engl. Opportunistic Locking, kurz Oplock) bekannt ist.
Opportunistisches Sperren Mit Oplocks kann ein Client den Samba-Server darüber benachrichtigen, dass er nicht nur exklusiv in eine Datei schreiben möchte, sondern Änderungen auch lokal zwischenspeichert, also nicht sofort an den Samba-Server schickt. Durch diese lokale Speicherung erhöht sich die Zugriffsgeschwindigkeit, da der Weg über das Netzwerk entfällt. Die erreichte Leistungssteigerung beträgt typischerweise etwa 30 Prozent, gleichzeitig wird Netzwerkbandbreite für andere Aufgaben reserviert. Da der exklusive Zugriff auf eine Datei auch über normale Dateisperren erreicht werden kann, liegt der Wert der Oplocks nicht so sehr in der Sperre einer Datei, sondern eher im Zwischenspeichern. Eine bessere Bezeichnung für opportunistische Sperren wäre deshalb eigentlich opportunistisches Caching.
Wenn ein Client Samba eine Oplock-Anforderung für eine Datei sendet, markiert Samba die Datei als opportunistisch gesperrt und wartet ab, bis der Client seine Arbeit beendet hat, wobei er alle Änderungen an den Samba-Server schickt, um die Datei abzugleichen. Fordert ein zweiter Client die Datei an, bevor der erste Client ihre Bearbeitung abgeschlossen hat, kann Samba dem ersten Client eine OplockUnterbrechungsanforderung (Oplock-Break) zukommen lassen. Dabei handelt es sich um eine Aufforderung, die Zwischenspeicherungen zu beenden und dem Server die Datei in ihrem gegenwärtigen Zustand zu übermitteln, so dass dieser die Datei an den zweiten Client schicken kann. Ein Oplock ist aber kein Ersatz für das Standard-(Deny Mode-)Sperren. Es kommt vor, dass der unterbrechende Prozess, nachdem ihm eine Oplock-Unterbrechung zugestanden wurde, feststellt, dass der ursprüngliche Prozess zusätzlich eine Deny Mode-Sperre auf die Datei besitzt. Abbildung 8-11 veranschaulicht den Vorgang einer opportunistischen Sperre. Abbildung 8-11 Opportunistisches Sperren
In den meisten Fällen ist die Leistungssteigerung, die aus dem Einsatz von Oplocks resultiert, äußerst wünschenswert. Allerdings kann es ziemlich riskant sein, dem Client zu erlauben, die Daten zwischenzuspeichern, nämlich dann, wenn die Client- oder die Netzwerk-Hardware nicht sehr zuverlässig ist. Stellen Sie sich vor, ein Client öffnet eine Datei zum Schreiben, wobei er einen Oplock darauf erzeugt. Wenn ein anderer Client ebenfalls versucht, die Datei zu öffnen, wird an den ersten Client eine OplockUnterbrechungsanforderung gesandt. Wird diese Anforderung aus welchen Gründen auch immer nicht erfüllt und der zweite Client beginnt mit dem Schreiben der Datei, kann die Datei durch das gleichzeitige Schreiben der zwei Prozesse leicht zerstört werden. Leider ist dieses Szenario nicht unrealistisch. Solch unkoordiniertes Verhalten wurde schon oft zwischen Windows-Clients in SMB-Netzwerken (in denen die Dateien von Windows NT/2000 oder Samba bereitgestellt wurden) beobachtet. Typischerweise handelt es sich bei den betroffenen Dateien um Datenbankdateien, die von mehreren Clients zum gleichzeitigen Schreiben geöffnet wurden. Ein konkreteres Beispiel für das Fehlschlagen von Oplocks tritt auf, wenn Datenbankdateien sehr groß sind. Wenn einem Client erlaubt wird, eine solche Datei
mit einem Oplock zu belegen, kann eine große Verzögerung auftreten, während der Client die Datei vom Server in seinen Zwischenspeicher kopiert, auch wenn nur ein Datensatz aktualisiert werden muss. Es wird noch schlimmer, wenn ein anderer Client versucht, die gesperrte Datei zu öffnen. Der erste Client müsste die gesamte Datei wieder auf den Server zurückschreiben, bevor die Öffnungsanforderung des zweiten Clients erfolgreich sein kann. Dadurch ergibt sich eine weitere große Verzögerung (für beide Clients), die in der Praxis oft dazu führt, dass für den zweiten Client das Öffnen fehlschlägt, da inzwischen ein Timeout aufgetreten ist. Zusätzlich kommt es vermutlich zu einer Warnung vor einer möglichen Zerstörung der Datenbank! Falls bei Ihnen solche Probleme auftreten, können Sie die Oplocks der betroffenen Dateien mit dem Parameter veto oplock files deaktivieren: [dbdata] veto oplock files = /*.dbm/
Verwenden Sie den Wert des Parameters (eine Liste von Dateinamensmustern, getrennt durch Schrägstriche), um alle Dateien in der Freigabe zu erfassen, die Ärger verursachen. Die Syntax dieses Parameters ist ähnlich der des Parameters veto files. Falls Sie wirklich vorsichtig sein wollen und mit einer geringeren Leistung leben können, können Sie Oplocks ganz und gar deaktivieren. Dann tritt das Problem mit den Oplock-Unterbrechungsanforderungen überhaupt nicht auf: [global] oplocks = no
Dies deaktiviert Oplocks für alle Dateien in allen Freigaben, die vom Samba-Server bereitgestellt werden. Falls Sie die Oplocks nur in einer bestimmten Freigabe deaktivieren wollen, geben Sie den Parameter oplocks = no nur in dieser Freigabe an: [database] oplocks = no
Dieses Beispiel erlaubt es anderen Freigaben, die weniger sensible Daten enthalten, eine bessere Leistung zu erzielen, während die Leistung in der Freigabe [database] zu Gunsten einer verbesserten Integrität der Daten in der Freigabe geopfert wird.
Unix und Oplocks Im Normalfall helfen Oplocks den Windows-Client-Systemen, das gegenseitige Überschreiben von Daten zu vermeiden. Unix-Systeme besitzen ebenfalls Dateisperrungsmechanismen, mit deren Unterstützung Unix-Prozesse zusammenarbeiten können. Wird auf eine Datei, die auf einem Samba-System gespeichert ist, jedoch sowohl von einem Windows-Netzwerk-Client als auch von einem lokalen Unix-Prozess zugegriffen - ohne dass eine zusätzliche Koordination zwischen den beiden Systemen erfolgt -, könnte der Unix-Prozess leicht über einen Oplock hinweggehen.
Manche Unix-Systeme verfügen über verbesserte Kernel, die von Samba verwaltete Windows-Oplocks verstehen. Momentan gibt es eine solche Unterstützung nur in SGI Irix und Linux. Wenn Sie die Oplocks aktiviert lassen und Ihr Unix-System keine Kernel-Oplocks unterstützt, erhalten Sie möglicherweise zerstörte Daten, sobald jemand einen UnixProzess startet, der eine Datei schreibt oder liest, auf die Windows-Benutzer ebenfalls Zugriff haben. Auch hier kann der Parameter veto oplock files angewendet werden, vorausgesetzt, Sie können vorhersagen, welche Samba-Dateien dies betrifft. Nehmen Sie beispielsweise an, die Freigabe [usrfiles] enthält einige ASCII-Textdateien mit der Erweiterung .txt sowie OpenOffice-Dokumente mit der Erweiterung .doc, die sowohl von Unix- als auch von Windows-Benutzern modifiziert werden. Sie können veto oplock files folgendermaßen einsetzen: [usrfiles] veto oplock files = /*.txt/*.doc/
Dies unterdrückt die Anwendung von Oplocks auf .txt- und .doc-Dateien, wodurch die Zwischenspeicherung auf den Clients verhindert wird. Windows- und Unix-Programme können dagegen weiterhin die normalen Dateisperren einsetzen, um ein gleichzeitiges Schreiben der gleichen Datei zu verhindern.
Konfigurationsoptionen für Sperren und Oplocks Sambas Optionen für Sperren und Oplocks sind in Tabelle 8-6 aufgeführt.
Tabelle 8-6 Konfigurationsoptionen für Sperren und Oplocks Option
Parameter
Funktion
Vorgabewert Geltungsbereich
Boolescher Wert
Wenn yes, werden Dateibereichssperren aktiviert.
yes
Freigabe
strict locking
Boolescher Wert
Wenn yes, wird der Zugriff auf eine ganze Datei verwehrt, wenn eine Dateibereichssperre darin existiert.
no
Freigabe
posix locking
Boolescher Wert
Wenn yes, werden Oplocks im lokalen System auf POSIXSperren abgebildet.
yes
Freigabe
Boolescher Wert
Wenn yes, wird die lokale Zwischenspeicherung von Dateien auf dem Client für diese Freigabe aktiviert.
yes
Freigabe
locking
oplocks
Boolescher Wert
Wenn yes, wird signalisiert, dass der Kernel Oplocks unterstützt.
yes
global
Boolescher Wert
Wenn yes, ist es möglich, bei Oplocks auf einen Schreibschutz zurückzugehen.
yes
Freigabe
Boolescher Wert
Wenn yes, wird dem Client mitgeteilt, dass eine Sperre ausgelöst wurde, die Datei wird aber nicht wirklich gesperrt.
no
Freigabe
blocking locks
Boolescher Wert
Erlaubt es demjenigen, der eine Sperre anfordert, zu warten, bis die Sperre gewährt wurde.
yes
Freigabe
veto oplock files
String (Liste mit Dateinamen)
Löst keinen Oplock auf den angegebenen Dateien aus.
keiner
Freigabe
Legt fest, wo verschiedene SambaDateien, einschließlich der Sperren, gespeichert werden.
wie im Sambamakefile angegeben
global
kernel oplocks
level2 oplocks
fake oplocks
String (voll lock qualifizierter directory Pfadname)
locking Über die Option locking wird Samba angewiesen, die Server-seitige Sperrung von Dateibereichen für den Client zu (de)aktivieren. Samba implementiert Server-seitige Bereichssperren mit gewöhnlichen Advisory-Sperren von Unix und hindert damit andere Prozesse daran, die gesperrten Dateibereiche zu überschreiben (sofern sich die UnixProzesse korrekt verhalten). Diese Option kann in einer Freigabe folgendermaßen festgelegt werden: [accounting] locking = yes
Wenn der Wert der locking-Option auf yes gesetzt ist, werden Anfragen so lange verzögert, bis der Besitzer einer Sperre sie aufhebt (oder aber sie abstürzt). Wenn Sie den Wert dieser Option auf no setzen, benutzt Samba für die Dateien dieser Freigabe keine Bereichssperren, aber Sperrversuche und Aufhebungen scheinen für den Client zu gelingen. Der Wert dieser Option beträgt standardmäßig yes. Sie können die Option
für schreibgeschützte Datenträger deaktivieren. strict locking Diese Option prüft bei jedem Dateizugriff, ob eine Bereichssperrung aktiv ist. Das ist normalerweise nicht notwendig, wenn ein Client sich an die verwendeten Sperrmechanismen hält, deshalb beträgt der Wert standardmäßig no; Sie können ihn aber für jede gewünschte Freigabe ändern: [accounting] strict locking = yes
Wenn der Wert dieser Option yes ist, sperrt Samba Dateien mit Bereichssperren vollständig. posix locking Auf Systemen, die POSIX-Sperren unterstützen, bildet Samba automatisch Oplocks auf POSIX-Sperren ab. Dieses Verhalten kann mit posix locking = no deaktiviert werden. Es sollte aber niemals notwendig sein, das vorgegebene Verhalten, also posix locking = yes, zu ändern. oplocks Diese Option aktiviert oder deaktiviert die Unterstützung für Oplocks auf dem Client. Sie ist standardmäßig aktiviert. Sie können sie jedoch mit dem folgenden Befehl deaktivieren: [data] oplocks = no
Wenn Ihr Netzwerk extrem instabil ist oder Sie viele Clients verwenden, die Oplocks nicht unterstützen, kann es sinnvoll sein, diese Samba-Funktion abzuschalten. Deaktivieren Sie Oplocks, wenn Benutzer sowohl von SMB-Clients als auch von UnixAnwendungen (wie vi ) auf die gleichen Dateien zugreifen, es sei denn, Sie haben das Glück, dass Ihr Host-Betriebssystem Kernel-Oplocks unterstützt (siehe weiter oben). kernel oplocks Wenn eine Unix-Anwendung auf dem Samba-Host-System (die nicht Teil der SambaSuite ist) versucht, eine Datei zum Schreiben zu öffnen, die Samba für einen WindowsClient mit einem Oplock belegt hat, wird sie damit wahrscheinlich Erfolg haben (je nach verwendetem Betriebssystem), und sowohl Samba als auch der Client werden es nie merken. Einige Versionen von Unix bieten Unterstützung für Oplocks im Kernel, wodurch sie mit Sambas Oplocks klarkommen. In diesem Fall wird der Unix-Prozess suspendiert, der versucht, die Datei zu öffnen, während Samba den Client anweist, seine Kopie zu speichern. Anschließend erlaubt das Betriebssystem das Öffnen, um den Vorgang abzuschließen. Zum Zeitpunkt der Drucklegung dieses Buches boten nur SGI Irix und
Linux diese Funktion. level2 oplocks Windows NT/2000/XP-Clients können Ihre Lese/Schreib-Oplocks in SchreibschutzOplocks umwandeln, wenn ein anderer Client die gleiche Datei öffnet. Die Folge sind deutliche Verbesserungen der Leistung für Dateien, die selten oder gar nicht geschrieben werden - das gilt vor allem für ausführbare Dateien -, da alle Clients dann einen lesbaren Cache für die Datei haben. Standardmäßig ist level2 oplocks auf yes gesetzt. Vermutlich müssen Sie diesen Vorgabewert auch nicht ändern. Momentan unterstützt Samba keine Level-2-Oplocks zusammen mit Kernel-Oplocks und deaktiviert Level-2-Oplocks automatisch, wenn Kernel-Oplocks verwendet werden. (In künftigen Ausgaben kann sich das ändern, da von den Samba-Entwicklern eine bessere Unterstützung für Oplocks geplant ist.) Wenn Sie Samba auf einem HostSystem ausführen, das Kernel-Oplocks unterstützt, müssen Sie kernel oplocks = no einstellen, um die Unterstützung für Level-2-Oplocks zu aktivieren. Das Deaktivieren von Oplocks mit oplocks = no deaktiviert auch Level-2-Oplocks. Samba erkennt die Unterstützung seines Unix-Hosts für Kernel-Oplocks automatisch und setzt auch den Wert der Option kernel oplocks automatisch. Sie müssen diese Option in Ihrer Samba-Konfigurationsdatei niemals selbst einstellen. fake oplocks Wenn diese Option auf yes gesetzt ist, gibt Samba vor, Oplocks zuzulassen, unterstützt sie aber nicht wirklich. Ist diese Option auf einer schreibgeschützten Freigabe (wie etwa einem freigegebenen CD-ROM-Laufwerk) aktiv, wird allen Clients mitgeteilt, dass diese Dateien für opportunistische Sperren zur Verfügung stehen. Sie werden nie vor gleichzeitigem Zugriff gewarnt. Als Ergebnis speichern Windows-Clients größere Mengen der Daten der Datei in ihrem Cache und bieten dadurch eine bessere Leistung. Diese Option wurde hinzugefügt, bevor es die Samba-Unterstützung für opportunistische Sperren gab. Inzwischen wird es im Allgemeinen als günstiger angesehen, echte Oplocks zu benutzen. Aktivieren Sie fake oplocks niemals auf einer Lese/Schreib-Freigabe. blocking locks Samba unterstützt außerdem Blocking Locks, eine kleine Variante der Bereichssperren. Falls der gesperrte Dateibereich nicht verfügbar ist, gibt der Client einen Zeitraum an, den er zu warten bereit ist. Der Server legt die Sperranforderung daraufhin in einem Cache-Speicher ab, prüft regelmäßig, ob die Datei verfügbar ist, und benachrichtigt bei einem positiven Ergebnis den Client. Falls die Wartezeit abläuft, teilt Samba dem Client mit, dass die Anforderung fehlgeschlagen ist. Diese Vorgehensweise verhindert, dass der Client ständig nachfragt, ob er eine Sperre einrichten kann. Sie können die Option in einer Freigabe folgendermaßen deaktivieren: [accounting] blocking locks = no
Ist die Option auf yes gesetzt, werden auf der Datei Blocking Locks erzwungen. Bei einem Optionswert von no verhält sich Samba so, als wären auf der Datei die normalen Sperrmechanismen in Gebrauch. Der Vorgabewert ist yes. veto oplock files Sie können mit der Option veto oplock files eine Liste mit Dateinamen angeben, für die Samba niemals Oplocks zulassen soll. Dies legen Sie global oder auf Freigabeebene fest, zum Beispiel: veto oplock files = /*.bat/*.htm/
Der Wert dieser Option besteht aus einer Reihe von Mustern. Jedes Muster muss mit einem Schrägstrich ( / ) beginnen, enden oder von anderen Mustern getrennt sein, auch wenn nur ein Muster vorhanden ist. Sternchen repräsentieren null oder mehr Zeichen, Fragezeichen dienen als Platzhalter für genau ein Zeichen. Wir empfehlen Ihnen, Oplocks für Dateien zu deaktivieren, die von Unix aktualisiert werden oder von mehreren Prozessen gleichzeitig verwendet werden sollen. lock directory Diese Option (manchmal auch lock dir geschrieben) gibt das Verzeichnis an, in dem Samba Vermerke für SMB-Deny-Mode-Sperren ablegen soll. Samba speichert dort auch andere Dateien wie Suchlisten und die Datei für gemeinsam genutzten Speicher. Wenn WINS aktiviert ist, werden Sie im angegebenen Verzeichnis auch die WINS-Datenbank vorfinden. Die Voreinstellung für diese Option wird in der make-Datei gesetzt und lautet üblicherweise /usr/local/samba/var/locks. Sie können diesen Wert folgendermaßen überschreiben: [global] lock directory = /usr/local/samba/locks
Normalerweise müssen Sie diese Option nicht außer Kraft setzen, es sei denn, Sie wollen die Sperrdateien an eine Stelle verschieben, die eher dafür vorgesehen ist, wie etwa /var/spool/locks.
Verbindungsskripten Samba unterstützt einen Mechanismus namens Verbindungsskripten (Connection Scripts), durch den Befehle auf dem Server ausgeführt werden können, sobald ein Client sich an einer Freigabe anmeldet oder die Verbindung später wieder beendet. Mit Hilfe der Variablen der Konfigurationsdatei sowie einiger eigener Programmierarbeiten können Sie Verbindungsskripten herstellen, die eine ganze Reihe von Funktionen übernehmen. Als einfaches Beispiel sehen Sie hier eine schnell »zusammengeschusterte« Methode zur Echtzeitüberwachung von Verbindungen zu Freigaben auf einem Samba-Server. Zuerst wird der Wert des Parameters preexec folgendermaßen gesetzt: [global]
preexec = /bin/echo %u at %m connected to //%L/%S on %T >>/tmp/ smblog
Damit werden Informationen über den Benutzer und die Verbindung in die Datei /tmp/ smblog geschrieben, sobald sich ein Client an einer Freigabe anmeldet. Um zu beobachten, wie die Clients die Verbindung herstellen, führen Sie folgenden Befehl aus: $ tail -f /tmp/smblog jay at maya connected to //toltec/data on 2002/11/21 21:21:15 david at apache connected to //toltec/techs on 2002/11/21 21:21:57 sally at seminole connected to //toltec/payroll on 2002/11/21 21:22:16 martha at dine connected to //toltec/profiles on 2002/11/21 21:23:38 martha at dine connected to //toltec/netlogon on 2002/11/21 21:23:39 martha at dine connected to //toltec/martha on 2002/11/21 21:23:40 aaron at huastec connected to //toltec/netlogon on 2002/11/21 21:24:19 aaron at huastec connected to //toltec/aaron on 2002/11/21 21:24:20
Mit der Option -f überwacht der Befehl tail die Datei /tmp/smblog und ergänzt die Ausgabe, wenn neue Daten an die Datei angehängt werden. Jedes Mal, wenn eine neue Verbindung hergestellt wird, wird eine weitere Zeile ausgegeben, die die Ausgabe des Befehls preexec zeigt. Schauen Sie sich die Zeilen an, die von den Verbindungen der Benutzer martha und aaron stammen. Die Benutzerin martha hat sich an der Domäne von einem Windows NT-Client aus angemeldet, der auf die Freigabe [profiles] zugegriffen hat, um ihr Profil herunterzuladen, anschließend auf die Freigabe [netlogon], um das Anmeldeskript zu lesen, und dann auf ihr Home-Verzeichnis (da das Anmeldeskript den Befehl net use H: /home enthält), um ihr Home-Verzeichnis mit dem Laufwerkbuchstaben H zu verbinden. Die Verbindungen von aaron sind ähnlich, nur dass er von einem Windows 98-System kommt, das die Freigabe [profiles] nicht benutzt. (In Kapitel 4 finden Sie weitere Informationen über Domänen-Anmeldungen.) Ein komplexerer Anwendungsfall für Verbindungsskripten ist die Überwachung des Inhalts der Home-Verzeichnisse der Benutzer und/oder der freigegebenen Verzeichnisse und die Überprüfung, ob alle lokalen administrativen Regeln eingehalten werden. Zu den überprüften Elementen könnten gehören: ●
● ● ●
Benutzung der Festplatten auf Freigabebasis, auf Verzeichnisbasis oder auf Dateibasis Arten der auf dem Server gespeicherten Dateien ob die Dateinamen den Richtlinien zur Benennung folgen ob Viren sich auf den Samba-Server kopiert haben
Für diese Art von Aufgabe würde ein Shell-Skript oder ein anderes Programm geschrieben werden, das die Überprüfungen durchführt und die entsprechenden Aktionen auslöst, beispielsweise das Löschen störender Dateien. Der Parameter root preexec würde eingesetzt werden, um den Befehl als root-Benutzer auszuführen, wobei die Argumente über Variablen aus der Konfigurationsdatei übergeben werden.
Ein Beispiel: [homes] root preexec = admin_checks %S root preexec close = yes
In diesem Beispiel wird ein speziell geschriebenes administratives Prüfprogramm (admin_checks) verwendet, um die Home-Verzeichnisse der Benutzer auf dem SambaServer zu überwachen. Die Variable %S übergibt den Namen des Home-Verzeichnisses an das Skript. Der Parameter root preexec close wurde auf yes gesetzt. Wenn also admin_checks eine ernsthafte Verletzung der lokalen Regeln entdeckt, kann es sich mit einem Exit-Status ungleich null beenden, und der Client wird davon abgehalten, eine Verbindung aufzubauen.
Optionen für Verbindungsskripten Tabelle 8-7 stellt einige der Konfigurationsoptionen für Verbindungsskripten vor.
Tabelle 8-7 Optionen für Verbindungsskripten Option
root preexec
root preexec close
preexec (exec)
preexec close
Parameter
Funktion
Vorgabewert Geltungsbereich
String (UnixBefehl)
Legt einen UnixBefehl fest, der als root ausgeführt wird, bevor eine Verbindung zur Freigabe hergestellt wird.
keiner
Freigabe
Boolescher Wert
Wenn yes, sorgt ein Exit-Status ungleich null des Befehls root preexec für einen Verbindungsabbau.
no
Freigabe
String (UnixBefehl)
Legt einen UnixBefehl fest, der als Benutzer ausgeführt wird, bevor eine Verbindung zur Freigabe hergestellt wird.
keiner
Freigabe
Boolescher Wert
Wenn yes, sorgt ein Exit-Status ungleich null des Befehls preexec für einen Verbindungsabbau.
no
Freigabe
postexec
root postexec
String (UnixBefehl)
Legt einen UnixBefehl fest, der als Benutzer ausgeführt wird, nachdem eine Verbindung zur Freigabe abgebrochen wurde.
keiner
Freigabe
String (UnixBefehl)
Legt einen UnixBefehl fest, der als root ausgeführt wird, nachdem eine Verbindung zur Freigabe abgebrochen wurde.
keiner
Freigabe
root preexec Diese Option gibt als ihren Wert einen Unix-Befehl an, der als root-Benutzer ausgeführt wird, bevor der Verbindungsaufbau zu einer Freigabe vollständig erfolgt ist. Sie sollten diese Option speziell für die Ausführung von Aktionen nutzen, die root-Rechte erfordern. Um die Sicherheit zu gewährleisten, dürfen Benutzer niemals in der Lage sein, das Ziel des Befehls root preexec zu verändern. Darüber hinaus werden alle Informationen, die der Befehl an die Standardausgabe sendet, abgewiesen, es sei denn, Sie leiten sie ausdrücklich dorthin. Falls Sie vorhaben, ein preexec- oder postexec-Skript einzusetzen, müssen Sie sicherstellen, dass es richtig funktioniert, bevor Sie es durch Samba starten lassen. root preexec close Manchmal soll die Verbindung zur Freigabe abgebrochen werden, wenn das root preexec-Skript fehlschlägt. Der Client erhält also statt einer Verbindung eine Fehlermeldung. Falls Sie beispielsweise root preexec verwenden, um eine CD-ROM oder ein Dateisystem zu mounten, wäre es sinnlos, eine Verbindung zum Client herzustellen, wenn das Mounten nicht funktioniert hat. Wenn Sie root preexec close = yes angeben, gibt es keine Verbindung zur Freigabe, falls das root preexec-Skript einen Exit-Status ungleich null liefert. preexec Diese Option, manchmal auch nur als exec bezeichnet, definiert einen einfachen, nichtprivilegierten Befehl, der von Samba als der Benutzer ausgeführt wird, den die Variable %u bezeichnet. Mit dieser Option können Sie beispielsweise eine Protokollierung durchführen: [homes] preexec = echo "%u connected from %m (%I)\" >>/tmp/.log
Sie müssen die Standardausgabe des Befehls umleiten, wenn Sie ihn benutzen wollen; ansonsten wird er abgewiesen. Diese Warnung gilt auch für die Standardfehlerausgabe des Befehls. Falls Sie ein preexec-Skript benutzen wollen, müssen Sie sicherstellen,
dass es richtig funktioniert, bevor Sie es durch Samba ausführen lassen. preexec close Diese Option ähnelt root preexec close, nur eben im Zusammenhang mit der Option preexec. Wenn Sie preexec close = yes setzen, verursacht ein preexec-Skript, das einen Exit-Status ungleich null zurückliefert, den sofortigen Abbau der Verbindung zur Freigabe. postexec Sobald der Benutzer sich von der Freigabe abmeldet, wird der mit postexec angegebene Befehl als der Benutzer auf dem Samba-Server ausgeführt, um notwendige Aufräumarbeiten zu erledigen. Diese Option ist im Prinzip identisch mit der Option preexec. Denken Sie auch hier daran, dass der Befehl unter der Benutzerkennung durchgeführt wird, die durch %u repräsentiert wird, und dass alle Informationen, die auf die Standardausgabe gehen, ignoriert werden. root postexec Nach der Option postexec wird der Befehl root postexec ausgeführt, falls einer festgelegt wurde. Auch diese Option legt als ihren Wert einen Unix-Befehl fest, der als root-Benutzer ausgeführt wird, bevor die Verbindung zu einer Freigabe beendet wird. Sie sollten diese Option speziell für die Ausführung von Aktionen nutzen, die rootRechte erfordern.
Microsoft Distributed Filesystems In einem großen Netzwerk, in dem viele freigegebene Ordner über viele Server verstreut sind, kann es für die Benutzer schwierig sein, die gewünschten Ressourcen zu finden. Das Durchsuchen der Netzwerkumgebung wird zu einer Qual anstatt zu einer Zeit sparenden Bequemlichkeit. Um dieses Problem zu entschärfen, hat Microsoft das Filesharing um das so genannte Distributed filesystem (Dfs; Verteiltes Dateisystem) erweitert. Mittels Dfs ist es möglich, Dateifreigaben im Netzwerk so zu organisieren, dass sie für die Benutzer wie ein einziger Verzeichnisbaum auf einem einzigen Server aussehen, unabhängig davon, auf welchen Servern im Netzwerk tatsächlich die Ressourcen enthalten sind. Benutzer müssen nicht das ganze Netzwerk durchsuchen, sondern können sich direkt zur Dfs-Freigabe begeben und ihre Daten dort viel leichter auffinden. Dfs kann auch Administratoren helfen, weil es eine Art von Zwischenstation zwischen dem Namen eines freigegebenen Ordners und seinem tatsächlichen Standort bietet. Die Dfs-Freigabe enthält Verweise auf Ressourcen im Netzwerk. Wird auf eine Ressource zugegriffen, leitet der Dfs-Server den Client an den eigentlichen Server der Ressource weiter. Werden Ressourcen auf einen anderen Computer verschoben, kann der Verweis auf die Ressource in der Dfs-Freigabe in einem Schritt auf den neuen Ablageort umgeleitet werden. Die Änderung erfolgt für die Benutzer völlig transparent. Bis zu einem bestimmten Maß kann Dfs auch die Leistung für schreibgeschützte Freigaben verbessern, weil es einen Lastausgleich bietet. Es ist möglich, eine DfsReferenz so einzustellen, dass sie auf identische Freigaben auf zwei oder mehr Servern verweist. Der Dfs-Server teilt die Anfragen - und entsprechend auch die Client-Last dann zwischen den Servern auf. Dies funktioniert allerdings nur für statische, schreibgeschützte Daten einigermaßen gut, da es in Dfs keine Vorrichtung zur Synchronisierung zwischen den Servern gibt, wenn auf einem von ihnen Änderungen
vorgenommen werden.
Windows Dfs-Clients Moderne Versionen von Windows bieten Client-seitige Unterstützung für Dfs. Es ist keine weitere Konfiguration erforderlich. Für ältere Versionen ist die Unterstützung allerdings etwas eingeschränkt. Windows for Workgroups kann überhaupt nicht als DfsClient arbeiten. Windows NT 4.0 muss wenigstens auf Service Pack 3 aufgerüstet werden, um als Dfs-Client zu agieren, außerdem muss der Dfs Client installiert werden. Spätere Service Packs (wie etwa Service Pack 6) enthalten den Dfs Client. Bei Windows 95 muss ebenfalls die Dfs Client-Software installiert werden, damit es als Dfs-Client arbeiten kann. Ohne das Programm Dfs Client wird beim Doppelklicken auf einen entfernten Ordner in einer Dfs-Freigabe ein leerer Ordner angezeigt, und es gibt keine Fehlermeldung.
Um das Programm Dfs Client für Windows 95 oder Windows NT benutzen zu können, müssen Sie es zuerst herunterladen und installieren. Auf der Webseite http://microsoft.com/ntserver/nts/ downloads/winfeatures/NTSDistrFile/default.asp finden Sie einen Link zum Herunterladen des Installationsprogramms sowie Anweisungen zur Installation von Dfs Client.
Samba für Dfs konfigurieren Damit Samba 2.2 als Dfs-Server arbeiten kann, muss es mit der Konfigurationsoption --with-msdfs kompiliert werden. (In Kapitel 2 finden Sie Anweisungen zum Konfigurieren und Kompilieren von Samba.) Samba 3.0 enthält standardmäßig DfsUnterstützung und muss nicht mit --with-msdfs kompiliert werden. Sobald ein Dfs-fähiger Samba-Server läuft, sind es nur noch zwei Schritte bis zum Anbieten einer Dfs-Freigabe. Zuerst richten Sie ein Dfs-root-Verzeichnis auf dem Server ein, und anschließend ändern Sie die Konfigurationsdatei smb.conf so, dass die Freigabe aktiviert wird. Das Dfs-root-Verzeichnis einrichten Legen Sie zunächst ein Verzeichnis an, das als Dfs-root fungiert: # mkdir /usr/local/samba/dfs
Das kann jedes beliebige Verzeichnis sein, es ist nur wichtig, dass es root gehört und die richtigen Berechtigungen besitzt: # chown root:root /usr/local/samba/dfs
# chmod 755 /usr/local/samba/dfs
Der Dfs-Verzeichnisbaum darf Unterverzeichnisse und Dateien haben, genau wie jedes andere freigegebene Verzeichnis. Diese Elemente funktionieren genau so, wie sie es in jeder anderen Freigabe tun würden, das heißt, sie erlauben Clients den Zugriff auf Verzeichnisse und Dateien auf dem Samba-Server. Der eigentliche Gedanke hinter Dfs besteht aber darin, die Freigaben auf anderen Servern zu sammeln, indem Referenzen darauf im Dfs-Baum angelegt werden. Die Art und Weise, wie dies in Samba implementiert ist, beruht auf dem cleveren Einsatz symbolischer Links, die sich im Dfsroot-Verzeichnis oder in einem Unterverzeichnis des Dfs-Baums befinden können. Sie sind vermutlich mit dem Einsatz symbolischer Links zum Anlegen von Referenzen auf Dateien vertraut, die im gleichen System existieren und möglicherweise die Grenzen des lokalen Dateisystems überschreiten (was normale Unix-Links nicht können). Aber vermutlich haben Sie bisher nicht gewusst, dass symbolische Links eine viel allgemeinere Funktionalität aufweisen. Wir können zwar ihren Inhalt im Gegensatz zu einer Text- oder Binärdatei nicht direkt anzeigen, aber ein symbolischer Link »enthält« einen ASCII-Text-String, der angibt, worauf der Link verweist. Schauen Sie sich beispielsweise das Listing für diese symbolischen Links an: $ ls -l wrdlnk alnk lrwxrwxrwx dict/words
1 jay
jay
lrwxrwxrwx
1 jay
jay
15 Mar 14 06:50 wrdlnk -> /usr/
9 Mar 14 06:53 alnk -> dreamtime
Wie Sie aus der Größe des Links wrdlnk (15 Bytes) schließen können, ist der String / usr/dict/words darin kodiert. Der Link alnk (9 Bytes) ist noch kleiner und entspricht dem kürzeren Namen von dreamtime. Jetzt wollen Sie für eine SMB-Freigabe einen Link in Ihrer Dfs-root anlegen: # cd /usr/local/samba/dfs # ln -s 'msdfs:maya\e' maya-e # ls -l maya-e lrwxrwxrwx maya\e
1 root
root
12 Mar 13 17:34 maya-e -> msdfs:
Dieser Link könnte in einem Verzeichnis-Listing als »broken« Link angezeigt werden, da er auf etwas verweist, das keine Datei im lokalen System ist. Der Befehl file würde zum Beispiel Folgendes ausgeben: $ file maya-e maya-e: broken symbolic link to msdfs:maya\e
maya-e ist jedoch eine gültige Referenz auf die Freigabe \\maya\e, wenn die DfsUnterstützung von Samba zum Einsatz kommt. Wenn Samba diese Datei entdeckt,
sieht es das einleitende msdfs: und interpretiert den Rest als den Namen einer entfernten Freigabe. Der Client wird dann an die entfernte Freigabe weitergeleitet. Beim Anlegen von Links im Dfs-root-Verzeichnis verwenden Sie einfach das gleiche Format, das im Allgemeinen msdfs:server\freigabe lautet. Beachten Sie, dass dies ähnlich einem UNC ist, der an den String msdfs: angehängt wird. Allerdings werden in diesem Fall die beiden Backslashes, die dem Namen des Servers vorangestellt sind, weggelassen.
Die Namen für die symbolischen Links in Dfs-Freigaben müssen in Kleinbuchstaben geschrieben werden. Zusätzlich zu den normalen Netzwerkfreigaben können Sie symbolische Links dieser Art verwenden, um auf Dfs-Freigaben auf anderen Dfs-Servern zu verweisen. Das Referenzieren von Druckerfreigaben dagegen funktioniert nicht. Dfs eignet sich nur zum Freigeben von Dateien. Lastausgleich Um eine Dfs-Freigabe zum Lastausgleich einzurichten, legen Sie einen solchen symbolischen Link an: # ln -s 'msdfs:toltec\data,msdfs:mixtec\data' lb-data
Das heißt, verwenden Sie als Referenz einfach eine Liste mit Freigaben, die durch Kommata getrennt sind. Denken Sie immer daran, dass es an Ihnen liegt, dafür zu sorgen, dass die freigegebenen Ordner identisch bleiben. Stellen Sie die Berechtigungen auf den Servern so ein, dass die Freigaben von den Benutzern nur gelesen werden können. Zuletzt müssen Sie noch in der Datei smb.conf die Dfs-root-Freigabe definieren und DfsUnterstützung hinzufügen. Die Dfs-root wird in Form einer Freigabe-Definition angelegt: [dfs] path = /usr/local/samba/dfs msdfs root = yes
Sie können für die Freigabe einen beliebigen Namen verwenden. Der Pfad verweist auf das gerade von Ihnen eingerichtete Dfs-root-Verzeichnis. Der Parameter msdfs root = yes teilt Samba mit, dass es sich bei dieser Freigabe um eine Dfs-root handelt. Um die Unterstützung für Dfs im Server zu aktivieren, müssen Sie eine Zeile in den
Abschnitt [global] einfügen: [global] host msdfs = yes
Starten Sie die Samba-Daemons neu - oder warten Sie eine Minute, bis diese die Konfigurationsdatei neu eingelesen haben -, und Sie sehen die neue Freigabe von den Windows-Clients aus. Falls es Probleme bereitet, auf eine der entfernten Freigaben in der Dfs-Freigabe zuzugreifen, prüfen Sie noch einmal Ihre symbolischen Links, um sicherzugehen, dass diese richtig angelegt wurden.
Falls Sie zuvor bereits einmal eine Freigabe hatten, die den gleichen Namen wie Ihre Dfs-Freigabe trug, müssen Sie eventuell die Windows-Clients neu starten, bevor diese auf die Freigabe als DfsFreigabe zugreifen können.
Mit NIS arbeiten In Netzwerken, in denen NIS und NFS verwendet werden, ist es üblich, dass die HomeVerzeichnisse der Benutzer durch NFS über das Netzwerk gemountet werden. Wenn ein Samba-Server, der zum Authentifizieren der Benutzeranmeldungen eingesetzt wird, auf einem System mit NFS-gemounteten Home-Verzeichnissen läuft, die mit einer [homes]Freigabe freigegeben werden, kann der zusätzliche Overhead eine schlechte Leistung zur Folge haben - und zwar ungefähr 30 Prozent der normalen Samba-Geschwindigkeit. Samba besitzt die Fähigkeit, mit NIS und NIS+ zu arbeiten, um den Server zu ermitteln, auf dem die Home-Verzeichnisse sich tatsächlich befinden, so dass sie direkt von diesem Server aus freigegeben werden können. Damit dies funktioniert, muss auf dem Server, auf dem sich die Home-Verzeichnisse befinden, ebenfalls Samba laufen und eine eigene [homes]-Freigabe vorhanden sein.
NIS-Konfigurationsoptionen Tabelle 8-8 stellt die NIS-Konfigurationsoptionen zum Einrichten von Benutzern vor.
Tabelle 8-8 NIS-Optionen Option
Parameter
Funktion
Vorgabewert Geltungsbereich
nis homedir
homedir map
Boolescher Wert
Wenn yes, wird NIS an Stelle von / etc/passwd verwendet, um den Pfad des HomeVerzeichnisses eines Benutzers zu suchen.
no
global
String (NISMap-Name)
Legt die NIS-Map fest, in der nach dem HomeVerzeichnis eines Benutzers gesucht werden soll.
keiner
global
nis homedir, homedir map Die Optionen nis homedir und homedir map sind für Samba-Server in Netzwerken gedacht, in denen die Unix-Home-Verzeichnisse über NFS, den Automounter und NIS bereitgestellt werden. Die Option nis homedir zeigt an, dass der Home-Verzeichnis-Server für die Benutzer im NIS nachgesehen werden muss. Die Option homedir map teilt Samba mit, in welcher NIS-Map der Server gesucht werden soll, auf dem das Home-Verzeichnis des Benutzers liegt. Der Server muss ein Samba-Server sein, damit der Client eine SMB-Verbindung dorthin aufbauen kann, und auf den anderen Samba-Servern muss NIS installiert sein, damit sie einen Lookup ausführen können. Falls beispielsweise der Benutzer joe nach einer Freigabe namens [joe] fragt und die Option nis homedir auf yes gesetzt ist, schaut Samba in die Datei, die durch homedir map für ein Home-Verzeichnis für joe angegeben ist. Findet es eines, liefert Samba den entsprechenden Systemnamen an den Client zurück. Der Client versucht dann, eine Verbindung zu dieser Maschine herzustellen und die Freigabe von dort zu beziehen. Das Aktivieren von NIS-Lookups sieht in etwa so aus: [globals] nis homedir = yes homedir map = amd.map
1Das
Optionsfeld für System ist vermutlich für Ihre Datei grau dargestellt. Keine Sorge, Sie sehen trotzdem, wenn dieses Bit aktiviert ist und wenn nicht.
Kapitel 9 Benutzer und Sicherheit In diesem Kapitel befassen wir uns mit den grundlegenden Konzepten der Sicherheit in Samba. Ziel ist es, Ihren Samba-Server mit den Sicherheitsrichtlinien auszustatten, die für Ihr Netzwerk geeignet sind. Eine der kompliziertesten Aufgaben bei Samba besteht darin, die Sicherheitsmodelle von Unix- und Windows-Systemen in Einklang zu bringen. Samba muss Benutzer identifizieren, indem es sie mit gültigen Benutzernamen und Gruppen verknüpft und sie über die Kennwörter authentifiziert. Anschließend muss es den Zugriff der Benutzer auf die Ressourcen kontrollieren, indem es ihre Zugriffsrechte mit den Berechtigungen auf den Dateien und Verzeichnissen vergleicht. Das sind für sich genommen schon komplizierte Themen. Dabei wird alles noch schwieriger durch die Tatsache, dass drei unterschiedliche Betriebssystemarten an der Angelegenheit beteiligt sind (Unix, Windows 95/98/Me und Windows NT/2000/XP) und Samba mehrere Methoden zur Benutzerauthentifizierung unterstützt.
Benutzer und Gruppen Lassen Sie uns so simpel wie möglich beginnen und Unterstützung für einen einzigen Benutzer hinzufügen. Das Einfachste ist es, für die betreffende Person einen UnixBenutzerzugang (und ein Home-Verzeichnis) auf dem Server einzurichten und Samba die Existenz des Benutzers mitzuteilen. Dazu können Sie eine Verzeichnisfreigabe erstellen, die in der Samba-Konfigurationsdatei auf das HomeVerzeichnis des Benutzers abgebildet wird, und den Zugriff darauf mit der Option valid users auf diesen Benutzer beschränken. Zum Beispiel: [dave] path = /home/dave comment = Home-Verzeichnis von Dave writable = yes valid users = dave
Die Option valid users führt die Benutzer auf, die auf die Freigabe zugreifen dürfen. In diesem Fall handelt es sich dabei ausschließlich um den Benutzer dave. Manchmal ist es möglich, allen Benutzern den Zugriff auf eine Freigabe zu gewähren. Dazu verwendet man den Parameter guest ok. Da wir den Gastzugriff nicht wünschen, haben wir diese Option weggelassen. Wenn Sie sowohl authentifizierten Benutzern als auch Gastbenutzern den Zugriff auf die gleiche Freigabe erlauben, können Sie diese Dateien mit Leseberechtigungen für »andere« Benutzer ausstatten, während Sie den Zugriff auf andere Dateien auf bestimmte Benutzer oder Gruppen begrenzen. Wenn Client-Benutzer auf eine Samba-Freigabe zugreifen, müssen sie zwei
Sicherheitsstufen überwinden. Unix-Berechtigungen auf Dateien und Verzeichnisse gelten wie üblich. Außerdem werden die Konfigurationsparameter angewendet, die in der Samba-Konfigurationsdatei festgelegt wurden. Mit anderen Worten: Ein Client muss zuerst die Sicherheitsmechanismen von Samba durchlaufen (z.B. Authentifizierung mit gültigem Benutzernamen und gültigem Kennwort, Überprüfung mit den Parametern valid users und read only usw.) und dann noch die normalen Unix-Datei- und Verzeichnisberechtigungen seines Unix-seitigen Benutzers zu seinen Gunsten vorfinden, bevor er Lese- und Schreibzugriff auf eine Freigabe erhalten kann. Vielleicht erinnern Sie sich, dass Sie das Home-Verzeichnis mit der Variablen %H abkürzen können. Zudem können Sie in diesen Optionen die Variable %u für den Unix-Benutzernamen und/oder %U für den Client-Benutzernamen verwenden, wie zum Beispiel in folgenden Zeilen: [dave] comment = %U Home-Verzeichnis writable = yes valid users = dave path = %H
Wenn ein einziger Benutzer auf ein Home-Verzeichnis zugreift, werden die Zugriffsberechtigungen in dem Moment beachtet, in dem das Betriebssystem den Benutzerzugang einrichtet. Das Home-Verzeichnis gehört dem Benutzer, und die Berechtigungen werden entsprechend eingestellt. Wenn Sie jedoch ein Verzeichnis für eine Gruppe von Benutzern freigeben wollen, müssen Sie einige weitere Schritte ausführen. Lassen Sie uns eine Gruppenfreigabe für die Buchhaltungsabteilung in der Datei smb.conf herausgreifen: [accounting] comment = Accounting Department Directory writable = yes valid users = @account path = /home/samba/accounting create mode = 0660 directory mode = 0770
Der erste Unterschied besteht darin, dass wir an Stelle eines oder mehrerer einzelner Benutzernamen @account als gültigen Benutzer angegeben haben. Dabei handelt es sich um eine abgekürzte Schreibweise dafür, dass die gültigen Benutzer durch die Unix-Benutzergruppe account repräsentiert werden. Sie müssen diese Benutzer dem group-Eintrag account in der Systemgruppendatei (meist /etc/ group) hinzufügen, damit sie als Teil der Gruppe angesehen werden. Dann erkennt
Samba die Benutzer als gültige Benutzer für diese Freigabe. Außerdem müssen Sie ein freigegebenes Verzeichnis erstellen, auf das die Mitglieder dieser Gruppe zugreifen dürfen. Die Option path verweist auf dieses Verzeichnis. Die folgenden Unix-Befehle erstellen das freizugebende Verzeichnis für die Buchhaltungsabteilung (unter der Voraussetzung, dass /home/samba bereits besteht): # mkdir /home/samba/accounting # chgrp account /home/samba/accounting # chmod 770 /home/samba/accounting
In dieser Beispieldatei smb.conf finden Sie zwei weitere Optionen, die wir im vorigen Kapitel besprochen haben, nämlich create mode und directory mode. Diese Optionen legen die maximal möglichen Berechtigungen für neue Dateien und Verzeichnisse fest. In unserem Beispiel haben wir dem Rest der Welt den Zugriff auf den Inhalt dieser Freigabe vollständig verwehrt (dies wird, wie bereits gezeigt, durch den Befehl chmod erzwungen).
Mehrere Einzelbenutzer einrichten Lassen Sie uns für einen Augenblick zu den Benutzerfreigaben zurückkehren. Wenn Sie für mehrere Benutzer Home-Verzeichnis-Freigaben einrichten wollen, sollten Sie die besondere Freigabe [homes] einsetzen, die wir in Kapitel 8 eingeführt haben. Mit der Freigabe [homes] müssen Sie nur noch Folgendes festlegen: [homes] browsable = no writable = yes
Die Freigabe [homes] ist ein spezieller Abschnitt der Samba-Konfigurationsdatei. Wenn ein Benutzer auf eine gewöhnliche Freigabe zugreifen will, die nicht in der Datei smb.conf steht (zum Beispiel über die direkte Eingabe eines UNC-Namens im Windows-Explorer), sucht Samba zunächst nach dem Abschnitt [homes]. Existiert er, wird der vom Client gewünschte Freigabename als Benutzername angesehen, und Samba sucht ihn in der Unix-Kennwortdatenbank (in der Regel /etc/passwd) des Samba-Servers. Wenn er dort erscheint, nimmt Samba an, dass ein UnixBenutzer eine Verbindung zu seinem Home-Verzeichnis herstellen will. Lassen Sie uns zum besseren Verständnis annehmen, dass sofia versucht, die Freigabe [sofia] auf dem Samba-Server zu verwenden, und dass eine solche Freigabe nicht in der Konfigurationsdatei existiert. Da aber dort der Abschnitt [homes] existiert und sofia in die Kennwortdatenbank eingetragen ist, geht Samba wie folgt vor: 1. Samba erstellt eine neue Verzeichnisfreigabe mit dem Namen [sofia] und dem Pfad, der in der Option path im Abschnitt [homes] angegeben ist. Gibt es
keine path-Option in [homes], verwendet Samba das Home-Verzeichnis der Benutzerin. 2. Samba initialisiert die Optionen der neuen Freigabe mit den Standardwerten in [globals] bzw. mit den Optionen in [homes] (mit Ausnahme von browsable). 3. Samba meldet den Client von sofia an dieser Freigabe an. Der Abschnitt [homes] bietet eine schnelle und problemlose Möglichkeit, Freigaben für Ihre Benutzer zu erstellen, ohne dass Sie Angaben aus der Kennwortdatei abtippen müssten. Über diesen Abschnitt erstellte Freigaben besitzen einige Besonderheiten, die wir nicht unerwähnt lassen dürfen: ●
●
Der Abschnitt [homes] kann jeden Benutzerzugang auf dem Computer repräsentieren, was nicht immer wünschenswert ist. So könnten Sie Freigaben für root, bin, sys, uucp usw. erstellen. (Abhilfe kann hier die globale Option invalid users schaffen.) Die Konfigurationsoption browsable hat eine andere Bedeutung als bei den restlichen Freigaben. Sie gibt lediglich an, dass [homes] nicht in der lokalen Suchliste angezeigt wird, und bezieht sich nicht auf die Freigabe [alice]. Sobald Samba die Freigabe [alice] erstellt hat (beim ersten Versuch eines Clients, eine Verbindung zu ihr aufzubauen), verwendet diese Freigabe den Wert der browsable-Option aus dem Abschnitt [globals] und nicht aus [homes].
Wie bereits erwähnt, müssen Sie im Abschnitt [homes] keinen Pfad angeben, wenn die Benutzer Unix-Home-Verzeichnisse besitzen, die in der Kennwortdatei /etc/ passwd des Servers stehen. Vergewissern Sie sich, dass die dort aufgeführten Benutzer auch wirklich existieren, weil Samba sie nicht automatisch erstellt. Stattdessen verweigert Samba einem Benutzer den Zugriff, wenn es das HomeVerzeichnis eines Benutzers nicht findet oder nicht darauf zugreifen kann.
Zugriff auf Freigaben steuern Sie werden aus Sicherheitsgründen häufig festlegen müssen, welche Benutzer auf eine bestimmte Freigabe zugreifen dürfen. Diese Aufgabe können Sie mit Samba ganz leicht erledigen, da die Software zahlreiche Optionen besitzt, mit denen Sie praktisch jede denkbare Sicherheitskonfiguration in die Tat umsetzen können. Betrachten wir einige verbreitete Konfigurationen, die für Sie möglicherweise in Frage kommen. Sie haben gesehen, was geschieht, wenn Sie gültige Benutzer angeben. Sie können außerdem eine Liste mit ungültigen Benutzern erstellen - mit Benutzern, denen Samba den Zugriff auf seine Freigaben verweigern soll. Verwenden Sie dazu die Option invalid users. Wir haben schon an früherer Stelle auf eine weit verbreitete Einsatzmöglichkeit hingewiesen: den Eintrag dieser Option für diverse Systembenutzer sowie für den Superuser im Abschnitt [homes], um Missbrauch zu verhindern, wie das folgende Beispiel zeigt: [global] invalid users = root bin daemon adm sync shutdown \ halt mail news uucp operator
auto services = dave peter bob
[homes] browsable = no writable = yes
Die Option invalid users akzeptiert - genau wie valid users - Gruppennamen, denen ein at-Zeichen (@) vorangestellt ist, und Benutzernamen. Falls ein Benutzer oder eine Gruppe in beiden Listen vorkommt, hat die Option invalid users Vorrang, und dem Benutzer oder der Gruppe wird der Zugang zur Freigabe verweigert. Am anderen Ende des Spektrums können Sie ausdrücklich Benutzer aufführen, denen Samba den Superuser-(root-)Zugriff auf eine Freigabe gestattet. Dazu verwenden Sie die Option admin users. Hier ein Beispiel: [sales] path = /home/sales comment = Sedona Real Estate Sales Data writable = yes valid users = sofie shelby adilia admin users = mike
Diese Option akzeptiert sowohl Benutzer- als auch Gruppennamen. Außerdem können Sie NIS-Netzgruppen angeben, wenn Sie ihren Namen ein @-Zeichen voranstellen. Wenn Samba die Netzgruppe nicht findet, geht es davon aus, dass Sie eine Unix-Benutzergruppe meinen. Seien Sie vorsichtig, wenn Sie einer ganzen Gruppe administrative Berechtigungen für eine Freigabe erteilen. Das Samba-Team rät dringend davon ab, diese Option einzusetzen, da sie den angegebenen Benutzern und Gruppen den root-Zugriff gewährt. Wenn Sie Benutzern einer Freigabe einen schreibgeschützten oder einen Schreib-/ Lesezugriff gewähren wollen, können Sie dazu die Option read list bzw. write list verwenden. Diese Optionen können auf Freigabeebene dazu verwendet werden, bestimmten Benutzern den Schreibzugriff zu entziehen oder bestimmten Benutzern sowohl Schreib- als auch Lesezugriff zu gewähren, obwohl die Freigabe eigentlich schreibgeschützt ist. Ein Beispiel: [sales]
path = /home/sales comment = Sedona Real Estate Sales Data read only = yes write list = sofie shelby
Die Option write list besitzt keinen Vorrang vor Unix-Berechtigungen. Wenn Sie die Freigabe erstellt haben, ohne dass ein Benutzer über die Schreibberechtigung des Betriebssystems verfügt, kann diesem Benutzer auch über die Option writelist keine Schreibberechtigung erteilt werden.
Gastzugriff Wie wir bereits erwähnt haben, können Sie eine Freigabe mit guest ok = yes so konfigurieren, dass Gastbenutzern der Zugriff gestattet ist. Das funktioniert nur, wenn Sie Sicherheit auf Freigabeebene einsetzen. Auf diese Funktion werden wir später genauer eingehen. Wenn ein Benutzer sich als Gast anmeldet, ist es nicht nötig, sich mit Benutzername und Kennwort zu authentifizieren. Samba braucht dennoch eine Möglichkeit, um den angemeldeten Client mit einem Benutzer im lokalen System zu verknüpfen. Der Parameter guest account kann in der Freigabe eingesetzt werden, um den Unix-Benutzerzugang anzugeben, der Gastbenutzern zugewiesen werden soll, wenn sie sich am Samba-Server anmelden. Die Voreinstellung wird während der Kompilierung festgelegt und ist üblicherweise nobody. Bei den meisten Unix-Versionen funktioniert das ganz gut. Auf einigen Systemen ist es jedoch dem Zugang nobody nicht erlaubt, auf bestimmte Dienste (z. B. das Drucken) zuzugreifen, und Sie müssen für den Gastbenutzer ftp oder einen anderen Zugang festlegen. Wenn Sie ausschließlich Gäste auf eine Freigabe zugreifen lassen wollen, so dass alle Clients Gastberechtigungen erhalten, können Sie die Option guest only in Verbindung mit der Option guest ok verwenden, wie im folgenden Beispiel geschehen: [sales] path = /home/sales comment = Sedona Real Estate Sales Data writable = yes guest ok = yes guest account = ftp guest only = yes
Achten Sie darauf, dass Sie den Wert yes sowohl für guest only als auch für guest ok festlegen, da Samba ansonsten nicht wie gewünscht den Gastzugang benutzt.
Optionen zur Zugriffssteuerung Tabelle 9-1 fasst die Optionen zusammen, mit denen Sie den Zugriff auf Freigaben steuern können.
Tabelle 9-1 Optionen zur Zugriffssteuerung auf Freigabeebene Option
Parameter
Funktion
Vorgabewert Geltungsbereich
admin users
String (Liste mit Benutzernamen)
Benutzer, die Aktionen als root ausführen dürfen.
keiner
Freigabe
valid users
String (Liste mit Benutzernamen)
Benutzer, die sich an einer Freigabe anmelden dürfen.
keiner
Freigabe
invalid users
String (Liste mit Benutzernamen)
Benutzer, denen der Zugriff auf eine Freigabe verweigert wird.
keiner
Freigabe
read list
String (Liste mit Benutzernamen)
Benutzer, die nur Lesezugriff auf eine schreibbare Freigabe haben.
keiner
Freigabe
String (Liste mit Benutzernamen)
Benutzer, die Lese-/ Schreibzugriff auf eine schreibgeschützte Freigabe haben.
keiner
Freigabe
max numerischer Wert connections
Maximal mögliche Anzahl von Verbindungen zu einer Freigabe zu einem bestimmten Zeitpunkt.
0
Freigabe
guest only (only guest)
Boolescher Wert
Wenn yes, wird nur Gastzugriff erlaubt.
no
Freigabe
guest account
UnixString (Name Benutzerzugang, des der für den Benutzerzugangs) Gastzugriff verwendet wird.
nobody
Freigabe
write list
admin users
Mit Hilfe dieser Option können Benutzer definiert werden, die so mit Dateien und Verzeichnissen arbeiten können, als wären sie root. Das bedeutet, dass sie die Dateien anderer Benutzer verändern oder löschen können, und zwar unabhängig von den Datei- und Verzeichnisberechtigungen. Wenn Benutzer, die mit dieser Option angegeben sind, Dateien erstellen, gehören diese root sowie der vorgegebenen Gruppe des Administrators. Sie können mit der Option admin users PC-Benutzer zu Administratoren für bestimmte Freigaben machen. Sie sollten jedoch aufpassen, wenn Sie diese Option verwenden, und sicherstellen, dass es gute Kennwörter und andere Sicherheitsrichtlinien gibt. valid users, invalid users Mit diesen beiden Optionen nennen Sie die Benutzer und Gruppen, denen Samba den Zugriff auf eine bestimmte Freigabe erlauben oder verbieten soll. Sie können eine Liste mit Benutzer- und/oder Gruppennamen angeben. Ist einem Namen ein atZeichen (@) vorangestellt, wird er als Gruppenname interpretiert - dabei werden NISGruppen vor Unix-Gruppen gesucht. Steht vor dem Namen ein Pluszeichen (+), wird er als Name einer Unix-Gruppe angesehen. Das NIS wird dann nicht durchsucht. Beginnt der Name mit einem Ampersand-Zeichen (&), wird er als NIS-Gruppenname und nicht als Unix-Gruppenname betrachtet. Plus- und Ampersand-Zeichen können zusammen eingesetzt werden, um festzulegen, ob NIS- oder Unix-Gruppen zuerst gesucht werden. Ein Beispiel: [database] valid users = mary ellen sue &sales +marketing @dbadmin invalid users = gavin syd dana &techies +&helpdesk
Im Parameter valid users wird den Benutzern mary, ellen und sue ebenso der Zugriff auf die [database]-Freigabe gewährt wie den Mitgliedern der Unix-Gruppe marketing sowie den der NIS/Unix-Gruppe dbadmin. Der Parameter invalid users verbietet den Zugriff auf die Freigabe durch die Benutzer gavin, syd und dana und für die Mitglieder der NIS-Gruppe techies sowie der Unix/NIS-Gruppe helpdesk. Im letzten Fall wird die Liste der Unix-Gruppen zuerst nach der Gruppe helpdesk durchsucht. Ist die Gruppe dort nicht zu finden, wird in der Liste der NIS-Gruppen gesucht. Eine wichtige Regel im Zusammenhang mit diesen Optionen ist, dass allen Namen oder Gruppen, die in der invalid users-Liste auftauchen, immer der Zugriff verwehrt wird, auch wenn sie (in welcher Form auch immer) in der valid usersListe stehen. read list, write list Ebenso wie die Optionen valid users und invalid users legt dieses Optionenpaar fest, welche Benutzer nur Lesezugriff auf eine schreibbare Freigabe bzw. welche Benutzer Lese-/Schreibzugriff auf eine schreibgeschützte Freigabe erhalten. Der Wert beider Optionen ist eine Liste mit Benutzern. Der Parameter read list setzt die anderen gewährten Samba-Berechtigungen außer Kraft - ebenso wie die UnixDateiberechtigungen auf dem Server-System -, um den Benutzern den Schreibzugriff zu verbieten. Der Parameter write list setzt die anderen SambaBerechtigungen außer Kraft, um Schreibzugriff zu gewähren, erlaubt allerdings
keinen Schreibzugriff, wenn dem Benutzer die entsprechenden Berechtigungen für die Datei auf dem Unix-System fehlen. Sie können NIS- oder Unix-Gruppennamen festlegen, indem Sie dem Namen ein at-Zeichen voranstellen (z.B. @users). Keine dieser beiden Konfigurationsoptionen besitzt einen Standardwert. max connections Diese Option legt die maximale Anzahl gleichzeitig möglicher Client-Verbindungen für diese Freigabe fest. Wenn die Anzahl erreicht ist, verweigert Samba weitere Verbindungen. Der Vorgabewert ist 0, die Anzahl gleichzeitiger Verbindungen ist damit unbegrenzt. Sie können den Wert auf Freigabeebene folgendermaßen verändern: [accounting] max connections = 30
Diese Option ist nützlich, falls Sie die Anzahl der Benutzer einschränken wollen, die gleichzeitig ein lizenziertes Programm oder eine lizenzierte Datenbank aufrufen möchten. guest only Diese Option (mit der alternativen Schreibweise only guest) legt fest, dass eine Verbindung zu einer Freigabe unter der Benutzerkennung ausgeführt wird, die durch die Option guest account angegeben wurde. Die Freigabe, bei der Sie diese Option verwenden, muss außerdem die Option guest ok = yes erhalten haben, damit Samba sie beachtet. Die Voreinstellung ist no. guest account Diese Option gibt den Namen des Zugangs an, der für Gastzugriffe auf Freigaben in Samba verwendet wird. Die Voreinstellung für diese Option ist von System zu System unterschiedlich. Häufig wird nobody benutzt. Manche Standardbenutzerzugänge haben Schwierigkeiten damit, sich als Gastbenutzer anzumelden. Falls das auf Ihrem System der Fall ist, empfiehlt das Samba-Team die Benutzung des ftp-Zugangs als Gastbenutzer.
Optionen für Benutzernamen Tabelle 9-2 zeigt zwei weitere Optionen, die Samba verwenden kann, um Inkompatibilitäten bei den Benutzernamen zwischen Windows und Unix auszugleichen.
Tabelle 9-2 Optionen für Benutzernamen Option
Parameter
Funktion
Vorgabewert Geltungsbereich
username map
username level
String (Dateiname)
Legt den Namen der Zuordnungsdatei für Benutzernamen fest.
keiner
global
numerischer Wert
Gibt die Anzahl der Großbuchstaben an, die verwendet werden, wenn ein Vergleich von Benutzernamen erfolgt.
0
global
username map Client-Benutzernamen in einem SMB-Netzwerk können relativ lang sein (bis zu 255 Zeichen), während Benutzernamen in einem Unix-Netzwerk häufig maximal acht Zeichen haben dürfen. Das führt dazu, dass Benutzer nicht nur einen Benutzernamen auf ihrem Client verwenden, sondern auch auf dem Samba-Server einen weiteren (kürzeren) Benutzernamen in Gebrauch haben. Sie können dieses Problem lösen, indem Sie eine Zuordnungsliste anlegen, in der jeder ClientBenutzername neben einem Unix-Benutzernamen steht, der aus höchstens acht Zeichen bestehen darf. Die Liste steht in einer gewöhnlichen Textdatei, deren Format wir in Kürze beschreiben. Geben Sie den Namen der Datei mit der globalen Option username map an. Stellen Sie sicher, dass Sie den Zugriff auf diese Datei einschränken; machen Sie root zum Besitzer und entziehen Sie allen anderen den Schreibzugriff (mit den oktalen Berechtigungen 744 oder 644). Ansonsten könnte ein nicht vertrauenswürdiger Benutzer auf die Datei zugreifen und seinen SMBBenutzernamen dem root-Benutzer des Samba-Servers zuordnen. Sie können diese Option folgendermaßen festlegen: [global] username map = /usr/local/samba/private/usermap.txt
Alle Einträge in der Benutzernamen-Zuordnungsdatei müssen so aussehen: zunächst der Unix-Benutzername, gefolgt von einem Gleichheitszeichen (=) und von einem oder mehreren SMB-Client-Benutzernamen, jeweils getrennt durch mindestens ein Leerzeichen. Solange Samba nichts anderes mitgeteilt wird (dass etwa eine Gastverbindung bestehen soll), erwartet es, dass sowohl der Client-Benutzer als auch der Server-Benutzer das gleiche Kennwort haben. Sie können auch Windows NT-Gruppen einer oder mehreren Unix-Gruppen zuordnen, indem Sie das @Zeichen verwenden. Hier einige Beispiele jarwin = JosephArwin manderso = MarkAnderson
users = @account
Ein Sternchen dient hier als Platzhalter für jeden Client-Benutzernamen: nobody = *
Zeilen in der Datei, die mit einem Hash-Zeichen (#) oder einem Semikolon (;) beginnen, werden als Kommentare betrachtet. Beachten Sie, dass Sie diese Datei auch verwenden können, um einen UnixBenutzer einem anderen Benutzer zuzuordnen. Seien Sie damit aber vorsichtig, denn weder Samba noch der Client benachrichtigt den Benutzer über die vorgenommene Zuordnung, und Samba erwartet möglicherweise ein anderes Kennwort. username level SMB-Clients (wie Windows) senden Benutzernamen in SMB-Verbindungsanfragen häufig in Großbuchstaben. Mit anderen Worten, bei Client-Benutzernamen wird die Groß-/ Kleinschreibung nicht notwendigerweise beachtet. Hingegen ist die Groß-/ Kleinschreibung von Benutzernamen auf Unix-Systemen durchaus von Bedeutung: Der Benutzer ANDY unterscheidet sich vom Benutzer andy. Standardmäßig versucht Samba, dieses Problem folgendermaßen zu lösen: 1. Es sucht nach einem Benutzerzugang, dessen Name mit dem vom Client gelieferten Namen übereinstimmt. 2. Es testet den Benutzernamen in Kleinbuchstaben. 3. Es testet den Benutzernamen mit folgender Schreibweise: komplett in Kleinbuchstaben, nur der erste Buchstabe ist großgeschrieben. Wenn Sie wollen, dass Samba weitere Kombinationen aus Groß- und Kleinbuchstaben durchspielt, können Sie ihm das über die globale Option username level mitteilen. Diese Option gibt an, wie viele Buchstaben im Benutzernamen mit Großbuchstaben probiert werden sollen, wenn ein Client eine Verbindung zum Samba-Server herstellen will. Verwenden Sie diese Option wie folgt: [global] username level = 3
In diesem Fall probiert Samba alle Variationen von Benutzernamen, die drei Großbuchstaben enthalten. Je größer die Zahl ist, desto mehr Versuche unternimmt Samba und desto länger dauert die Authentifizierung.
Authentifizierung von Clients An dieser Stelle sollten wir uns damit befassen, wie Samba Benutzer authentifiziert. Jeder Benutzer, der eine Freigabe ohne aktivierten Gastzugriff verwenden will, muss dem Samba-Server einen Benutzernamen und ein Kennwort liefern, um die
gewünschte Verbindung erfolgreich herzustellen. Was Samba mit dem Kennwort macht und wie Samba dementsprechend die Echtheit des Benutzers überprüft, hängt von der Konfigurationsoption security ab. Momentan unterstützt Samba vier Sicherheitsstufen in seinem Netzwerk: share, user, server und domain. Sicherheit auf Freigabeebene Jede Freigabe in der Arbeitsgruppe besitzt ein oder mehrere Kennwörter. Jeder, der ein gültiges Kennwort kennt, kann auf die betreffende Freigabe zugreifen. Sicherheit auf Benutzerebene Jede Freigabe in der Arbeitsgruppe akzeptiert Verbindungen bestimmter Benutzer. Der Samba-Server überprüft bei jeder Verbindungsanfrage den Benutzernamen und das Kennwort, die der Client liefert, bevor er den Zugriff auf die Freigabe gewährt (oder verweigert). Sicherheit auf Server-Ebene Diese Stufe entspricht der Sicherheit auf Benutzerebene, allerdings greift der Samba-Server auf einen anderen SMB-Server zurück, um Kombinationen aus Benutzername und Kennwort zu überprüfen. Sicherheit auf Domänenebene Samba wird zum Mitglied einer Windows NT-Domäne und greift auf einen der Domänen-Controller der Domäne - entweder auf den PDC oder einen BDC - zu, um die Authentifizierung durchzuführen. Nach der Authentifizierung erhält der Benutzer ein besonderes Token, das ihm erlaubt, auf beliebige Freigaben mit den entsprechenden Zugriffsrechten zuzugreifen. Dank dieses Tokens muss der Domänen-Controller nicht jedes Mal erneut das Kennwort des Benutzers überprüfen, wenn dieser versucht, auf eine andere Freigabe in der Domäne zuzugreifen. Bei dem Domänen-Controller kann es sich um einen Windows NT/2000-PDC oder -BDC oder um Samba handeln, das als Windows NT-PDC agiert. Jedes Sicherheitsverfahren kann mit der globalen Option security umgesetzt werden, wie in Tabelle 9-3 gezeigt wird.
Tabelle 9-3 Sicherheitsoption Option
Parameter
domain, server, security share oder user
Funktion Gibt die Art der Sicherheit an, die der SambaServer umsetzt.
Vorgabewert Geltungsbereich
user
global
Sicherheit auf Freigabeebene Bei der Sicherheit auf Freigabeebene besitzt jede Freigabe mindestens ein Kennwort, der Client wird beim ersten Anmelden an der Freigabe authentifiziert. Der Unterschied zu den anderen Methoden besteht darin, dass es keine Einschränkung dazu gibt, wer die Freigabe verwendet - solange der betreffenden Person eines der Kennwörter bekannt ist. Freigaben besitzen oft mehrere Kennwörter. So kann beispielsweise eines der Kennwörter den schreibgeschützten Zugriff erlauben, während ein anderes den Schreib-/Lesezugriff gewährt. Die Sicherheit ist gewährleistet, solange kein unbefugter Benutzer das Kennwort für eine Freigabe herausfindet, auf die er nicht zugreifen sollte.
Sowohl OS/2 als auch Windows 95/98/Me unterstützen Sicherheit auf Freigabeebene auf ihren Ressourcen. Sie können diesen Sicherheitsmechanismus unter Windows 95/98/Me aktivieren, indem Sie in der Systemsteuerung unter Netzwerk die Registerkarte Zugriffssteuerung aufrufen. Wählen Sie dort den Radio-Button Zugriffssteuerung auf Freigabeebene (wodurch der Radio-Button Zugriffssteuerung auf Benutzerebene deaktiviert wird), wie in Abbildung 9-1 demonstriert wird. Klicken Sie anschließend auf OK und starten Sie den Rechner neu, wenn das gefordert wird. Abbildung 9-1 Aktivierung der Sicherheit auf Freigabeebene unter Windows 95/98/Me
Klicken Sie nun mit der rechten Maustaste auf eine Ressource (also ein Verzeichnis einer Festplatte oder eines CD-Laufwerks) und wählen Sie aus dem erscheinenden Kontextmenü den Punkt Eigenschaften aus. Wählen Sie im sich öffnenden Dialog die Registerkarte Freigabe und aktivieren Sie die Ressource als Freigegeben als. An dieser Stelle können Sie den Freigabenamen wählen und einstellen, ob die Freigabe abhängig vom Kennwort, das der Client liefert, schreibgeschützt ist oder ob der Schreib-/Lesezugriff erlaubt sein soll. Vielleicht denken Sie, dass dieses Sicherheitsmodell nicht gut zu Samba passt - da haben Sie recht. Selbst wenn Sie die globale Option security = share in der SambaKonfigurationsdatei angeben, verwendet Samba Kombinationen aus Benutzernamen und Kennwort in den Systemkennwortdateien, um den Zugriff festzulegen. Genauer gesagt, geht Samba folgendermaßen vor, wenn ein Client eine Verbindung zur einer Freigabe herstellen will und die Sicherheit auf Freigabeebene aktiv ist: 1. Wenn eine Verbindung angefordert wird, akzeptiert Samba das Kennwort und (falls es übermittelt wurde) den Benutzernamen des Clients. 2. Ist für die Freigabe guest only eingestellt, wird dem Benutzer sofort der Zugriff auf die Freigabe gestattet, und zwar mit den Rechten des Benutzers, der durch den Parameter guest account festgelegt wurde. Es wird keine Überprüfung der Kennwörter durchgeführt. 3. Bei anderen Freigaben hängt Samba den Benutzernamen an eine Liste mit
Benutzern an, denen der Zugriff auf die Freigabe gestattet ist. Anschließend versucht es, das Kennwort im Zusammenhang mit diesem Benutzernamen auf seine Gültigkeit zu prüfen. Ist das erfolgreich, erlaubt Samba dem Benutzer den Zugriff auf die Ressource mit den Rechten, die diesem Benutzer zugewiesen sind. Der Benutzer muss sich nicht noch einmal authentifizieren, es sei denn, in der Freigabe wurde die Option revalidate = yes angegeben. 4. Verläuft die Authentifizierung erfolglos, versucht Samba, das Kennwort anhand einer Liste von Benutzern zu überprüfen, die sich bereits einmal angemeldet hatten, sowie anhand solcher Benutzer, die unter dieser Freigabe in der Konfigurationsdatei angegeben sind. Passt das Kennwort zu einem dieser Benutzernamen (wie in der Systemkennwortdatei, üblicherweise /etc/passwd , festgelegt), wird dem Benutzer der Zugriff auf die Freigabe unter diesem Benutzernamen gestattet. 5. Sind bei der Freigabe jedoch die Optionen guest ok oder public gesetzt, darf er standardmäßig mit den Rechten auf die Freigabe zugreifen, die durch die Option guest account festgelegt sind. Sie können in der Konfigurationsdatei festlegen, welche Benutzer Samba anfänglich auf die Benutzerliste für Sicherheit auf Freigabeebene setzen soll. Dazu verwenden Sie die Option username, wie hier gezeigt: [global] security = share
[accounting1] path = /home/samba/accounting1 guest ok = no writable = yes username = davecb, pkelly, andyo
Wenn in diesem Fall ein Benutzer auf die Freigabe zugreifen will, überprüft Samba, ob das gelieferte Kennwort zu einem der Benutzer gehört, die in einer internen Liste stehen, oder zu einem der Benutzer davecb, pkelly und andyo. Wenn das Kennwort einem der Benutzer gehört, überprüft Samba die Verbindung und gewährt dem Benutzer den Zugriff. Ansonsten schlägt der Versuch eines Verbindungsaufbaus fehl.
Optionen für Sicherheit auf Freigabeebene Tabelle 9-4 zeigt die Optionen, die üblicherweise im Zusammenhang mit Sicherheit auf Freigabeebene auftauchen.
Tabelle 9-4 Optionen für Sicherheit auf Freigabeebene
Option
Parameter
Funktion
only user
Boolescher Wert
Wenn yes, werden nur solche Benutzernamen erlaubt, die durch username angegeben wurden.
username (user oder users)
Benutzer, mit String (Liste denen das mit Kennwort eines Benutzernamen) Clients überprüft wird.
Vorgabewert Geltungsbereich
no
Freigabe
keiner
Freigabe
only user Wenn diese Boolesche Option eingeschaltet ist, prüft Samba bei eingehenden Verbindungen zu einer Freigabe mit einer Sicherheit auf Freigabeebene lediglich, ob das vom Client gelieferte Kennwort zu einem der Benutzer gehört, die Sie im Wert der Option username angegeben haben. Die Prüfung, ob das Kennwort zu einem Benutzer aus der internen Liste der Benutzer gehört, entfällt. Der Vorgabewert dieser Option ist no. Sie können den Wert folgendermaßen ändern: [global] security = share [data] username = andy, peter, valerie only user = yes
username Diese Option gibt eine Liste mit Benutzernamen und/oder Gruppennamen an, die für die Prüfung des vom Client gelieferten Kennworts herangezogen werden. Diese Option wird häufig bei Clients eingesetzt, die Sicherheit auf Freigabeebene verwenden, damit erfolgreiche Verbindungen zu einem bestimmten Dienst ausschließlich vom Kennwort abhängen - in diesem Fall einem Kennwort, das einem bestimmten Benutzer gehört: [global] security = share [data] username = andy, peter, terry
Sie können eine Liste mit Benutzernamen und/oder Gruppennamen eingeben. Ist einem Namen ein at-Zeichen (@) vorangestellt, wird er als Gruppenname interpretiert, wobei NIS-Gruppen vor Unix-Gruppen durchsucht werden. Steht vor dem Namen ein Pluszeichen (+), wird er als Name einer Unix-Gruppe angesehen; das NIS wird nicht durchsucht. Ist dem Namen ein Ampersand-Zeichen (&) vorangestellt, wird er als NIS-Gruppenname und nicht als Unix-Gruppenname betrachtet. Plus- und Ampersand-Zeichen können zusammen eingesetzt werden, um festzulegen, ob NIS- oder Unix-Gruppen zuerst durchsucht werden sollen. Wenn Samba in dieser Option einen Gruppennamen entdeckt, versucht es, alle Benutzer in der Gruppe zu authentifizieren, bis es bei einem Benutzer erfolgreich ist. Bedenken Sie, dass dies allerdings sehr ineffizient sein kann. Wir empfehlen Ihnen, diese Option nicht zu verwenden, es sei denn, Sie implementieren einen Samba-Server mit Sicherheit auf Freigabeebene.
Sicherheit auf Benutzerebene Die bevorzugte Methode der Sicherheit bei Samba ist die Sicherheit auf Benutzerebene. Bei diesem Verfahren geben Sie für jede Freigabe an, welche Benutzer diese verwenden dürfen. Wenn ein Benutzer auf eine Freigabe zugreifen will, prüft Samba, ob der vom Client gelieferte Benutzername auf dem System existiert und ob sein Kennwort stimmt. Dazu verwendet Samba seine eigene Kennwortdatenbank. Wie wir bereits an früherer Stelle in diesem Kapitel erwähnt haben, können Sie mit der Option valid users angeben, welche Benutzer auf eine bestimmte Freigabe zugreifen dürfen: [global] security = user
[accounting1] writable = yes valid users = bob, joe, sandy
Jeder der aufgeführten Benutzer kann sich mit der Freigabe verbinden, sofern der Client das korrekte Kennwort liefert, so wie es in der Systemkennwortdatei des Servers steht. Wenn Samba die Echtheit des Benutzers auf diese Weise einmal bestätigt hat, muss der Benutzer sein Kennwort nicht erneut eingeben, solange Sie nicht die Option revalidate = yes eingetragen haben. Clients können Kennwörter unverschlüsselt oder verschlüsselt an den Samba-Server senden. Wenn Sie beide Arten von Clients in Ihrem Netzwerk besitzen, sollten Sie sich vergewissern, dass die Kennwörter der Benutzer sowohl in der traditionellen Unix-Zugangsdatenbank als auch in der verschlüsselten Samba-Datenbank stehen. Auf diese Weise können Benutzer von jedem Client-Typ aus auf ihre Freigaben zugreifen.1 Allerdings empfehlen wir Ihnen, ausschließlich verschlüsselte Kennwörter zu verwenden und unverschlüsselte abzulehnen, wenn Ihnen die Sicherheit am
Herzen liegt. Mehr über dieses Thema erfahren Sie im Abschnitt »Kennwörter« in diesem Kapitel.
Sicherheit auf Server-Ebene Sicherheit auf Server-Ebene ähnelt derjenigen auf Benutzerebene. Auf der ServerEbene greift Samba für die Authentifizierung auf einen anderen SMB-KennwortServer zurück. Typischerweise handelt es sich dabei um einen anderen SambaServer oder einen Windows NT/2000-Server, der als PDC im Netzwerk fungiert. Beachten Sie, dass Samba auch bei dieser Konfiguration eine Liste der Freigaben einschließlich ihrer jeweiligen Einstellungen in der Datei smb.conf benötigt. Wenn ein Client sich mit einer bestimmten Freigabe verbinden will, überprüft Samba zunächst, ob der Benutzer überhaupt auf diese Freigabe zugreifen darf. Ist das der Fall, überprüft der Samba-Server das Kennwort, indem es dem SMB-Kennwort-Server den Benutzernamen und das vom Client gelieferte Kennwort sendet. Ist das Kennwort akzeptiert worden, wird mit dem Client eine Verbindung aufgebaut. Eine Veranschaulichung dieses Vorgangs finden Sie in Abbildung 9-2. Abbildung 9-2 Ein typisches System, das Sicherheit auf Server-Ebene einsetzt
Sie können Samba so konfigurieren, dass es einen separaten Kennwort-Server mit Sicherheit auf Server-Ebene verwendet. Dazu benutzen Sie die globale Option password server: [global] security = server password server = mixtec toltec
Beachten Sie, dass Sie im Wert der Option password server mehr als einen Computer angeben können; Samba greift dann auf den jeweils nächsten Server zurück, falls einer nicht erreichbar sein sollte. Geben Sie in der Option password server die NetBIOS-Namen der Computer, nicht ihre DNS-Namen oder äquivalenten IP-Adressen an. Weist einer der Server ein angegebenes Kennwort ab, schlägt die Verbindung automatisch fehl - Samba fragt keinen weiteren Server. Eine Warnung: Wenn Sie diese Option verwenden, benötigen Sie einen Benutzerzugang, der den Benutzer des regulären Samba-Servers darstellt. Das liegt
daran, dass das Unix einen Benutzernamen benötigt, um diverse Ein-/ Ausgabevorgänge durchzuführen. Die bevorzugte Methode zur Lösung dieses Problems besteht darin, dem Benutzer einen Zugang auf dem Samba-Server zu geben und diesen zu sperren, indem man sein Kennwort in der Kennwortdatei (zum Beispiel /etc/passwd ) durch ein Sternchen (*) ersetzt.
Sicherheit auf Domänen-Ebene Bei Sicherheit auf Domänen-Ebene agiert der Samba-Server als Mitglied einer Windows-Domäne. Erinnern Sie sich an Kapitel 1: Wir hatten gesagt, dass jede Domäne einen primären Domänen-Controller besitzt, bei dem es sich um einen Windows NT/2000- oder Samba-Server handeln kann, der eine KennwortAuthentifizierung anbietet. Der Domänen-Controller überwacht die Benutzer und Kennwörter in seiner eigenen Datenbank und authentifiziert jeden Benutzer, wenn er sich anmeldet und auf die Freigaben einer anderen Maschine zugreifen will. Wie bereits weiter oben in diesem Kapitel erwähnt, besitzt Samba eine ähnliche Fähigkeit, die Sicherheit auf Benutzerebene anbietet. Allerdings ist diese Option Unix-zentriert und geht davon aus, dass die Authentifizierung über UnixKennwortdateien erfolgt. Ist die Unix-Maschine Teil einer NIS- oder NIS+-Domain, authentifiziert Samba die Benutzer in typischer Unix-Manier transparent über eine gemeinsam genutzte Kennwortdatei. Samba stellt dann den Zugriff auf die NISoder NIS+-Domain von Windows aus bereit. Es gibt natürlich keinen Zusammenhang zwischen dem NIS-Konzept einer Domain und einer Windows NTDomäne. Das Konfigurieren von Samba für Sicherheit auf Domänen-Ebene wird in Kapitel 4 im Abschnitt »Samba als Domänen-Member-Server« besprochen.
Kennwörter Kennwörter sind ein Sorgenkind von Samba. Sie sind fast immer das erste große Problem, auf das Benutzer stoßen, wenn sie Samba installieren. Daher wollen wir uns jetzt um dieses Thema kümmern und herausfinden, was im Netzwerk geschieht. Clients können Kennwörter unverschlüsselt oder verschlüsselt senden. Verschlüsselte Kennwörter sind natürlich sicherer. Ein Klartext-Kennwort kann von einem Paketschnüffler gelesen werden, wie von dem für Samba veränderten tcpdump-Programm, das wir in Kapitel 1 verwendet haben. Ob Kennwörter standardmäßig verschlüsselt werden, hängt vom Betriebssystem ab, das der Client benutzt, um sich am Samba-Server anzumelden. In Tabelle 9-5 steht, welche Windows-Betriebssysteme ihre Kennwörter standardmäßig verschlüsseln und welche sie im Klartext über das Netzwerk schicken.
Tabelle 9-5 Windows-Betriebssysteme mit verschlüsselten Kennwörtern Betriebssystem Windows for Workgroups
Verschlüsselt oder Klartext Klartext
Windows 95
Klartext
Windows 95 mit SMB-Update Verschlüsselt Windows 98
Verschlüsselt
Windows Me
Verschlüsselt
Windows NT 3.x
Klartext
Windows NT 4.0 vor SP 3
Klartext
Windows NT 4.0 nach SP 3
Verschlüsselt
Windows 2000
Verschlüsselt
Windows XP
Verschlüsselt
Es werden drei unterschiedliche Verschlüsselungsmethoden verwendet. Windows 95/98/Me-Clients benutzen eine Methode, die Microsofts LAN Manager-NetzwerkSoftware übernimmt. Windows NT/2000/XP-Systeme setzen ein neueres System namens NT LAN Manager oder NTLM ein. Eine aktuellere Version dieser Methode (namens NT LAN Manager Version 2 oder NTLMv2) verwendet eine andere Methode für die Ermittlung von Kennwort-Hash-Werten. Wenn verschlüsselte Kennwörter unterstützt werden, speichert Samba die verschlüsselten Kennwörter in einer Datei mit dem Namen smbpasswd. Standardmäßig befindet sich diese Datei im Verzeichnis private der SambaDistribution (üblicherweise /usr/local/samba/ private). Gleichzeitig speichert der Client eine verschlüsselte Version des Kennworts eines Benutzers auf seinem eigenen System. Das Klartext-Kennwort wird niemals gespeichert, weder auf einem Server noch auf dem Client. Jedes System verschlüsselt das Kennwort automatisch mit einem Standard-Algorithmus, wenn es gesetzt oder verändert wird. Möchte ein Client eine Verbindung zu einem SMB-Server aufbauen, der verschlüsselte Kennwörter unterstützt (wie Samba oder Windows NT/2000/XP), führen die beiden Computer folgende Verhandlungen durch: 1. Der Client versucht, ein Protokoll mit dem Server auszuhandeln. 2. Der Server antwortet mit einem Protokoll und signalisiert, dass er verschlüsselte Kennwörter unterstützt. Gleichzeitig sendet er einen zufällig generierten, 8 Byte langen String, die so genannte Herausforderung (engl. Challenge). 3. Der Client verwendet den Challenge-String als Schlüssel, um sein bereits verschlüsseltes Kennwort mit einem Algorithmus zu verschlüsseln, der zuvor durch das ausgehandelte Protokoll definiert wurde. Das Ergebnis (die so genannte Response) schickt er an den Server. 4. Der Server führt die gleiche Aktion mit dem verschlüsselten Kennwort durch, das in seiner Datenbank gespeichert ist. Stimmen die Ergebnisse überein, sind die Kennwörter äquivalent, und der Benutzer wird authentifiziert. Beachten Sie, dass die unverschlüsselten Kennwörter dabei nicht über das Netzwerk gesendet werden. Dennoch sollten Sie sehr vorsichtig mit den verschlüsselten Kennwörtern in der Datei smbpasswd umgehen, damit sie unbefugten Benutzern nicht zugänglich sind. Falls ein Benutzer an die verschlüsselten Kennwörter
herankommen sollte, kann er in das System einbrechen, indem er die Schritte des eben beschriebenen Algorithmus reproduziert. Die verschlüsselten Kennwörter sind genauso sensibel wie die unverschlüsselten - in der Welt der Kryptographie spricht man von Klartext-äquivalenten Daten. Natürlich sollten Sie auch sicherstellen, dass die Clients ihre Klartext-Kennwörter sichern. Sie können nun Samba für die Verwendung verschlüsselter Kennwörter konfigurieren, indem Sie dem globalen Abschnitt der Datei smb.conf folgende Zeilen hinzufügen. Beachten Sie, dass wir den Namen der Samba-Kennwortdatei ausdrücklich angeben: [global] security = user encrypt passwords = yes smb passwd file = /usr/local/samba/private/smbpasswd
Samba akzeptiert jedoch Benutzer erst, wenn die Datei smbpasswd erzeugt und die Benutzer mit dem Befehl smbpasswd hinzugefügt wurden, wie wir Ihnen in Kapitel 2 gezeigt haben.
Verschlüsselte Kennwörter auf dem Client deaktivieren Die Unix-Authentifizierung ist seit Jahrzehnten üblich - einschließlich der Verwendung von telnet und rlogin über das Internet -, obwohl sie allgemein bekannte Sicherheitsrisiken birgt. Klartext-Kennwörter werden über das Internet verschickt und können von böswilligen Schnüffelprogrammen aus den TCP-Paketen herausgefiltert werden. Falls Sie Ihr Netzwerk aber für sicher halten und die Standard-Authentifizierung über die Unix-Datei /etc/passwd wünschen, müssen Sie unverschlüsselte Kennwörter auf denjenigen Windows-Systemen aktivieren, die normalerweise nur verschlüsselte Kennwörter senden. Dazu müssen Sie auf allen Client-Systemen die Windows-Registry modifizieren. Die Samba-Distribution enthält die dafür benötigten .reg-Dateien; diese befinden sich im Verzeichnis /docs/Registry der Quelldistribution. Je nach verwendeter Plattform benutzen Sie eine der folgenden Dateien: Win95_PlainPassword.reg Win98_PlainPassword.reg WinME_PlainPassword.reg NT_PlainPassword.reg Win2000_PlainPassword.reg (Für Windows XP nehmen Sie die .reg-Datei für Windows 2000.) Sie können die Installation ausführen, indem Sie die entsprechende .reg-Datei auf eine DOSDiskette kopieren, diese Diskette in das Diskettenlaufwerk des Clients einlegen und über den Befehl Ausführen aus dem Start-Menü die .reg-Datei aufrufen. (Sie können auch einfach auf das Symbol der Datei doppelklicken.) Nach dem Neustart des Rechners verschlüsselt der Client seine Kennwörter nicht mehr, bevor er sie an den Server sendet. Das bedeutet, dass die Klartext-
Kennwörter in den TCP-Paketen zu sehen sind, die über das Netzwerk verschickt werden. Auch hier empfehlen wir Ihnen, dies nicht zu tun, wenn Sie sich nicht völlig darauf verlassen können, dass Ihr Netzwerk sicher ist. Wenn die Kennwörter nicht verschlüsselt werden sollen, verwenden Sie diese beiden Zeilen in Ihrer Samba-Konfigurationsdatei: [global] security = user encrypt passwords = no
Die smbpasswd-Datei Samba speichert verschlüsselte Kennwörter in einer Datei mit dem Namen smbpasswd, die sich standardmäßig im Verzeichnis /usr/local/samba/private befindet. Sie sollten die Datei smbpasswd genauso gut bewachen wie die Datei mit den Kennwörtern des Unix-Systems (entweder /etc/passwd oder /etc/shadow). Nur der root-Benutzer darf Lese-/Schreibzugriff auf das Verzeichnis private haben; alle anderen Benutzer sollten überhaupt keinen Zugriff auf dieses Verzeichnis erhalten. Auch der Zugriff auf die Datei smbpasswd sollte allen Benutzern bis auf root verwehrt sein. Ist alles für eine gute Sicherheit eingerichtet, sollten die Listings des Verzeichnisses private und der Datei smbpasswd folgendermaßen aussehen: # ls -ld /usr/local/samba/private drwx- - - - - private
2 root
root
4096 Nov 26 01:11 /usr/local/samba/
# ls -l /usr/local/samba/private/smbpasswd -rw- - - - - - private/smbpasswd
1 root
root
204 Nov 26 01:11 /usr/local/samba/
Bevor Sie verschlüsselte Kennwörter einsetzen können, müssen Sie für jeden UnixBenutzer einen Eintrag in der Datei smbpasswd anlegen. Die Struktur der Datei ist dabei ähnlich der einer Unix-passwd-Datei; sie enthält allerdings andere Felder. Abbildung 9-3 verdeutlicht den Aufbau der Datei smbpasswd; der gezeigte Eintrag steht eigentlich in der Datei auf einer einzigen Zeile. Abbildung 9-3 Struktur des Eintrags in der Datei smbpasswd (eine Zeile)
Normalerweise werden die Einträge in der Datei smbpasswd automatisch vom Befehl smbpasswd erzeugt. Dennoch wollen Sie vielleicht wissen, wie die Daten in smbpasswd zu interpretieren sind, falls Sie wissen wollen, welche Zugänge darin gespeichert sind oder wie Sie die Datei möglicherweise sogar manuell ändern können. Hier eine Zusammenfassung der einzelnen Felder: Benutzername Dies ist der Benutzername des Zugangs. Er wird direkt der Kennwortdatei des Systems entnommen. UID Dies ist die Benutzer-ID (UID) des Zugangs. Ebenso wie der Benutzername wird sie direkt der Kennwortdatei des Systems entnommen und muss der UID dort entsprechen. LAN Manager-Kennwort-Hash-Wert Dabei handelt es sich um eine 32 Bit lange hexadezimale Folge, die das Kennwort repräsentiert, das Windows 95/98/Me-Clients verwenden. Es wird ermittelt, indem das Kennwort in zwei Strings von 7 Zeichen Länge aufgeteilt wird. Dabei werden Kleinbuchstaben in Großbuchstaben umgewandelt. Hat das Kennwort weniger als 14 Zeichen, werden die Strings mit Nullen aufgefüllt. Dann wird jeder 7-Zeichen-String in einen 56-Bit-DES-Schlüssel umgewandelt und verwendet, um den feststehenden String KGS!@#$% zu verschlüsseln. Die beiden 64-Bit-Ergebnisse werden verkettet und als Kennwort-Hash gespeichert. Ist momentan kein Kennwort für den Benutzer eingestellt, bestehen die ersten 11 Zeichen des Hash-Werts aus der Folge NO PASSWORD, gefolgt von X-Zeichen für den Rest. Wurde das Kennwort deaktiviert, besteht es aus 32 X-Zeichen. NT LAN Manager-(NTLM-)Kennwort-Hash-Wert Dabei handelt es sich um eine 32 Bit lange hexadezimale Folge, die das Kennwort repräsentiert, das Windows NT/2000/XP-Clients verwenden. Diese Folge wird mit einem MD4-Hash aus dem Kennwort des Benutzers (repräsentiert als 16-Bit-Little-Endian-Unicode-Folge) ermittelt. Das Kennwort wird nicht zuerst in Großbuchstaben umgewandelt. Flags für Zugänge Dieses Feld besteht aus elf Zeichen zwischen zwei eckigen Klammern ( [ ] ). Die im Folgenden aufgeführten Zeichen können in beliebiger Reihenfolge zwischen den Klammern auftauchen; bei den verbleibenden Zeichen sollte es sich um Leerzeichen handeln: U Dieser Zugang ist ein normaler Benutzerzugang. D Dieser Zugang ist momentan deaktiviert, und Samba lässt keine Anmeldungen zu.
N W
Dieser Zugang besitzt kein Kennwort. Dies ist ein vertrauenswürdiger Workstation-Zugang, der verwendet werden kann, um Samba als PDC zu konfigurieren, wenn es Windows NT-Maschinen erlaubt wird, dessen Domäne beizutreten.
Zeitpunkt der letzten Änderung Dieser Code besteht aus den Zeichen LCT-, gefolgt von einer hexadezimalen Repräsentation der Anzahl der Sekunden seit dem Beginn der Unix-Epoche (Mitternacht des 1. Januar 1970) bis zum Zeitpunkt der letzten Änderung des Eintrags.
Kennwort-Synchronisierung Wenn ein Benutzer ein normales Kennwort (entweder in /etc/passwd oder in /etc/ shadow) und eine verschlüsselte Version desselben Kennworts (in der Datei smbpasswd) besitzt, kann es zu Problemen kommen, falls er beide ändern muss. Glücklicherweise besitzt Samba eine (wenn auch eingeschränkte) Möglichkeit, die beiden Kennwörter synchron zu halten. Mit einigen Konfigurationsoptionen können Sie festlegen, dass Samba das Unix-Kennwort automatisch ändern soll, wenn das verschlüsselte Kennwort auf dem System geändert wird. Verwenden Sie dazu die globale Option unix password sync: [global] unix password sync = yes
Ist diese Option aktiviert, versucht Samba (als root), auch das gewöhnliche Kennwort des Benutzers zu ändern, wenn das verschlüsselte Kennwort mit smbpasswd geändert wird. Damit dies funktioniert, müssen Sie aber zwei weitere Optionen entsprechend festlegen. Die einfachere von beiden ist passwd program. Diese Option gibt einfach den UnixBefehl an, der zum Ändern des Standard-Systemkennworts eines Benutzers eingesetzt wird. Standardmäßig lautet dieser Befehl /bin/passwd %u. Bei einigen Unix-Systemen ist dies ausreichend. Andere, wie Red Hat Linux, verwenden stattdessen /usr/bin/passwd. Außerdem wollen Sie vielleicht später einmal ein anderes Programm oder Skript benutzen. Nehmen wir zum Beispiel an, dass Sie ein Skript mit dem Namen changepass verwenden wollen, um das Kennwort eines Benutzers zu verändern. Bedenken Sie dabei, dass Sie die Samba-Variable %u für den Unix-Benutzernamen verwenden können. Unser Beispiel ändert sich daher folgendermaßen: [global] unix password sync = yes passwd program = changepass %u
Beachten Sie, dass dieses Programm vom root-Benutzer aufgerufen wird, wenn Sie die Option unix password sync auf yes setzen. Das ist erforderlich, weil Samba nicht unbedingt das alte Klartext-Kennwort des Benutzers kennt.
Die kompliziertere Option ist passwd chat. Sie funktioniert wie ein Chat-Skript unter Unix. Sie enthält eine Folge von Strings, die an das Programm gesendet werden, und Antworten, die vom Programm zu erwarten sind. Diese Strings werden durch passwd program festgelegt. Die Vorgabe für passwd chat sieht beispielsweise folgendermaßen aus (die Trennzeichen zwischen den einzelnen Zeichengruppen sind Leerzeichen): passwd chat = *old*password* %o\n *new*password* %n\n *new*password* %n \n *changed*
Die erste Zeichengruppe stellt eine Frage dar, die vom externen Programm zur Kennwortänderung erwartet wird. Beachten Sie, dass sie Platzhalter (*) enthalten kann, mit denen Sie die erwartete Frage verallgemeinern können, so dass das ChatSkript mit mehreren, ähnlichen Anfragen zurechtkommt. In diesem Beispiel bedeutet *old*password*, dass Samba vom Programm eine Zeile erwartet, in der das Wort old und danach das Wort password vorkommt, unabhängig davon, was vor, zwischen und nach diesen Wörtern steht. Findet Samba die erwartete Zeile nicht, schlägt die Kennwortänderung fehl. Die zweite Gruppe gibt an, was Samba an das Programm senden soll, sobald es die erste erwartete Zeile gelesen hat. In diesem Fall handelt es sich um %o\n. Die Samba-Variable %o steht für das alte Kennwort, während \n einen Zeilenvorschub repräsentiert. Samba »gibt« also das alte Kennwort »ein«, und zwar über die Standardeingabe des Programms zur Kennwortänderung, und »drückt« dann die Enter-Taste. Anschließend sehen Sie eine weitere Antwortgruppe, gefolgt von den Daten, die an das Programm zur Kennwortänderung zurückgeschickt werden. (Dieses AbfrageAntwort-Muster kann in einem normalen Unix-chat-Skript unendlich fortgesetzt werden.) Das Skript läuft weiter, bis das letzte Muster erkannt wurde. Sie können die in Tabelle 9-6 aufgeführten Zeichen verwenden, um die Chance einer Übereinstimmung des Musters mit der gelieferten Zeile des externen Programms zu erhöhen. Außerdem können Sie die in Tabelle 9-7 aufgelisteten Zeichen benutzen, um Ihre Antwort zu formulieren.
Tabelle 9-6 In einem Kennwort-Chat gelieferte Zeichen Zeichen
Definition
*
Null oder mehr beliebige Zeichen.
" "
Erlaubt Ihnen, Strings aufzunehmen, die Leerzeichen enthalten. Sternchen werden auch innerhalb von Anführungszeichen als Platzhalter betrachtet. Sie können einen leeren String durch leere Anführungszeichen repräsentieren lassen.
Tabelle 9-7 Zeichen zum Senden in einem Kennwort-
Chat Zeichen
Definition
%o
das alte Kennwort des Benutzers
%n
das neue Kennwort des Benutzers
\n
das Zeilenvorschub-Zeichen
\r
das Wagenrücklauf-Zeichen
\t
das Tabulator-Zeichen
\s
ein Leerzeichen
Beispielsweise könnten Sie an Stelle des Vorgabewerts dieser Option auch die folgende Zeile verwenden. Sie funktioniert in Umgebungen, in denen Sie das alte Kennwort nicht eingeben müssen. Außerdem kommt es damit zurecht, wenn das externe Programm als letzte Zeile all tokens updated successfully sendet, so wie bei Red Hat Linux: passwd chat = *New password* %n\n *new password* %n\n *success*
Wir möchten erneut darauf hinweisen, dass der Vorgabewert auf den meisten UnixSystemen funktioniert. Falls dies nicht auf Ihr Unix-System zutrifft, können Sie die globale Option passwd chat debug verwenden, um ein neues Chat-Skript für das Programm zur Kennwortänderung anzulegen. Die Option passwd chat debug protokolliert während eines Kennwort-Chat-Vorgangs alles. Sie besitzt einen Booleschen Wert: [global] unix password sync = yes passwd chat debug = yes log level = 100
Wenn Sie diese Option aktivieren, protokolliert Samba alle Ein-/Ausgaben während des Datenaustauschs in der Samba-Protokolldatei log.smbd, und zwar mit der Protokollierungsstufe 100. Deshalb haben wir auch die neue Option log level angegeben. Da diese Vorgehensweise zahlreiche Einträge in der Protokolldatei erzeugen kann, ist es möglicherweise effektiver, statt /bin/passwd ein eigenes Skript zu benutzen - indem die Option passwd program gesetzt wird -, um aufzuzeichnen, was während des Austauschs geschieht. Seien Sie vorsichtig, die Protokolldateien enthalten nämlich die Kennwörter im Klartext. Das kann (oder besser muss) gegen die lokalen Sicherheitsrichtlinien in Ihrer Einrichtung verstoßen und könnte rechtliche Schritte nach sich ziehen. Stellen Sie sicher, dass Sie Ihre Protokolldateien mit strengen Dateiberechtigungen schützen und sie sofort löschen, nachdem Sie die benötigten Informationen erhalten haben. Falls möglich, verwenden Sie die Option passwd chat debug nur, während Ihr eigenes Kennwort geändert wird.
Das Betriebssystem, auf dem Sie Samba ausführen, kann strenge Regeln für die Gültigkeit von Kennwörtern besitzen, damit sie schwieriger zu erraten sind und nicht durch Wörterbuch-Angriffe herausgefunden werden können. Die Benutzer in Ihrem Netzwerk müssen derartige Regeln kennen, wenn sie ihre Kennwörter ändern. Wir haben bereits erwähnt, dass die Kennwort-Synchronisierung Einschränkungen unterliegt. Diese bestehen darin, dass eine Synchronisierung in einer anderen als der eben beschriebenen Richtung nicht möglich ist. Wenn das Standardkennwort in der Datei passwd geändert wird, bekommt Samba davon nichts mit und kann dementsprechend das neue Kennwort nicht in die Datei smbpasswd eintragen. Es gibt mehrere Ansätze, dieses Problem anzugehen, einschließlich NIS und den frei verfügbaren Implementierungen des Pluggable Authentication Modules-(PAM-) Standards, aber keiner dieser Versuche löst dieses Problem wirklich. Weitere Informationen über Kennwörter finden Sie in der Datei der SambaQuelldistribution docs/htmldocs/ENCRYPTION.html.
Optionen zur Kennwort-Konfiguration Die in Tabelle 9-8 aufgeführten Optionen helfen Ihnen beim Arbeiten mit Kennwörtern in Samba.
Tabelle 9-8 Optionen zur Kennwort-Konfiguration Option
Parameter
Funktion
Vorgabewert Geltungsbereich
encrypt Boolescher passwords Wert
Wenn yes, werden verschlüsselte Kennwörter aktiviert.
no
global
unix password sync
Boolescher Wert
Wenn yes, wird die Standard-UnixKennwortdatenbank aktualisiert, sobald ein Benutzer sein verschlüsseltes Kennwort ändert.
no
global
passwd chat
String (chatBefehle)
Folge von Befehlen, die an das Kennwortprogramm gesandt werden.
siehe den früheren Abschnitt über diese Option
global
Boolescher Wert
Wenn yes, werden Fehlerprotokolle des Vorgangs zur Kennwortänderung mit einer Protokollierungsstufe von 100 an die Protokolldateien gesandt.
no
global
passwd chat debug
String (UnixBefehl)
Programm, das zum Ändern von Kennwörtern verwendet werden soll.
/bin/passwd %u
global
numerischer Wert
Anzahl der Kombinationen aus Großbuchstaben, die beim Ermitteln des Kennworts eines Clients verwendet werden sollen.
keiner
global
update Boolescher encrypted Wert
Wenn yes, wird die Datei mit den verschlüsselten Kennwörtern aktualisiert, sobald sich ein Client mit einem KlartextKennwort an einer Freigabe anmeldet.
no
global
null Boolescher passwords Wert
Wenn yes, wird der Zugriff für Benutzer ohne Kennwörter gestattet.
no
global
smb passwd file
String (Dateiname)
Name der verschlüsselten Kennwortdatei.
/usr/local/ samba/ private/ smbpasswd
global
String (Dateiname)
Name einer Datei, die Hosts und Benutzer enthält, die sich ohne Kennwort anmelden dürfen.
keiner
global
String (Dateiname)
Name einer .rhostsDatei, die es Benutzern erlaubt, sich ohne Kennwort anzumelden.
keiner
global
passwd program
password level
hosts equiv
use rhosts
encrypt passwords Die globale Option encrypt passwords veranlasst Samba, für die Authentifizierung an Stelle von Klartext-Kennwörtern verschlüsselte Kennwörter zu benutzen. Verschlüsselte Kennwörter werden von den Clients erwartet, wenn diese Option yes ist: encrypt passwords = yes
In den 2.2.x-Versionen von Samba sowie in früheren Versionen sind verschlüsselte Kennwörter standardmäßig deaktiviert. Dies wurde in Samba 3.0 geändert - dort sind verschlüsselte Kennwörter standardmäßig aktiviert. Wenn Sie verschlüsselte Kennwörter verwenden, müssen Sie eine gültige smbpasswd-Datei haben, in der Benutzernamen stehen, die sich mit verschlüsselten Kennwörtern anmelden. (Beachten Sie dazu den Abschnitt »Die smbpasswd-Datei« weiter oben in diesem Kapitel.) Darüber hinaus muss Samba wissen, wo die Datei smbpasswd abgelegt ist; befindet sie sich nicht an der vorgegebenen Stelle (üblicherweise /usr/local/samba/private/ smbpasswd ), können Sie den Ablageort in der Option smb passwd file explizit angeben. Sie können auch update encrypted einsetzen, um Samba zum Aktualisieren der Datei smbpasswd zu zwingen, sobald ein Client sich mit einem unverschlüsselten Kennwort anmeldet. Wenn Sie in Ihrem Netzwerk eine Mischung aus Clients haben, von denen einige verschlüsselte Kennwörter benutzen und andere Klartext-Kennwörter, sorgen Sie mit der Option include dafür, dass Samba alle Clients entsprechend behandelt. Dazu erzeugen Sie individuelle Konfigurationsdateien auf der Grundlage des ClientNamens (%m). Diese Host-spezifischen Konfigurationsdateien können die Option encrypted passwords = yes enthalten, die nur aktiv wird, wenn solche Clients eine Verbindung zum Server aufnehmen. unix password sync Die globale Option unix password sync erlaubt es Samba, die normale UnixKennwortdatei zu aktualisieren, wenn ein Benutzer sein verschlüsseltes Kennwort ändert. Das verschlüsselte Kennwort ist auf einem Samba-Server in der Datei smbpasswd gespeichert, die sich standardmäßig in /usr/local/samba/private befindet. Aktivieren Sie die Funktion folgendermaßen: [global] unix password sync = yes
Ist diese Option eingeschaltet, ändert Samba das verschlüsselte Kennwort und versucht zusätzlich, das Standard-Unix-Kennwort zu ändern, indem der Benutzername und das neue Kennwort an das Programm übergeben werden, das durch die Option passwd program festgelegt wurde (wie bereits beschrieben). Beachten Sie, dass Samba nicht unbedingt Zugriff auf ein Klartext-Kennwort für diesen Benutzer hat. Deshalb muss das Programm, das das Kennwort ändert, als root aufgerufen werden.2 Ist die Änderung des Unix-Kennworts - aus welchen Gründen auch immer - nicht erfolgreich, wird das SMB-Kennwort ebenfalls nicht geändert. passwd chat Diese Option gibt eine Reihe von Sende/Antwort-Strings an - ähnlich einem UnixChat-Skript -, die an das Programm zur Kennwortänderung auf dem Samba-Server geschickt werden. Im Abschnitt »Kennwort-Synchronisierung« weiter oben in diesem Kapitel wird diese Option genauer behandelt.
passwd chat debug Auf yes gesetzt, zeichnet die globale Option passwd chat debug alles auf, was während einer Kennwortänderung durch Samba geschickt oder von Samba empfangen wurde. Alle Ein- und Ausgaben von Samba während der Kennwortänderung werden mit einer Protokollierungsstufe von 100 an die SambaProtokolle geschickt. Sie müssen log level = 100 angeben, damit die Informationen aufgezeichnet werden. Im Abschnitt »Kennwort-Synchronisierung« weiter oben in diesem Kapitel wird diese Option genauer behandelt. Wenn Sie die Option aktivieren, müssen Sie bedenken, dass Klartext-Kennwörter in den Fehlerprotokollen auftauchen, die eine immense Bedrohung für die Sicherheit darstellen, wenn sie nicht richtig geschützt werden. In manchen Organisationen widerspricht es den Sicherheitsrichtlinien, dass Systemadministratoren Zugang zu den Kennwörtern der Benutzer haben. passwd program Die Option passwd program legt das Programm fest, das der Samba-Server aufruft, um das Unix-Kennwort für einen Benutzer zu ändern, wenn das verschlüsselte Kennwort geändert wird. Vorgabewert dieser Option ist das Programm passwd, das sich üblicherweise im Verzeichnis /bin befindet. Die Samba-Variable %u wird hier häufig dazu herangezogen, den Benutzer anzugeben, der das Programm aufruft. Wie der Datenaustausch zwischen Samba und dem Programm im Einzelnen vonstatten geht, bestimmt die Option passwd chat. Detaillierte Angaben darüber finden Sie in diesem Kapitel im Abschnitt »Kennwort-Synchronisierung«. password level Bei SMB werden unverschlüsselte (oder Klartext-)Kennwörter, genau wie die bereits erwähnten Benutzernamen, in Großbuchstaben verschickt. Viele Unix-Benutzer wählen aber Kennwörter, die sowohl Groß- als auch Kleinbuchstaben enthalten. Samba probiert das Kennwort standardmäßig nur mit Kleinbuchstaben aus und versucht nicht, den ersten Buchstaben großzuschreiben. Ähnlich der Option username level gibt es eine Option password level, mit der Sie festlegen können, wie viele Variationen des Kennworts mit Großbuchstaben Samba ausprobiert. Diese Option benötigt einen ganzzahligen Wert, der bestimmt, wie viele Zeichen Samba in Großbuchstaben setzen soll, wenn es prüft, ob Benutzername und Kennwort übereinstimmen. Verwenden Sie diese Option folgendermaßen: [global] password level = 3
In diesem Fall probiert Samba alle möglichen Variationen des Kennworts mit ein bis drei Großbuchstaben aus. Je größer die Zahl ist, desto mehr Versuche unternimmt Samba und desto länger kann es dauern, bis die Verbindung zur Freigabe hergestellt ist. update encrypted Für Netzwerke, die bisher unverschlüsselte Kennwörter verwendet haben und nun zu
verschlüsselten Kennwörtern wechseln wollen, bietet Samba die Option update encrypted an, die einen fließenden Übergang ermöglicht. [global] update encrypted = yes
Dadurch erzeugt Samba für jeden Benutzer aus dem Unix-Kennwort das verschlüsselte Kennwort in der Datei smbpasswd, sobald der betreffende Benutzer auf eine Freigabe zugreift. Sie müssen allerdings den Wert der Option encrypt passwords auf no festlegen, so dass der Client dem Samba-Server auf jeden Fall das Kennwort im Klartext liefert. Wenn sich jeder Benutzer mindestens einmal angemeldet hat, können Sie encrypted passwords = yes eintragen, so dass der Samba-Server von den Clients ausschließlich verschlüsselte Kennwörter anfordert. Damit dies funktioniert, muss der betreffende Benutzer bereits einen Eintrag in der Datei smbpasswd besitzen. null passwords Diese globale Option teilt Samba mit, ob Benutzern mit leerem Kennwort (verschlüsselt oder unverschlüsselt) der Zugriff gewährt werden soll. Die Vorgabe ist no. Sie können den Wert wie folgt ändern: null passwords = yes
Wir raten dringend davon ab, dies zu tun, wenn Sie nicht genau wissen, was Sie tun und welche Sicherheitsrisiken diese Option birgt. Das schließt den ungewollten Zugriff auf Systembenutzer (wie bin), die in der Systemkennwortdatei kein Kennwort besitzen, mit ein. smb passwd file Diese globale Option gibt an, wo sich die Datei mit den verschlüsselten Kennwörtern befindet. Die Voreinstellung ist /usr/local/samba/private/smbpasswd. Verwenden Sie diese Option folgendermaßen: [global] smb passwd file = /etc/samba/smbpasswd
Dieser Wert ist beispielsweise in vielen Red Hat-Distributionen üblich, in denen Samba mit einem RPM-Paket installiert wurde. hosts equiv Diese globale Option teilt Samba den Namen der Unix-Datei hosts.equiv mit. Diese Datei ermöglicht den Zugriff von bestimmten Clients oder Benutzern ohne Kennwort. Verwenden Sie diese Option wie folgt: [global]
hosts equiv = /etc/hosts.equiv
Die Option besitzt keinen Vorgabewert, das heißt, es wird keine hosts.equiv-Datei festgelegt. Da der Einsatz einer hosts.equiv-Datei ein großes Sicherheitsrisiko darstellt, raten wir dringend vom Gebrauch dieser Option ab. use rhosts Diese globale Konfigurationsoption gibt den Namen der Unix-Datei .rhosts an, die Clients den Zugriff auf Freigaben ohne Angabe eines Kennworts erlaubt. Sie können den Ablageort einer solchen Datei folgendermaßen festlegen: [global] use rhosts = /home/dave/.rhosts
Diese Option besitzt keinen Vorgabewert, d.h., es wird keine .rhosts-Datei festgelegt. Ebenso wie bei der gerade vorgestellten Option hosts equiv stellt die Benutzung einer solchen Option ein Sicherheitsrisiko dar. Wir raten davon ab, diese Option zu verwenden, es sei denn, Sie vertrauen der Sicherheit Ihres Netzwerks.
Authentifizierung mit winbind In Kapitel 3 haben wir Ihnen gezeigt, wie Sie Windows-Clients in ein Netzwerk integrieren, in dem die Benutzerzugänge auf dem Samba-Server verwaltet werden. Wir legten auf dem Windows-Client einen Benutzerzugang mit dem gleichen Benutzernamen und Kennwort wie bei einem Zugang auf dem Unix-System an. Diese Methode funktioniert in vielen Rechnerumgebungen ganz gut. Wenn allerdings ein Samba-Server in ein Windows-Netzwerk aufgenommen wird, in dem es bereits einen primären Domänen-Controller mit Windows NT/2000 gibt, besitzt der PDC die bereits existierende Datenbank mit den Benutzerzugängen und Gruppeninformationen, die für die Authentifizierung verwendet wird. Es kann eine Menge Arbeit machen, diese Datenbank zuerst manuell auf den Unix-Server zu übertragen und später die Unix- und Windows-Datenbanken zu verwalten und zu synchronisieren. In Kapitel 4 zeigten wir Ihnen dann, wie Sie einen Samba-Server als DomänenMember-Server in ein Netzwerk aufnehmen, das einen Windows NT/2000-PDC besitzt. Wir setzten security = domain in der Samba-Konfigurationsdatei, so dass der Samba-Server die Authentifizierung dem Windows-PDC überließ. Bei dieser Methode werden die Kennwörter nur auf dem PDC vorgehalten. Allerdings ist es immer noch erforderlich, die Benutzerzugänge auf der Unix-Seite einzurichten, um sicherzustellen, dass jeder Client eine gültige Unix-Benutzer-ID (UID) sowie eine Gruppen-ID (GID) hat. Das ist notwendig, um die Dateieigentümerschaften und berechtigungen des Unix-Sicherheitsmodells durchzusetzen. Immer wenn Samba im Namen des Windows-Clients eine Operation auf dem Unix-Dateisystem durchführt, muss der Benutzer sowohl eine gültige UID als auch eine gültige GID auf dem lokalen Unix-System haben. Eine kürzlich in Samba aufgenommene Funktion namens winbind erlaubt es dem
Windows-PDC nicht nur, die Authentifizierung vorzunehmen, sondern auch die Benutzer- und Gruppeninformationen zu verwalten. winbind erweitert die UnixBenutzer- und -Gruppendatenbanken über die normalen /etc/passwd- und /etc/ group-Dateien hinaus, so dass Benutzer und Gruppen auf dem Windows-PDC auch als gültige Benutzer und Gruppen auf dem Unix-System existieren. Die Erweiterung gilt für das gesamte Unix-System und erlaubt es Benutzern, die Mitglieder einer Windows-Domäne sind, alle Aktionen auf dem Unix-System auszuführen, die auch ein lokaler Benutzer ausführen kann. Dies schließt die Anmeldung über telnet am Unix-System oder sogar am lokalen System ein. Dazu verwenden sie ihre DomänenBenutzernamen und -Kennwörter. Wenn winbind verwendet wird, kann die Administration der Benutzerzugänge auf dem Windows-PDC erledigt werden. Es ist nicht nötig, die Aufgaben auf der UnixSeite zu wiederholen. Dazu gehört der Verfall der Kennwörter und die Möglichkeit für die Benutzer, ihre Kennwörter zu ändern, was ansonsten nicht praktikabel wäre. Neben der Tatsache, dass es die Domänen-Administration vereinfacht und eine Menge Zeit spart, erlaubt winbind den Einsatz von Samba in Rechenumgebungen, in denen es sonst nicht erlaubt wäre.
Da sich dieses Kapitel um die Sicherheit dreht, wollen wir darauf hinweisen, dass einige Belange dazu führen, dass ein WindowsSystem Benutzer authentifizieren darf, die auf ein Unix-System zugreifen! Was immer Sie auch über die jeweiligen Vorteile der Sicherheitsmodelle von Unix und Windows denken (und wichtiger noch: deren Implementierungen), eines ist gewiss: Wenn Sie Ihren Samba-Server um winbind-Unterstützung erweitern, verkomplizieren Sie die Authentifizierung als Gesamtvorgang deutlich - und bieten vermutlich Angreifern mehr Möglichkeiten.
Wir stellen winbind in diesem Kapitel nicht als Mittel zur Verbesserung der Sicherheit vor, sondern als weiteres Beispiel für Sambas Fähigkeit, sich in eine moderne Windows-Umgebung einzubringen.
winbind installieren Das Installieren und Konfigurieren von winbind ist relativ kompliziert und erfordert die folgenden Schritte: 1. Neukonfiguration, Neukompilierung und Neuinstallation von Samba - um Unterstützung für winbind hinzuzufügen. 2. Konfiguration des Unix Name Server Switch. 3. Anpassung der Samba-Konfigurationsdatei. 4. Start und Test des winbindd-Daemons.
5. Konfiguration des Systems für den automatischen Start und Stopp des winbindd-Daemons. 6. Optional die Konfiguration von PAM für den Einsatz mit winbind. Zum Zeitpunkt der Drucklegung dieses Buches gab es nur in Linux Unterstützung für winbind; alle folgenden Anweisungen gelten also nur für dieses System. Später werden möglicherweise auch andere Unix-Varianten unterstützt. Außerdem gehen wir davon aus, dass Sie in Ihrem Netzwerk einen Windows NT/2000-PDC betreiben. Zuerst müssen Sie Samba mit der Konfigurationsoption --with-winbind kompilieren und konfigurieren. Anweisungen dafür finden Sie in Kapitel 2 im Abschnitt »Samba konfigurieren«. Rufen Sie wie üblich make install auf, um die Samba-Binärdateien zu konfigurieren.
nsswitch konfigurieren Wenn Samba nach dem Konfigurieren mit der Option --with-winbind kompiliert wurde, erzeugt der Kompilierungsprozess eine Bibliothek namens libnss_winbind.so im Verzeichnis source/nsswitch. Diese Bibliothek muss in das Verzeichnis /lib kopiert werden: # cp nsswitch/libnss_winbind.so /lib
Außerdem muss für winbind ein symbolischer Link angelegt werden, damit es richtig funktioniert: # ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
Der Name dieses symbolischen Links ist korrekt für Samba 2.2.3 und Red Hat 7.1. In künftigen Ausgaben könnte sich der Name ändern - vermutlich erhält er eine höhere Versionsnummer. Näheres finden Sie in der winbindd-Manpage. Als Nächstes passen Sie die Datei /etc/nsswitch.conf so an, dass die Zeilen für passwd und group so aussehen: passwd:
files winbind
group:
files winbind
Anschließend aktivieren Sie diese Änderungen, indem Sie den folgenden Befehl
aufrufen: # /sbin/ldconfig
Damit haben Sie gerade den Linux Name Service Switch konfiguriert, der es Ihnen erlaubt, den Namensdienst und andere Aufgaben mittels der traditionellen Methode (Dateien im Verzeichnis /etc) zu konfigurieren oder eine Erweiterung zu nutzen, die in einer Bibliothek wie etwa der libnss_winbind.so-Bibliothek kodiert ist, die Sie gerade installiert haben. In der Konfiguration wurde angegeben, dass Samba nach den Benutzer- und Gruppeninformationen zuerst in den Dateien /etc/passwd und / etc/group sucht. Sind sie dort nicht zu finden, sucht es im winbind-Dienst.
Die smb.conf anpassen Um winbind benutzen zu können, müssen Sie den Samba-Server als DomänenMember-Server in die Windows NT-Domäne einfügen (wie in Kapitel 4 beschrieben) und einige Parameter in die Samba-Konfigurationsdatei aufnehmen, um winbind zu konfigurieren. Zusätzlich zu den Optionen, die erforderlich sind, um Samba als Domänen-Member-Server zu konfigurieren, wird Folgendes benötigt: [global] winbind uid = 10000-20000 winbind gid = 10000-20000
Die Optionen winbind uid und winbind gid teilen winbind mit, wie die WindowsRIDs (Relative Identifiers) auf die Unix-UIDs und -GIDs abgebildet werden. Windows verwendet RIDs, um Benutzer und Gruppen innerhalb der Domäne zu identifizieren. Um zu funktionieren, muss das Unix-System mit jeder Benutzer- und Gruppen-RID, die vom Windows-PDC empfangen wird, eine UID und eine GID verknüpft haben. Die Parameter winbind uid und winbind gid liefern winbind einfach einen Bereich von UIDs bzw. GIDs, die vom Systemadministrator für Windows NT-DomänenBenutzer und -Gruppen freigehalten wurden. Sie können für diesen Zweck einen beliebigen Bereich verwenden; stellen Sie einfach nur sicher, dass die niedrigste Zahl in dem Bereich nicht mit den Einträgen in den Dateien /etc/passwd oder /etc/ group kollidiert - und zwar weder jetzt noch in Zukunft. An dieser Stelle müssen Sie unbedingt vorsichtig sein. Wenn winbind erst einmal eine RID- auf UID/GIDAbbildung in seine Datenbank aufgenommen hat, ist es nicht einfach, diese zu ändern.
Die Datei /usr/local/samba/locks/winbindd_idmap.tdb enthält standardmäßig die RID-Zuordnungsdatei von winbind. Sie sollten diese Datei als außerordentlich sensibel betrachten und sie vor jeder Art von Schaden oder gar Verlust schützen. Wenn Sie sie
verlieren, müssen Sie sie manuell wieder herstellen, was sehr aufwändig sein kann.
Seien Sie vorsichtig, wenn Sie lokale Benutzer anlegen, nachdem die Domänen-Benutzer damit begonnen haben, auf den SambaServer zuzugreifen. Die Domänen-Benutzer haben speziell für sie von winbind erzeugte Einträge in /etc/passwd, wobei ihre UIDs in dem von Ihnen festgelegten Bereich liegen. Wenn Sie beim Anlegen neuer Zugänge eine Methode wählen, die automatisch UIDs zuweist, geschieht die Wahl der UIDs möglicherweise in der Form, dass zur bisher höchsten zugewiesenen UID 1 addiert wird. Dabei wird es sich um die neueste von winbind angelegte UID handeln. (Das ist beispielsweise unter Red Hat Linux mit dem useradd-Skript der Fall.) Die UID für den neuen lokalen Benutzer befindet sich dann in dem Bereich, der für winbind reserviert ist, wodurch sich unvorhersehbare Auswirkungen ergeben können. Achten Sie darauf, dass sich die zugewiesenen UIDs beim Anlegen neuer Benutzer im richtigen Bereich bewegen. Sie könnten zum Beispiel die Option -u des useradd-Skripts verwenden, um dem neuen Benutzer eine UID zuzuweisen. Starten Sie die Samba-Daemons neu, um die Änderungen an der Konfigurationsdatei zu aktivieren. Falls Sie das noch nicht erledigt haben, als Sie Ihren Samba-Server zum Domänen-Member-Server beförderten, müssen Sie diesen Befehl ausführen: # smbpasswd -j domain -r pdc -U Administrator
wie wir in Kapitel 4 beschrieben haben. Jetzt können Sie den winbindd-Daemon starten: # winbindd
Möglicherweise wollen Sie einen ps ax-Befehl ausführen, um nachzuschauen, ob der winbindd-Daemon wirklich läuft. Um nun sicherzustellen, dass alle bisherigen Einstellungen funktionieren, können Sie den Samba-Befehl wbinfo verwenden: $ wbinfo -u METRAN\Administrator METRAN\bebe METRAN\Guest METRAN\jay
METRAN\linda $ wbinfo -g METRAN\Domain Admins METRAN\Domain Guests METRAN\Domain Users
Die Option -u fragt den Domänen-Controller nach einer Liste der DomänenBenutzer. Die Option -g fordert die Liste der Gruppen an. Die Ausgabe zeigt, dass das Samba-Host-System den Windows-PDC über winbind abfragen kann. Darüber hinaus sollte nun die Liste der Benutzer und Gruppen geprüft werden. Dazu verwenden Sie den Befehl getent: # getent passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: ... gelöscht ... jay:x:500:500:Jay Ts:/home/jay:/bin/bash rik:x:501:501::/home/rik:/bin/bash METRAN\Administrator:x:10000:10000::/home/METRAN/administrator:/bin/bash METRAN\bebe:x:10001:10000:Bebe Larta:/home/METRAN/bebe:/bin/bash METRAN\Guest:x:10002:10000::/home/METRAN/guest:/bin/bash METRAN\jay:x:10003:10000:Jay Ts:/home/METRAN/jay:/bin/bash METRAN\linda:x:10004:10000:Linda Lewis:/home/METRAN/linda:/bin/bash
# getent group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon ... gelöscht ... jay:x:500:
rik:x:501: METRAN\Domain Admins:x:10001:METRAN\Administrator METRAN\Domain Guests:x:10002:METRAN\Guest METRAN\Domain Users:x:10000:METRAN\Administrator,METRAN\jay,METRAN \linda,METRAN\bebe
Dies zeigt, dass das Linux-System die Domänen-Benutzer und -Gruppen über winbind findet, und das zusätzlich zu denen in den Dateien /etc/passwd und /etc/ group. Funktioniert dieser Teil nicht so, wie zuvor gezeigt, das heißt, sind die Domänen-Benutzer und -Gruppen nicht nach den lokalen Benutzern und Gruppen aufgeführt, prüfen Sie, ob Sie den symbolischen Link auf libnss_winbind.so im Verzeichnis /lib richtig angelegt haben. Nun können Sie versuchen, von einem Windows-System aus mit einem DomänenZugang eine Verbindung zu einer Samba-Freigabe herzustellen. Sie können sich entweder von einer Windows NT/2000/XP-Workstation aus an einer Domäne anmelden oder smbclient mit der Option -U verwenden, um einen Benutzernamen anzugeben.
Falls Sie Fehlermeldungen erhalten, während Sie versuchen, sich an der Domäne anzumelden, liegt das vermutlich daran, dass Sie das Client-System zuvor mit einem Computerzugang auf einem anderen Domänen-Controller konfiguriert hatten. Üblicherweise erscheint ein Dialog, der sagt: »Die Domäne NAME ist nicht verfügbar.« Auf einem Windows 2000-System müssen Sie sich dann als administrativer Benutzer am System anmelden und die Systemsteuerung öffnen. Doppelklicken Sie auf das Symbol System, klicken Sie die Registerkarte Netzwerkidentifikation an und wählen Sie dann den Button Eigenschaften. In dem sich öffnenden Dialog klicken Sie auf den Radio-Button Arbeitsgruppe: und setzen den Namen der Arbeitsgruppe ein (dieser darf mit dem Namen der Domäne identisch sein). Klicken Sie auf die OKButtons in den Dialogen und starten Sie auf Anforderung den Rechner neu.
Dies löscht den Computerzugang vom primären DomänenController. Melden Sie sich jetzt erneut als administrativer Benutzer an und wiederholen Sie die vorangegangenen Schritte; ändern Sie nun jedoch die Arbeitsgruppe zurück auf die Domäne.
Dadurch wird ein neuer Computerzugang angelegt, der die Workstation an den neuen primären Domänen-Controller »anpasst«. Verfügt Ihr Netzwerk über Backup-DomänenController, kann es bis zu 15 Minuten dauern, bis der neue Zugang den BDCs bekannt gemacht worden ist.
Unter Windows NT/XP müssen Sie ein wenig anders vorgehen. In Kapitel 4 finden Sie die für Ihre Windows-Version passende exakte Vorgehensweise. Nachdem Sie sich als Domänen-Benutzer angemeldet haben, versuchen Sie einmal, eine oder zwei Dateien in einer Samba-Freigabe zu erzeugen. (Möglicherweise müssen Sie die Berechtigungen auf dem freigegebenen Verzeichnis - auf, sagen wir einmal, 777 - ändern, um diesen Zugriff zu erlauben. Dieser Wert ist sehr großzügig. Wenn Sie mit dem Lesen dieses Abschnitts fertig sind, werden Sie allerdings verstanden haben, wie Sie die Eigentümerschaft und die Berechtigungen auf dem Verzeichnis so anpassen, dass der Zugriff nur noch ausgewählten DomänenBenutzern erlaubt ist.) Wenn Sie dann über einen oder mehrere Domänen-Benutzer Dateien erzeugt haben, werfen Sie von einer Linux-Shell aus einmal einen Blick auf den Inhalt des Verzeichnisses. Sie werden Folgendes sehen: $ ls -l /u -rwxrw-rw-
1 METRAN\b METRAN\D
0 Apr 13 00:00 bebes-file.doc
-rwxrw-rw-
1 METRAN\l METRAN\D
0 Apr 12 23:58 lindas-file.doc
drwxrwxr-x
6 jay
jay
-rwxrw-rw-
1 10001
10000
0 Apr 13 00:00 bebes-file.doc
-rwxrw-rw-
1 10004
10000
0 Apr 12 23:58 lindas-file.doc
drwxrwxr-x
6 500
500
4096 Jan 15 05:12 snd
$ ls -ln /u total 4
4096 Jan 15 05:12 snd
Sie können sogar die Domänen-Benutzernamen und -Gruppen von der Linux-Shell aus sehen: # chown 'METRAN\linda:METRAN\Domain Users' /u # ls -ldu /u drwxrwxrwx # ls -ldn /u
3 METRAN\l METRAN\D
4096 Apr 13 00:44 /u
drwxrwxrwx
3 10004
10000
4096 Apr 13 00:00 /u
Beachten Sie, wie der Benutzer und die Gruppe als Domänen-Benutzer und Domänen-Gruppe erkennbar sind. Leider zeigt der GNU-Befehl ls nicht die vollständigen Namen der Domänen-Benutzer und -Gruppen, wir können uns aber mit dem -ln-Listing die UIDs und GIDs anzeigen und dies dann mit dem Befehl wbinfo übersetzen lassen: $ wbinfo -s `wbinfo -U 10004` METRAN\LINDA 1 $ wbinfo -s `wbinfo -G 10000` METRAN\Domain Users 2
(Das ist ein bisschen kompliziert, aber es funktioniert und zeigt außerdem, dass das winbind-System korrekt arbeitet!) An dieser Stelle könnten Sie Ihr /etc/rc.d/init.d/ smb-Skript ändern, um den winbindd-Daemon automatisch zusammen mit den smbd- und nmbd-Daemons starten und stoppen zu lassen. Beginnend mit dem Skript, das wir Ihnen in Kapitel 2 gezeigt haben, fügen Sie zuerst diesen Code in die start( )-Funktion ein: echo -n $"Start der WINBIND-Dienste: " /usr/local/samba/bin/winbindd ERROR2=$? if [ $ERROR2 -ne 0 ] then ERROR=1 fi echo
Der eben gezeigte Code sollte hinter dem Code stehen, der nmbd startet, sowie vor der return-Anweisung.
Starten Sie winbindd nach nmbd, da winbindd nmbd benötigt, um richtig zu funktionieren.
In die stop( )-Funktion fügen Sie Folgendes ein: echo -n $"Stoppen der WINBIND-Dienste: " /bin/kill -TERM -a winbindd ERROR2=$? if [ $ERROR2 -ne 0 ] then ERROR=1 fi echo
Auch dieser Code sollte hinter dem Code, der nmbd stoppt, und vor der returnAnweisung stehen.
PAM konfigurieren Die meisten populären Linux-Distributionen verwenden Pluggable Authentication Modules (PAM), eine Sammlung von Shared Libraries, die eine zentrale Authentifizierungsquelle für Anwendungen darstellen, die auf dem Unix-System laufen. PAM kann für jede Anwendung (oder jeden Dienst), die es einsetzt, anders konfiguriert werden, ohne dass die Anwendung neu kompiliert werden muss. Hier ein hypothetisches Beispiel: Wenn die Sicherheitsrichtlinien einer Organisation die Verwendung von Kennwörtern verlangen würden, die genau zehn Zeichen lang sind, könnte ein PAM-Modul geschrieben werden, das die Länge der Kennwörter überprüft, die die Benutzer eingeben, und alle Versuche abweist, ein längeres oder kürzeres Kennwort einzugeben. PAM würde dann neu konfiguriert werden, um Dienste wie ftp, Konsolenanmeldungen und Anmeldungen über die grafische Oberfläche zu verarbeiten, die PAM aufrufen, um Benutzer zu authentifizieren. Falls Sie mit PAM noch nicht vertraut sind, empfehlen wir Ihnen, die Dokumentation zu lesen, die mit dem Linux-PAM-Paket geliefert wird, bevor Sie hier weitermachen. Auf den meisten Linux-Systemen befindet es sich in der Verzeichnishierarchie /usr/ share/doc. Eine weitere Ressource ist der Linux-PAM System Administrator's Guide, den Sie im Internet unter http://www.kernel.org/pub/linux/libs/pam finden können. Der Rest dieses Abschnitts handelt von der Benutzung des PAM-Moduls, das in der Samba-Distribution enthalten ist und Benutzer von Windows-Domänen in die Lage versetzen soll, sich an dem Linux-System zu authentifizieren, auf dem Samba läuft. Je nachdem, welche Dienste Sie konfigurieren wollen, erlaubt dies WindowsDomänen-Benutzern, sich an einer lokalen Konsole (oder über telnet) anzumelden, sich über den grafischen Desktop am Linux-System anzumelden, sich an einem FTPServer zu authentifizieren, der auf dem Linux-System läuft, oder andere Dienste zu benutzen, die normalerweise Benutzern vorbehalten sind, die einen Zugang auf dem Linux-System besitzen. Das PAM-Modul authentifiziert Windows-Domänen-Benutzer, indem es winbind abfragt, das die Authentifizierung an einen Windows NT-Domänen-
Controller übergibt. Als Beispiel wollen wir Ihnen zeigen, wie Sie es Windows-Domänen-Benutzern erlauben, sich an einer Textkonsole auf dem Linux-System anzumelden und die Kommando-Shell sowie ein Home-Verzeichnis zu erhalten. Die in unserem Beispiel angewandten Methoden können (mit Variationen) auf andere Dienste übertragen werden. Alle Benutzer, die sich am Linux-System anmelden können, benötigen eine Shell und ein Home-Verzeichnis. Unix und Linux bewahren die Benutzerinformationen in der Kennwortdatei (/etc/passwd ) auf, dort stehen jedoch keine Informationen über Windows-Benutzer. Stattdessen fügen wir in die Samba-Konfigurationsdatei die folgenden Zeilen ein, um winbind davon in Kenntnis zu setzen, welches die Shell und das Home-Verzeichnis für die Benutzer der Windows-Domäne sein sollen: [global] template shell = /bin/bash template homedir = /home/%D/%U
Die erste Zeile legt den Parameter template shell fest, der winbind mitteilt, welche Shell für Domänen-Benutzer verwendet werden soll, die sich an dem Unix-Host anmelden. Der Parameter template homedir gibt die Lage der Home-Verzeichnisse der Benutzer an. Die Variable %D wird durch den Namen der Domäne ersetzt, in der sich der Zugang des Benutzers befindet. %U wird durch den Benutzernamen des Benutzers in dieser Domäne ersetzt. Bevor sich die Domänen-Benutzer erfolgreich anmelden können, müssen ihre HomeVerzeichnisse manuell angelegt werden. Um einen Zugang für linda in der Domäne METRAN hinzuzufügen, müssten Sie diese Befehle einsetzen: # mkdir /home/METRAN # chmod 755 /home/METRAN
# mkdir /home/METRAN/linda # chown 'METRAN\linda:METRAN\Domain Users' /home/METRAN/linda # chmod 700 /home/METRAN/linda
Das Anlegen der Home-Verzeichnisse hat eine Nebenwirkung.
Wenn der Samba-Server mit einer [homes]-Freigabe konfiguriert ist, können die Domänen-Benutzer ihre Home-Verzeichnisse über das Samba-Filesharing sehen und darauf zugreifen. Als Nächstes müssen Sie das PAM-Modul in der Samba-Distribution kompilieren und installieren. Rufen Sie im Quellverzeichnis der Samba-Distribution die folgenden Befehle auf: # make nsswitch/pam_winbind.so # cp nsswitch/pam_winbind.so /lib/security
und überprüfen Sie, ob alles richtig kopiert wurde: # ls /lib/security/pam_winbind.so /lib/security/pam_winbind.so
Unter Red Hat Linux befinden sich die PAM-Konfigurationsdateien im Verzeichnis / etc/pam.d. Bevor Sie irgendetwas verändern, sollten Sie auf jeden Fall eine Sicherungskopie dieses Verzeichnisses anlegen: # cp -pR /etc/pam.d /etc/pam.d.backup
Der Grund dafür ist, dass wir die Methode des Linux-Systems zum Authentifizieren von Logins verändern werden. Schlägt die Konfiguration fehl, werden alle Benutzer (einschließlich root) aus dem System ausgesperrt. Falls der schlimmste Fall eintritt, müssten wir das System im Einbenutzermodus neu starten (durch Eingabe von linux single am LILO:-Prompt) oder von einer Notfalldiskette booten und dann diese beiden Befehle ausführen: # mv /etc/pam.d /etc/pam.d.bad # mv /etc/pam.d.backup /etc/pam.d
Achten Sie sorgfältig darauf, dass Sie alle Fehler, die Sie möglicherweise machen, wieder beheben können, da PAM den Zugriff verweigert, wenn es Konfigurationsinformationen entdeckt, die es nicht versteht. Das bedeutet, dass Sie alles richtig eingeben müssen! Vermutlich sollten Sie während der Arbeit an Ihrer PAM-Konfiguration auf einem eigenen Terminal als root angemeldet bleiben, um eine Möglichkeit zu haben, leicht alles wieder rückgängig zu machen. Im Verzeichnis /etc/pam.d finden Sie eine Datei für alle Dienste, die PAM verwenden. Uns interessiert nur die Datei, die dem Login-Dienst entspricht und die die Bezeichnung login trägt. Sie enthält die folgenden Zeilen: auth
required
/lib/security/pam_securetty.so
auth
required
/lib/security/pam_stack.so service=system-auth
auth
required
/lib/security/pam_nologin.so
account
required
/lib/security/pam_stack.so service=system-auth
password
required
/lib/security/pam_stack.so service=system-auth
session
required
/lib/security/pam_stack.so service=system-auth
session
optional
/lib/security/pam_console.so
Die Zeilen, die mit auth beginnen, haben mit der Funktion der Authentifizierung zu tun - das heißt dem Ausgeben eines Kennwort-Prompts, Akzeptieren des Kennworts, Überprüfen, dass es korrekt ist, und Zuordnen einer gültigen Benutzer- und Gruppen-ID zu dem Benutzer. Die Zeile, die mit account beginnt, dient der Zugangsverwaltung und erlaubt es, den Zugriff durch weitere Faktoren zu steuern, beispielsweise über die Tageszeiten, zu denen dem Benutzer der Zugriff erlaubt ist. Wir befassen uns nicht mit den Zeilen, die mit password oder session beginnen, da winbind keiner dieser Funktionen etwas hinzufügt. Die dritte Spalte listet das PAM-Modul auf - eventuell mit Argumenten -, das für diese Aufgabe aufgerufen wird. Das Modul pam_stack.so wurde von Red Hat hinzugefügt, um als eine Art Makro oder Subroutine zu agieren. Es ruft die Datei im Verzeichnis pam.d auf, die durch das Dienstargument genannt wird. In diesem Fall enthält die Datei /etc/pam.d/system-auth eine Reihe von Zeilen, die als gemeinsamer Standardwert für viele Dienste verwendet werden. Da wir den LoginDienst für winbind anpassen wollen, ersetzen Sie zuerst die pam_stack.so-Zeilen für auth und account durch die auth- und account-Zeilen aus /etc/pam.d/systemauth. Dies ergibt: auth
required
/lib/security/pam_securetty.so
auth required /lib/security/pam_env.so auth sufficient /lib/security/pam_unix.so likeauth nullok auth required /lib/security/pam_deny.so auth
account
required
required
/lib/security/pam_nologin.so
/lib/security/pam_unix.so
password
required
/lib/security/pam_stack.so service=system-auth
session
required
/lib/security/pam_stack.so service=system-auth
session
optional
/lib/security/pam_console.so
Um winbind-Unterstützung hinzuzufügen, müssen Sie in die Abschnitte auth und account eine Zeile aufnehmen, die das Modul pam_winbind.so aufruft:
auth
required
/lib/security/pam_securetty.so
auth
required
/lib/security/pam_env.so
auth sufficient /lib/security/pam_winbind.so auth sufficient likeauth nullok
/lib/security/pam_unix.so use_first_pass
auth
required
/lib/security/pam_deny.so
auth
required
/lib/security/pam_nologin.so
account sufficient /lib/security/pam_winbind.so account
required
/lib/security/pam_unix.so
password
required
/lib/security/pam_stack.so service=system-auth
session
required
/lib/security/pam_stack.so service=system-auth
session
optional
/lib/security/pam_console.so
Die Schlüsselwörter required und sufficient in der zweiten Spalte sind entscheidend. Das Schlüsselwort required legt fest, dass das Ergebnis, das vom Modul zurückgeliefert wird (die Authentifizierung entweder durchzuführen oder fehlschlagen zu lassen), beachtet werden muss, während das Schlüsselwort sufficient angibt, dass keine weiteren Zeilen verarbeitet werden müssen, falls das Modul den Benutzer erfolgreich authentifiziert. Indem wir sufficient für das Modul pam_winbind.so angeben, erlauben wir es winbind, die Benutzer zu authentifizieren. Gelingt dies, kehrt das PAM-System zur Anwendung zurück. Findet das Modul pam_winbind.so den Benutzer nicht oder stimmt das Kennwort nicht überein, fährt das PAM-System mit der nächsten Zeile fort, in der die Authentifizierung entsprechend der üblichen Linux-Benutzerauthentifizierung durchgeführt wird. Auf diese Weise können sich sowohl Domänen-Benutzer als auch lokale Benutzer anmelden. Beachten Sie, dass wir im Abschnitt auth auch das Argument use_first_pass in das pam_unix.so-Modul aufgenommen haben. Standardmäßig geben sowohl pam_winbind.so als auch pam_unix.so einen Kennwort-Prompt aus und akzeptieren ein Kennwort. In solchen Fällen, in denen sich Benutzer am Linux-System über ihre lokalen Zugänge anmelden wollen, müssten sie ihr Kennwort zweimal eingeben. Das Argument user_first_pass weist das Modul pam_unix.so an, das Kennwort noch einmal zu verwenden, das an das Modul pam_winbind.so übergeben wurde. Die Benutzer müssen also ihr Kennwort nur einmal eintippen. Nach dem Verändern der Konfigurationsdatei login schalten Sie auf eine freie virtuelle Konsole um und testen, ob Sie sich immer noch mit einem normalen LinuxZugang anmelden können. Falls nicht, prüfen Sie Ihre Modifikationen sorgfältig und versuchen es erneut, bis es klappt. Melden Sie sich dann mit einem DomänenBenutzerzugang aus der Windows-PDC-Datenbank an, um zu testen, ob die winbind-
Authentifizierung funktioniert. Sie müssen den Benutzernamen im Format DOMÄNE \benutzer angeben: login: METRAN\linda Password:
Weitere Informationen über die Konfiguration von winbind finden Sie in der Datei der Samba-Quelldistribution docs/htmldocs/winbind.html sowie auf der winbinddManpage. Falls Sie mehr über das Konfigurieren von PAM erfahren wollen, empfehlen wir Ihnen die Webseite http://www.kernel.org/pub/linux/libs/pam/ als Ausgangspunkt. Einige der Dokumentationen für Linux PAM, einschließlich der Erweiterungen von Red Hat, finden Sie auch bei Red Hat Linux in /usr/share/doc/ pam-version.
winbind-Konfigurationsoptionen Tabelle 9-9 fasst einige der häufiger verwendeten Optionen zusammen, die Sie zum Konfigurieren von winbind einsetzen können.
Tabelle 9-9 winbind-Optionen Option
Parameter
winbind String (einzelnes separator Zeichen)
Funktion
Vorgabewert Geltungsbereich
Zeichen, das in DomänenBenutzernamen und Gruppennamen als Trennzeichen verwendet wird.
Backslash (\)
global
winbind uid
String (Zahlenbereich)
Bereich der UIDs für die RID-aufUID-Zuordnung.
keiner
global
winbind gid
String (Zahlenbereich)
Bereich der GIDs für die RID-aufGID-Zuordnung.
keiner
global
numerischer Wert
Anzahl der Sekunden, die der winbindd15 Daemon Benutzer- und Gruppendaten zwischenspeichert.
winbind cache time
global
template homedir
Verzeichnis, das als HomeVerzeichnis des String angemeldeten (Verzeichnisname) DomänenBenutzers verwendet wird.
template shell
Das Programm, das als Shell des angemeldeten DomänenBenutzers verwendet wird.
String (Befehlsname)
/home/%D/%U
global
/bin/false
global
winbind separator Auf Windows-Systemen wird der Backslash (\) üblicherweise als Trennzeichen in Dateinamen, UNCs und den Namen der Domänen-Benutzer und -Gruppen verwendet. Beispielsweise würde ein Zugang in der Domäne METRAN mit dem Benutzernamen linda als METRAN\linda geschrieben werden. Auf Unix-Systemen wird der Backslash üblicherweise als Metazeichen zum Schützen (Quoting) anderer Zeichen benutzt. Der Zugang müsste daher als METRAN\\linda oder 'METRAN \linda' angegeben werden. Der Parameter winbind separator erlaubt es, statt des Backslash-Zeichens ein anderes Zeichen zu verwenden, wodurch sich das Eingeben von Domänen-Benutzer- und -Gruppennamen vereinfacht. Mit [global] winbind separator = +
könnte der gerade gezeigte Zugang auf dem Unix-Host als METRAN+linda geschrieben werden, wodurch die zusätzlichen Backslashes oder einfachen Anführungszeichen unnötig werden würden. winbind verwendet dann das gleiche Format zum Ausgeben von Domänen-Benutzer- und -Gruppennamen. winbind uid Als Teil seiner Aufgabe, die Benutzer einer Windows NT-Domäne als lokale Benutzer auf dem Unix-Host funktionieren zu lassen, liefert winbindd eine Unix-UID, die mit der Windows-RID des Domänen-Benutzers verknüpft ist. Der Parameter winbind uid erlaubt es dem Administrator des Unix-Systems, für diesen Zweck einen Bereich von UIDs zu reservieren. Es ist äußerst wichtig, dass dieser Bereich sich nicht mit anderen UIDs überschneidet, die für andere Aufgaben auf dem Unix-System eingesetzt werden. Wir empfehlen Ihnen daher, diesen Bereich bei einer sehr hohen Zahl beginnen zu lassen, die viel größer ist als die Anzahl der lokalen und NISBenutzer, die jemals in Ihrem Netz existieren werden. winbind uid könnte beispielsweise auf einem System, das nie mehr als 9.999 lokale und NIS-Benutzer haben wird, als: [global] winbind uid = 10000-15000
angegeben werden. Da dieses Beispiel 5.000 UIDs für winbindd reserviert, wird davon ausgegangen, dass niemals mehr als 5.000 Domänen-Benutzer auf den Samba-Host zugreifen. Falls bei Ihnen beim Anlegen neuer lokaler Benutzer die UIDs automatisch zugewiesen werden, müssen Sie sicherstellen, dass diese nicht innerhalb des Bereichs des UIDs liegen, die für winbind reserviert sind. Dies könnte geschehen, wenn der verwendete Algorithmus zur bisher höchsten zugewiesenen UID einfach 1 hinzuzählt. Es gibt für winbind uid keinen Standardwert, Sie müssen also in Ihrer SambaKonfigurationsdatei einen Wert angeben, damit winbind funktioniert. winbind gid Diese Option funktioniert genau wie winbind uid, allerdings dient sie zum Reservieren eines Bereichs von GIDs für die Benutzung mit winbindd. Sie müssen vermutlich nicht so viele GIDs reservieren wie UIDs, da Sie wahrscheinlich relativ wenige Domänen-Gruppen haben, die entsprechende GIDs benötigen. (In vielen Fällen sind die Benutzer alle Mitglied in der Gruppe Domain Users, wodurch nur eine GID gebraucht wird.) Gehen Sie aber lieber auf Nummer sicher und reservieren Sie mehr GIDs, als Sie vermutlich benötigen werden. Wie bei winbind uid gilt es aufzupassen, dass die zum Zuweisen der GIDs verwendete Methode nicht mit winbind kollidiert, falls beim Anlegen neuer lokaler Benutzer auf Ihrem Unix-Host die GIDs automatisch zugewiesen werden. Setzen Sie ansonsten die GIDs manuell. Es gibt für winbind gid keinen Standardwert, Sie müssen also in Ihrer SambaKonfigurationsdatei einen Wert angeben, damit winbind funktioniert. winbind cache time Der winbindd-Daemon verwaltet einen Cache mit den Benutzer- und Gruppendaten, die er vom Windows-PDC bezogen hat, um die Netzwerkanfragen zu reduzieren und die Leistung zu verbessern. Der Parameter winbind cache time ermöglicht es, die Zeitspanne einzustellen (in Sekunden), die winbindd die gespeicherten Daten verwenden kann, bevor es den PDC wieder nach den aktuellen Daten fragen muss. Dieses Intervall ist standardmäßig auf 15 Sekunden gesetzt. Wenn also ein Teil eines Benutzer- oder Gruppenzugangs auf dem PDC verändert wurde, kann es bis zu 15 Sekunden dauern, bis winbindd seine eigene Datenbank aktualisiert hat. template homedir Wenn das lokale Unix-System so konfiguriert ist, dass es Domänen-Benutzern die Anmeldung erlaubt, muss der Benutzer für viele Programme, einschließlich Kommando-Shells, ein Home-Verzeichnis angeboten bekommen, damit diese richtig funktionieren. Die Option template homedir wird verwendet, um den Namen des Home-Verzeichnisses einzustellen. Im Namen des Verzeichnisses wird %D durch den Namen der Windows NT-Domäne ersetzt, in der der Benutzer sich befindet. Die Variable %U wird durch seinen Benutzernamen ersetzt. Standardmäßig ist template
homedir auf /home/%D/%U gesetzt, was für ein Netzwerk ganz gut funktioniert, in dem es mehr als eine Windows NT-Domäne gibt. Es ist dann für unterschiedliche Menschen in unterschiedlichen Domänen möglich, den gleichen Benutzernamen zu tragen. Wenn Sie sicher sind, dass Sie nie mehr als eine Windows NT-Domäne in Ihrem Netzwerk haben werden oder dass Sie zwar mehr als eine Domäne haben, aber wissen, dass ein Benutzer in mehreren Domänen den gleichen Benutzernamen trägt, könnten Sie template homedir so einstellen: [global] template homedir = /home/%U
template shell Diese Option gibt das Programm an, das als Shell für Domänen-Benutzer eingesetzt wird, die am Unix-Host angemeldet sind. Standardmäßig ist sie auf /bin/false gesetzt, wodurch Domänen-Benutzern die Anmeldung verwehrt wird. Falls Sie Anmeldungen von Domänen-Benutzern zulassen wollen, stellen Sie für template shell eine gültige Kommando-Shell (oder ein anderes Programm) ein, die als Textschnittstelle für Domänen-Benutzer dienen soll, sobald diese sich angemeldet haben. Eine verbreitete Einstellung unter Linux wäre: [global] template shell = /bin/bash
Hier erhalten die Benutzer die Bash-Shell für ihre interaktiven Sitzungen. 1Die Möglichkeit, dass in einem Netzwerk sowohl verschlüsselte als auch unverschlüsselte Kennwörter verwendet werden können, ist einer der Gründe dafür, dass Sie in Samba diverse Optionen ein- oder ausschließen können, basierend auf dem Client-Betriebssystem oder dem Namen des Clients. 2Das hat seinen Grund darin, dass das Unix-Programm passwd, das üblicherweise diesen Vorgang ausführt, es root erlaubt, das Kennwort eines Benutzers ohne die Sicherheitsbeschränkungen zu ändern, bei denen nach dem alten Kennwort dieses Benutzers gefragt wird.
Kapitel 10 Drucken Dieses Kapitel befasst sich damit, wie Drucker für den Gebrauch mit Samba eingerichtet werden. Abgesehen davon, dass es »cool« ist, wenn Dokumente aus Windows-Textverarbeitungs- und Grafikprogrammen im Ausgabeschacht des UnixDruckers landen, erhöht diese Fähigkeit im entscheidenden Maße den Nutzen Ihres Samba-Servers. In vielen Einrichtungen hat der Einsatz eines Unix-Systems als DruckServer Systemadministratoren und Benutzer gleichermaßen glücklich gemacht, da viel seltener Probleme auftreten. Samba erlaubt Client-Maschinen die Nutzung von Druckern, die an das Samba-HostSystem angeschlossen sind. Samba kann außerdem Unix-Dokumente an Drucker schicken, die von Windows-Systemen freigegeben werden. In diesem Kapitel werden wir uns ansehen, wie Drucker konfiguriert werden müssen, um in diesen beiden Richtungen eingesetzt werden zu können. Wir konzentrieren uns darauf, Samba für Drucker bereit zu machen, die bereits am Unix-Host funktionieren. Sie erfahren darüber hinaus einige grundlegende Dinge über das Einrichten von Druckern unter Unix. Weitere Informationen über dieses Thema finden Sie unter anderem in den Büchern Network Printing, Unix System-Administration und Linux - Wegweiser zur Installation & Konfiguration von O'Reilly.
Druck-Jobs an Samba senden Ein Drucker, der vom Samba-Server freigegeben wird, ist in der Liste der Freigaben in der Netzwerkumgebung zu sehen. Wenn der Drucker an der Client-Maschine registriert und auf dem Client der richtige Druckertreiber installiert ist, kann der Client mühelos Druck-Jobs an den Drucker schicken, der an den Samba-Server angeschlossen ist. Abbildung 10-1 zeigt einen Samba-Drucker in der Netzwerkumgebung eines WindowsClients. Abbildung 10-1 Ein Samba-Drucker in der Netzwerkumgebung
Um Drucker mit Samba zu verwalten, müssen Sie die grundlegenden Vorgänge
verstehen, die beim Drucken in einem Netzwerk ablaufen. Auf dem Client-System druckt die Anwendungssoftware, indem sie den Druckertreiber des Systems für denjenigen Drucker verwendet, der die eigentliche Ausgabe erzeugt. Die DruckertreiberSoftware, die auf dem Client-System läuft, übersetzt die Aufrufe der Anwendung in einen Strom von Binärdaten, die speziell für das verwendete Druckermodell geeignet sind. Im Fall eines seriellen, parallelen oder USB-Druckers werden die Daten in einer temporären Datei in der Druckerwarteschlange des lokalen Systems gespeichert und dann durch den entsprechenden Port direkt an den Drucker gesandt. Bei einem Netzwerkdrucker wird die Datei über das Netzwerk verschickt.
Da die Daten zu dem Zeitpunkt, an dem sie beim Samba-Host ankommen, bereits durch einen Druckertreiber verarbeitet worden sind, müssen Sie sicherstellen, dass der Drucker auf dem UnixSystem ohne Druckertreiber konfiguriert wurde und alle Daten, die er empfängt, in Reinform druckt. Haben Sie den Drucker schon für die Benutzung durch Unix-Anwendungen konfiguriert, müssen Sie möglicherweise eine weitere Warteschlange einrichten, damit Dokumente, die von den Windows-Clients kommen, korrekt ausgedruckt werden können. Das Senden eines Druck-Jobs an einen Drucker auf einem Samba-Server erfolgt in vier Schritten: 1. 2. 3. 4.
Öffnen und Authentifizieren einer Verbindung zur Druckerfreigabe Kopieren der Datei über das Netzwerk Schließen der Verbindung Drucken und Löschen der Kopie der Datei
Wenn ein Druck-Job an einem Samba-Server ankommt, wird er zeitweise in das Verzeichnis auf der Festplatte geschrieben, das durch die Option path der Druckerfreigabe festgelegt wurde. Samba führt dann einen Unix-Druckbefehl aus, um diese Datendatei an den Drucker zu senden. Der Job wird dann als der authentifizierte Benutzer der Freigabe gedruckt. Das kann - je nach Konfiguration der Freigabe - auch der Gastbenutzer sein.
Druckbefehle Um das Dokument drucken zu können, müssen Sie Samba über den Befehl informieren, der zum Drucken und Löschen einer Datei eingesetzt wird. Unter Linux mit seinem Drucksystem im BSD-Stil wird beispielsweise folgender Befehl verwendet: lpr -r -Pdrucker datei
Dieser Befehl weist lpr an, den Namen des Druckers aus der Systemkonfigurationsdatei (/etc/printcap) zu beziehen und die Regeln, die dort stehen, zu interpretieren, um zu entscheiden, wie die Daten verarbeitet werden müssen und an welches physische Gerät
sie geschickt werden sollen. Da die Option -r angegeben wurde, wird die Datei nach dem Drucken gelöscht. Natürlich handelt es sich bei der gelöschten Datei nur um eine Kopie auf dem Samba-Server - das Originaldokument auf dem Client wird nicht angetastet. Beim System V Unix verläuft dieser Vorgang ähnlich. Das Drucken und Löschen erfolgt hier über einen zusammengesetzten Befehl: lp -ddrucker -s datei; rm datei
In diesem Fall wird die Datei /etc/printcap durch eine andere Gruppe von Konfigurationsdateien ersetzt, die sich in /usr/spool/lp befinden. Da der Befehl lp keine Option zum Löschen einer Datei nach dem Drucken besitzt, haben wir den Befehl rm angefügt.
Eine minimale Druckinstallation Lassen Sie uns mit einer einfachen, aber anschaulichen Druckfreigabe beginnen. Nehmen Sie einmal an, dass Sie auf einem Linux-System sind und einen Drucker namens netprinter in der printcap-Datei haben. Der folgende Zusatz zu Ihrer smb. conf-Datei sorgt dafür, dass der Drucker über das Netzwerk verfügbar wird: [printer1] printable = yes print command = /usr/bin/lpr -P%p -r %s printer = netprinter printing = BSD path = /var/tmp
Die Variable %s in der Option print command wird durch den Namen der Datei ersetzt, die gedruckt werden soll, wenn Samba den Befehl ausführt. Es gibt vier Variablen in der Samba-Konfigurationsdatei, die speziell zusammen mit den Druckoptionen verwendet werden. Diese Variablen sehen Sie in Tabelle 10-1.
Tabelle 10-1 Druckvariablen Variable
Definition
%s
Der vollständige Pfadname der zu druckenden Datei auf dem SambaServer.
%f
Der Name der zu druckenden Datei selbst (ohne den vorangestellten Pfad) auf dem Samba-Server.
%p
Der Name des zu benutzenden Unix-Druckers.
Die Nummer des Druck-Jobs (für die Benutzung mit lprm, lppause und lpresume).
%j
Bei anderen Unix-Varianten müssen die Optionen printing und print command modifiziert werden. Für System V Unix würden wir angeben: [printer1] printing = SYSV print command = lp -d%p -s %s; rm %s
Mit dem Parameter printing = SYSV setzen wir Samba davon in Kenntnis, dass das lokale Drucksystem die System V Unix-Methode verwendet. Wie bereits erwähnt, ergibt die Variable %p den Namen des Druckers, während die Variable %s in den Namen der Datei aufgelöst wird. Die Clients müssen möglicherweise den Status eines Druck-Jobs abfragen, der an den Samba-Server gesandt wurde. Da Samba Druck-Jobs an das Unix-Drucksystem geschickt hat, die dort zwischengespeichert werden (so genanntes Spooling), könnten sich zu einem bestimmten Zeitpunkt eine ganze Reihe von Druck-Jobs in der Warteschlange befinden. Daher muss Samba dem Client nicht nur den Status des aktuellen Druck-Jobs mitteilen, sondern auch, welche Dokumente darauf warten, auf diesem Drucker gedruckt zu werden. Außerdem muss Samba dem Client die Möglichkeit bieten, Druck-Jobs anzuhalten, sie fortzusetzen und sie aus der Druckerwarteschlange zu entfernen. Samba stellt für all diese Aufgaben Optionen zur Verfügung. Wie Sie sich vielleicht vorstellen können, entlehnen sie ihre Funktionalität den folgenden existierenden Unix-Befehlen: ● ● ● ●
lpq lprm lppause lpresume
Wir werden diese Optionen weiter unten in diesem Kapitel genauer betrachten. Meist bietet Samba vernünftige Standardwerte für sie, die auf dem jeweiligen Wert der Konfigurationsoption printing beruhen. Sie können also vermutlich damit arbeiten, ohne ihre eigenen Befehle für sie formulieren zu müssen. Hier einige wichtige Bemerkungen, die Sie sich im Zusammenhang mit Druckfreigaben merken müssen: ●
●
●
Sie müssen in allen Druckerfreigaben printable = yes setzen (sogar in [printers]), damit Samba weiß, dass es sich um Druckerfreigaben handelt. Wenn Sie es vergessen, können die Freigaben nicht zum Drucken verwendet werden und werden stattdessen als Verzeichnisfreigaben behandelt. Wenn Sie die Konfigurationsoption path im Druckerabschnitt setzen, werden alle Dateien, die an den oder die Drucker geschickt werden, in das von Ihnen festgelegte Verzeichnis kopiert und nicht nach /tmp. Da in manchen UnixBetriebssystemen relativ wenig Plattenplatz für /tmp reserviert ist, bevorzugen viele Administratoren stattdessen /var/tmp, /var/spool/tmp oder ein anderes Verzeichnis. Wenn Sie in einer Druckerfreigabe guest ok = yes setzen und Samba für Sicherheit auf Freigabeebene konfiguriert ist, kann jeder als Gastbenutzer Daten
an den Drucker schicken. Die Benutzung einer oder mehrerer Samba-Maschinen als Druck-Server bietet Ihnen für Ihr LAN eine große Flexibilität. Sie können Ihre verfügbaren Drucker leicht aufteilen, indem Sie etwa einige auf die Mitglieder Ihrer Abteilung beschränken. Oder Sie stellen Ihre verschiedenen Drucker allen zur Verfügung. Darüber hinaus haben Sie die Möglichkeit, den Zugriff auf einen Drucker auf einige ausgewählte Personen zu begrenzen, indem Sie in seine Freigabe-Definition die Option valid users aufnehmen: [deskjet] printable = yes path = /var/spool/samba/print valid users = elizabeth cozy jack heather alexander lina emerald
Alle anderen Optionen zum Festlegen des Zugriffs auf eine Freigabe funktionieren auch für Druckerfreigaben.
Die Freigabe [printers] Befindet sich eine Freigabe namens [printers] in der Konfigurationsdatei, liest Samba automatisch Ihre printcap-Datei ein und erzeugt für jeden Drucker, der in dieser Datei auftaucht, eine Druckfreigabe. Hätte der Samba-Server zum Beispiel die Drucker lp, pcl und ps in seiner printcap-Datei, würde Samba drei Druckerfreigaben mit diesen Namen bereitstellen, die jeweils mit den Optionen in der Freigabe [printers] konfiguriert wären. Rufen Sie sich ins Gedächtnis zurück, dass Samba die folgenden Regeln befolgt, wenn ein Client eine Freigabe anfordert, die nicht mit einer expliziten Freigabe-Definition in der Datei smb.conf angelegt wurde: ●
●
●
Entspricht der Freigabename einem Benutzernamen in der Systemkennwortdatei und gibt es eine [homes]-Freigabe, wird eine neue Freigabe mit dem Namen des Benutzers angelegt. Diese Freigabe wird mit den Werten initialisiert, die in den Abschnitten [homes] und [global] vorgegeben wurden. Entspricht ansonsten der Name einem Drucker in der System-printcap-Datei und gibt es eine [printers]-Freigabe, wird eine neue Freigabe mit dem Namen des Druckers angelegt und mit den Werten aus dem Abschnitt [printers] initialisiert. (Die Variablen aus dem Abschnitt [global] gelten hier nicht.) Trifft keiner der beiden Fälle zu, sucht Samba nach einer default serviceFreigabe. Kann keine gefunden werden, wird ein Fehler zurückgegeben.
Dies bringt uns zu einem wichtigen Punkt: Achten Sie darauf, dass Sie nicht einem Drucker den gleichen Namen geben wie einem Benutzer. Ansonsten erhalten Benutzer auf einmal eine Verbindung zu einer Verzeichnisfreigabe, obwohl sie eigentlich eine Druckerfreigabe erreichen wollten. Nun folgt ein Beispiel einer [printers]-Freigabe für ein Linux-System. Einige dieser Optionen sind bereits Standardwerte. Zu Demonstrationszwecken haben wir sie jedoch trotzdem aufgeführt: [printers]
printable = yes printing = BSD printcap name = /etc/printcap print command = /usr/bin/lpr -P%p -r %s path = /var/spool/lpd/tmp min print space = 2000
Hier haben wir Samba globale Optionen übergeben, die den Drucktyp festlegen (BSD), einen Druckbefehl angeben, um die Daten an den Drucker zu senden und die temporäre Datei später zu entfernen, den Ablageort unserer printcap-Datei bestimmen und einen minimalen Plattenplatz von 2 MByte für das Drucken reservieren. Außerdem haben wir eine [printers]-Freigabe für die einzelnen Systemdrucker angelegt. Das temporäre Spool-Verzeichnis wird durch die Option path festgelegt: /var/ spool/ lpd/tmp. Alle Freigaben sind als druckbar (printable) gekennzeichnet - diese Option ist notwendig, sogar im Abschnitt [printers].
Die Konfiguration testen Nach dem Ausführen von testparm und Neustarten der Samba-Daemons können Sie überprüfen, ob alles richtig eingerichtet ist. Dazu senden Sie mit smbclient eine Datei an den Drucker. Stellen Sie mit dem folgenden Befehl eine Verbindung zum Drucker her: # smbclient /server/printfreigabe
und verwenden Sie dann den print-Befehl, um eine Datei zu drucken: smb: /> print textdatei
Wenn Sie eine Verbindung zu einer Druckfreigabe herstellen, die von einem Windows 95/98/Me-System angeboten wird, das mit Sicherheit auf Benutzerebene konfiguriert wurde und Sie mit Ihrem vermeintlich korrekten Benutzernamen und Kennwort nicht authentifizieren will, versuchen Sie eine Neukonfiguration des Windows-Systems mit Sicherheit auf Freigabeebene. Wenn Sie etwas mit smbclient über den Samba-Server ausdrucken, sollten folgende
Dinge passieren: ●
● ●
Der Job erscheint (kurz) im Samba-Spool-Verzeichnis, das durch den Pfad festgelegt wurde. Der Job wird im Spool-Verzeichnis Ihres Drucksystems angezeigt. Der Job verschwindet aus dem Spool-Verzeichnis, das Samba benutzt hat.
Kann smbclient nicht drucken, können Sie die Option print command zurücksetzen, um Fehlerinformationen zu sammeln: print command = echo "printed %s on %p" >>/tmp/printlog
Ein häufig auftretendes Problem bei der Samba-Druckerkonfiguration besteht darin, dass vergessen wird, die vollständigen Pfadnamen für Befehle zu verwenden. Ein anderes Problem, vor dem Sie ebenfalls oft stehen, ist das Fehlen der korrekten Berechtigungen auf dem Spool-Verzeichnis.1 Prüfen Sie wie gewöhnlich Ihre SambaProtokolldateien und die Systemprotokolldateien auf Fehlermeldungen. Falls Sie BSDDruck verwenden, können Sie das Schlüsselwort lp im printcap-Eintrag des Druckers auf etwas anderes als /dev/null setzen. Dadurch erhalten Sie die Möglichkeit, die Fehlermeldungen zu sammeln, die vom Drucksystem stammen.
Weitere Informationen über die Fehlerbehbung bei Druckern finden Sie in der Datei docs/textdocs/Printing.txt in der SambaQuelldistribution. Die Unix-Drucksysteme werden detailliert in Æleen Frischs Buch Unix System-Administration (O'Reilly Verlag) erläutert.
Aktivieren der SMB-Druckerfreigabe unter Mac OS X Da Samba unter Mac OS X vorinstalliert ist, ist es einfach, den Zugriff auf einen Drucker für Windows-Clients freizugeben. Zuerst natürlich müssen Sie den lokalen Zugriff einrichten. Dazu verwenden Sie das Programm Print Center (zu finden im Verzeichnis /Programme/Dienstprogramme). Wählen Sie im Menü Drucker den Menüpunkt Drucker hinzufügen... und treffen Sie die entsprechende Wahl im Pop-upMenü. Ist der Drucker beispielsweise direkt angeschlossen, wählen Sie USB; wenn der Drucker eingeschaltet ist, sollte er in der Liste auftauchen. Wählen Sie den Drucker und klicken Sie auf den Button Hinzufügen. Bearbeiten Sie die Datei /etc/smb.conf, indem Sie für die [printers]-Freigabe den Kommentar entfernen und alle notwendigen zusätzlichen Änderungen an der Konfiguration vornehmen. Aktivieren Sie schließlich das Samba-Startobjekt, wie in Kapitel 2 beschrieben, indem Sie entweder Windows File Sharing im Systemeinstellungsfeld Sharing anklicken oder manuell die Datei /etc/hostconfig bearbeiten. Ihr Drucker kann nun von entfernten Windows-Clients benutzt werden. Unter Mac OS X und einigen anderen BSD-basierten Systemen können Sie Ihre Konfiguration mit smbutil testen. Folgender Befehl sendet die Datei mit dem Namen
print_test_ file an den Drucker namens printshare auf dem Server bsdserver : % smbutil print //bsdserver/printshare print_test_file
In Kapitel 5 erfahren Sie mehr über smbutil.
Einen Windows-Client einrichten und testen Nachdem Samba nun einen arbeitsfähigen Drucker anbietet, können Sie den Zugriff darauf von einem Windows-Client aus einrichten. Durchsuchen Sie den Samba-Server in der Netzwerkumgebung. Dort müssten nun alle verfügbaren Drucker angezeigt werden. In Abbildung 10-1 sahen wir zum Beispiel einen Drucker namens lp. Als Nächstes müssen Sie dafür sorgen, dass der Windows-Client den Drucker erkennt. Doppelklicken Sie zuerst auf das Drucker-Symbol. Falls Sie versuchen, einen nichtinstallierten Drucker auszuwählen (wie gerade geschehen), fragt Windows Sie, ob es beim Konfigurieren dieses Druckers für das Windows-System helfen soll. Klicken Sie auf Ja oder OK. Der Drucker-Assistent wird gestartet. Wenn Sie unter Windows 95/98/Me einen Drucker installieren, fragt Sie der erste Assistent, ob Sie unter DOS drucken müssen. Nehmen wir einmal an, dass dies nicht der Fall ist. Wählen Sie daher den Radio-Button Nein und klicken Sie anschließend auf Weiter >, um in das Hersteller/Modell-Fenster zu gelangen (siehe Abbildung 10-2). Abbildung 10-2 Auswählen des Herstellers und des Modells des Druckers
In diesem Dialog sehen Sie eine lange Liste mit Herstellern und Druckermodellen für eine Vielzahl unterschiedlicher Drucker. Wählen Sie auf der linken Seite des Fensters den Hersteller Ihres Druckers und auf der rechten Seite dann das genaue Druckermodell. Manchmal werden Sie Ihren Drucker in der Liste nicht vorfinden, oder die Version des in Windows enthaltenen Druckertreibers ist bereits veraltet. In solchen Fällen sehen Sie in der Dokumentation des Druckerherstellers nach, wie Sie den Treiber installieren müssen. Normalerweise klicken Sie auf den Button Diskette..., um den Treiber von einer CD-ROM oder Diskette zu installieren. Falls Sie Ihren Drucker in der Liste nicht sehen können, aber wissen, dass es sich um einen PostScript-Drucker handelt, wählen Sie Apple als Hersteller und Apple LaserWriter als Modell. Damit erhalten Sie die einfachste PostScript-Druckereinstellung - und wohl auch eine der zuverlässigsten. Sind bereits PostScript-Drucker angeschlossen, werden Sie gefragt, ob der vorhandene Treiber ersetzt oder weiterverwendet werden soll. Wenn Sie ihn durch einen neuen Treiber ersetzen, kann es passieren, dass die anderen Drucker nicht mehr funktionieren. Wir empfehlen Ihnen deshalb, die vorhandenen Druckertreiber solange sie richtig funktionieren zu verwenden. Klicken Sie auf den Button Weiter > oder auf OK. Unter Windows 95/98/Me fordert der Assistent Sie auf, dem Drucker einen Namen zu geben. Unter Windows NT/2000/XP müssen Sie mit der rechten Maustaste auf das Symbol des Druckers klicken und Eigenschaften auswählen, um dem Drucker einen Namen zuzuweisen. Abbildung 10-3 zeigt, wie wir unseren Drucker benannt haben, um zu demonstrieren, dass er vom Samba-Server mixtec freigegeben ist. Abbildung 10-3 Einstellen des Druckernamens
Abbildung 10-4 Senden einer Testseite an den Drucker
Schließlich fragt Sie der Drucker-Assistent unter Windows 95/98/Me, ob eine Testseite gedruckt werden soll. Klicken Sie auf den Button Ja und dann auf Beenden. Ihnen sollte der Dialog aus Abbildung 10-4 präsentiert werden. Unter Windows NT/2000/XP kann auf den Druckertest ebenfalls über den Eigenschaften-Dialog des Druckers zugegriffen werden. Verlief der Testdruck nicht erfolgreich, klicken Sie auf den Button Nein. Der Assistent führt Sie auf der Client-Seite des Vorgangs durch einige Schritte zur Fehlersuche. Wenn der Testdruck funktioniert hat, steht der entfernte Drucker nun allen WindowsProgrammen über die Datei- und Drucken-Menüeinträge zur Verfügung.
Auf Windows-Druckern drucken Wenn Drucker bei Ihnen an Systeme angeschlossen sind, die unter Windows 95/98/Me oder Windows NT/2000/XP betrieben werden, kann mit Hilfe von Werkzeugen, die Teil der Samba-Distribution sind, auch vom Unix-System aus auf diese Drucker zugegriffen werden. Zunächst einmal muss auf dem Windows-System eine Druckerfreigabe eingerichtet werden. Richten Sie anschließend den Drucker auf der Unix-Seite ein, indem Sie einen neuen Drucker konfigurieren und ein Samba-Druckprogramm als Filter des Druckers verwenden.
Windows-Drucker freigeben Das Freigeben von Druckern unter Windows ist nicht wesentlich anders als das Freigeben von Dateien. Es ist sogar ein bisschen einfacher. Öffnen Sie die Systemsteuerung und doppelklicken Sie dort auf das Drucker-Symbol, um das DruckerFenster zu öffnen. Klicken Sie mit der rechten Maustaste auf das Symbol des Druckers, den Sie freigeben wollen, und wählen Sie Freigabe... Dadurch öffnet sich das Dialogfeld, das in Abbildung 10-5 (für Windows 98) oder in Abbildung 10-6 (für Windows 2000) dargestellt ist. (Der Dialog sieht bei anderen Windows-Versionen ein wenig anders aus, funktioniert aber nahezu gleich.)
Bei Windows 95/98/Me-Systemen müssen Sie die Dateifreigabe möglicherweise mit einer Zugriffssteuerung auf Freigabeebene (anstatt auf Benutzerebene) betreiben, um von Samba auf einen freigegebenen Drucker zugreifen zu können. Um diesen Modus zu aktivieren, doppelklicken Sie in der Systemsteuerung auf Netzwerk und klicken Sie dort auf die Registerkarte Zugriffssteuerung. Ausführliche Informationen über dieses Thema finden Sie in Kapitel 5. Abbildung 10-5 Drucker unter Windows 98 freigeben
Abbildung 10-6 Drucker unter Windows 2000 freigeben
Klicken Sie auf den Radio-Button Freigegeben als und anschließend auf OK. Auf den Drucker kann nun von anderen Systemen aus dem Netzwerk zugegriffen werden.
Einen Unix-Drucker hinzufügen Die Samba-Distribution enthält drei Programme, die beim Drucken auf freigegebenen Druckern helfen. Das Programm smbprint arbeitet mit Systemen zusammen, die das BSD-Drucksystem verwenden, smbprint.sysv arbeitet mit Systemen, die das System VDrucksystem einsetzen, und smbspool arbeitet mit Systemen, die das Common Unix Printing System (CUPS) verwenden. In den folgenden Abschnitten werden wir Ihnen zeigen, wie Sie für die einzelnen Systeme Drucker installieren. BSD-Drucker Das BSD-Drucksystem wird von vielen Unix-Varianten eingesetzt, unter anderem von Red Hat Linux. Beim BSD-Druck besitzen alle Drucker auf dem System einen Eintrag in der Datei /etc/printcap, der Datenbank der Druckerfähigkeiten, die vom Line Printer Daemon lpd und anderen Programmen verwendet wird, die beim Drucken helfen. Die Red Hat-Linux-Implementierung unterscheidet sich ein wenig: Die Datei /etc/printcap ist hier eine maschinengenerierte Datei, die jedes Mal neu erzeugt wird, wenn der lpdDaemon vom /etc/rc.d/init.d/lpd-Skript gestartet wird. Anstatt /etc/printcap zu bearbeiten, legen wir für unseren Drucker in /etc/printcap.local einen Eintrag an. Diese Datei fügt das System automatisch ein, wenn es /etc/printcap erzeugt.
Wenn Sie eine Version von Samba verwenden, die aus einer RPMDatei installiert worden ist wie unter Red Hat Linux, können Sie diese Anweisungen vermutlich überspringen und das Dienstprogramm printconf benutzen, das Unterstützung für SMB-
Drucker bietet. Leider funktioniert dieses Programm nicht unbedingt, wenn Sie Samba aus der Samba-Quelldistribution installiert haben. Hier ist der Eintrag, den wir in unsere /etc/printcap.local-Datei eingefügt haben, um unseren Hewlett-Packard DeskJet 932C-Drucker zu unterstützen, der von maya, einem Windows 98-System, freigegeben wurde: lp|maya-hp932c:\ :cm=HP 932C on maya:\ :sd=/var/spool/lpd/maya:\ :af=/var/spool/lpd/maya/acct:\ :if=/usr/local/samba/bin/smbprint:\ :mx=0:\ :lp=/dev/null:
Die erste Zeile legt Namen für den Drucker an. Wir nennen ihn sowohl maya-hp932c, um seine Lage im Netzwerk und seinen Typ zu beschreiben, als auch lp, damit Programme ihn als Standarddrucker verwenden. Die restlichen Zeilen legen Schlüsselwörter und Werte fest. Das Schlüsselwort cm erlaubt es uns, dem Drucker einen Kommentar zuzuweisen. Die Schlüsselwörter sd und af weisen das SpoolVerzeichnis des Druckers bzw. Abrechnungsdateien zu. Das Schlüsselwort if weist den Druckfilter zu. Wir verwenden den Befehl smbprint, um die Ausgabe an den freigegebenen SMB-Drucker zu senden. Das Schlüsselwort mx ist auf null gesetzt, um das Ausdrucken einer beliebigen Dateigröße zu erlauben. lp ist auf /dev/null gesetzt, um Fehlermeldungen abzuweisen. Sie können anhand unseres Beispiels einen Eintrag für Ihren eigenen Drucker erzeugen. Falls Sie mehr als die von uns benutzten Fähigkeiten einsetzen wollen, lesen Sie in der printcap(5)-Manpage Ihres Systems nach. Dort finden Sie eine vollständige Liste der Schlüsselwörter. Begeben Sie sich ins root-Verzeichnis Ihrer Samba-Quelldistribution und installieren Sie das Programm smbprint: # cp examples/printing/smbprint /usr/local/samba/bin
Als Nächstes erzeugen Sie das Spool-Verzeichnis des Druckers: # cd /var/spool/lpd # mkdir maya # chown lp:lp maya # chmod 700 maya
Das Programm smbprint sucht nach einer Datei namens .config im Spool-Verzeichnis
des Druckers, in der Informationen darüber stehen, wie man sich an der Druckerfreigabe anmeldet. Legen Sie diese Datei an und setzen Sie die erforderlichen Informationen ein: # cd maya # >.config # chown lp:lp .config # chmod 600 .config
Bearbeiten Sie die Datei .config mit einem Texteditor und geben Sie drei Zeilen ein: server=maya service=hp password=""
Dies bezeichnet den freigegebenen Drucker, der die UNC \\maya\hp hat. Als wir die Druckerfreigabe angelegt haben, gaben wir ihr kein Kennwort, deshalb setzen wir hier ein leeres Kennwort ein. Befindet sich Ihre Druckerfreigabe an einem Windows NT/2000/ XP-System, verwenden Sie Ihr Domänen-Kennwort. Starten Sie schließlich den Drucker-Daemon neu: # /etc/rc.d/init.d/lpd restart
Sie können nun versuchen, etwas auszudrucken. Führen Sie folgenden Befehl aus: $ lpr textfile
Wenn Sie alles richtig eingerichtet haben, wird die Datei auf dem freigegebenen Drucker gedruckt. Sollte der Text »stufig« gedruckt worden sein, weil der Drucker am Zeilenanfang nicht wieder an den linken Rand zurückfährt, verändern Sie das Schlüsselwort if in Ihrem printcap-Eintrag so, dass smbprint mit der Option -t ausgeführt wird. System V-Drucker Das Versenden von Druck-Jobs von einem System V Unix-System ist ein wenig einfacher als von einem BSD-System. Sie müssen hier das Skript smbprint.sysv im Verzeichnis examples/printing der Samba-Distribution bearbeiten und folgende Schritte ausführen: 1. Ändern Sie die Parameter server, service und password im Skript so, dass sie dem NetBIOS-Computernamen, seinem freigegebenen Druckerdienst bzw. seinem Kennwort entsprechen. So würden die folgenden Einträge etwa für den Dienst im vorherigen Beispiel zutreffen:
server = maya service = hp password = ""
2. Führen Sie die folgenden Befehle aus, die in der printcap-Datei eine Referenz für den neuen Drucker (den wir hp_printer nennen) anlegen: # lpadmin -p hp_printer -v /dev/null -i./smbprint.sysv # enable hp_printer # accept hp_printer
Starten Sie anschließend die Samba-Daemons neu und versuchen Sie, mit irgendeinem Standard-Unix-Programm auf hp_printer zu drucken. CUPS-Drucker CUPS2 verwendet eine Sammlung von Modulen namens Backends, um Druck-Jobs an verschiedene Ziele zu schicken, beispielsweise an lokale Drucker, die an parallele serielle oder USB-(Universal Serial Bus-)Ports angeschlossen sind, oder über das Netzwerk mit Hilfe des Unix-LPD-Protokolls (Line Printer Daemon), des Internet Printing Protocol (IPP), des AppleTalk Printer Access Protocol (PAP) und so weiter. Das SoftwarePaket enthält kein Backend für SMB; die Samba-Suite beinhaltet für diesen Zweck das Dienstprogramm smbspool. Um das Drucken auf entfernten SMB-Druckern mittels CUPS zu ermöglichen, erzeugen Sie einen symbolischen Link namens smb im CUPS-Backend-Verzeichnis, der auf smbspool verweist. Je nach den Installationsoptionen könnte dies sich an einer Reihe von Orten innerhalb der Verzeichnishierarchie befinden, schauen Sie daher auf Ihrem System genau nach. Mit einer verbreiteten Standardinstallation würde der Befehl so aussehen: # ln -s /usr/local/samba/bin/smbspool /usr/lib/cups/backend/smb
Senden Sie an den CUPS-Daemon, cupsd, ein HUP-Signal und prüfen Sie mit dem Befehl lpinfo -v, ob es SMB-Unterstützung gibt. Seine Ausgabe müsste eine Zeile enthalten, die network smb lautet. Um einen Drucker hinzuzufügen, verwenden Sie die CUPS-Web-Schnittstelle, die auf dem lokalen System unter http://localhost:631/ zur Verfügung steht, oder benutzen den Befehl lpadmin: # lpadmin -p hp932c -E -v smb://maya/hp932c -D "HP 932C on maya"
Dies erzeugt und aktiviert den neuen Druck-Spool mit der Bezeichnung hp932c. Das Argument -v legt das Druckergerät fest, auf das in diesem Fall mit einem SMB-URI über das Netzwerk zugegriffen wird. Soll der Drucker nicht für den Gastzugriff freigegeben werden, müssen Sie in dem URI einen Benutzernamen und ein Kennwort angeben. Das
vollständige Format sieht so aus: smb://[benutzername[:kennwort]@][arbeitsgruppe/]server/druckfreigabe
Der Befehl lpadmin führt Änderungen an /etc/cups/printers.conf durch und sendet ein HUP-Signal an den cupsd-Daemon, wodurch ein lokaler Drucker-Spool angelegt wird. In diesem Beispiel werden die Druckdaten im Originalformat an das Windows-System übergeben, das die notwendigen Druckertreiber und Beschreibungsdateien besitzt, um die Daten entsprechend zu formatieren. Die Option -D wird verwendet, um dem Drucker einen Kommentar-String zuzuweisen. Sobald Sie den Drucker eingerichtet haben, wird es Zeit, ihn zu testen. CUPS versteht Druckbefehle sowohl im BSD-Stil als auch im System V-Stil, Sie können also die Befehle benutzen, die Ihnen besser gefallen. Versuchen Sie einmal Folgendes mit dem BSDBefehl lpr: $ lpr -P hp932c textdatei
Der Drucker sollte nun von jeder Anwendung aus auf dem Unix-System benutzt werden können.
Samba-Druckoptionen Tabelle 10-2 fasst die Samba-Druckoptionen zusammen.
Tabelle 10-2 Konfigurationsoptionen zum Drucken Option
Parameter
Funktion
Vorgabewert
Geltungsbereich
printing
bsd, sysv, cups, hpux, aix, qnx, plp, softq oder lprng
Art des Drucksystems auf dem Samba-Host.
systemabhängig Freigabe
printable (print ok)
Boolescher Wert
Kennzeichnet eine Freigabe als Druckfreigabe.
no
printer (printer name)
Name des Druckers, String (Unixder den Clients Druckername) gezeigt wird.
lpq cache time
numerischer Wert (Zeit in Sekunden)
Zeitdauer in Sekunden, für die Samba den Status der Druckerwarteschlange zwischenspeichert.
Freigabe
systemabhängig Freigabe
10
global
Boolescher Wert
Behandelt alle DruckJobs als PostScript, indem am Anfang jeder Datei das Präfix %! eingesetzt wird.
no
Freigabe
load printers
Boolescher Wert
Wenn yes, werden automatisch alle Drucker aus der printcap-Datei als Druckfreigaben geladen.
yes
global
print command
String (ShellBefehl)
Unix-Befehl zum Ausführen des Druckens.
siehe unten
Freigabe
lpq command
String (ShellBefehl)
Unix-Befehl zum Zurückliefern des siehe unten Status der Druckerwarteschlange.
Freigabe
lprm command
String (ShellBefehl)
Unix-Befehl zum Löschen eines Jobs siehe unten aus der Druckerwarteschlange.
Freigabe
lppause command
String (ShellBefehl)
Unix-Befehl zum Unterbrechen eines siehe unten Jobs in der Druckerwarteschlange.
Freigabe
lpresume command
String (ShellBefehl)
Unix-Befehl zum Fortsetzen eines siehe unten unterbrochenen Jobs in der Druckerwarteschlange.
Freigabe
printcap name (printcap)
String (Dateiname)
Ablageort der printcap-Datei.
systemabhängig global
min print space
numerischer Wert (Größe in KByte)
Minimal verfügbarer Plattenplatz, der zum Drucken verfügbar sein muss.
0
Freigabe
queuepause command
String (ShellBefehl)
Unix-Befehl zum Unterbrechen einer Warteschlange.
siehe unten
Freigabe
queueresume command
String (ShellBefehl)
Unix-Befehl zum Fortsetzen einer Warteschlange.
siehe unten
Freigabe
postscript
printing Die Konfigurationsoption printing teilt Samba mit, welches Drucksystem benutzt werden soll. Es gibt mehrere unterschiedliche Befehlsfamilien zum Steuern des
Druckens und Kontrollieren der Statusausgaben. Samba unterstützt sieben verschiedene Typen, wie in Tabelle 10-3 zu sehen.
Tabelle 10-3 Drucksystemtypen Variable
Definition
BSD
Berkeley Unix-System
SYSV
System V
CUPS
Common Unix Printing System
AIX
AIX-Betriebssystem von IBM
HPUX
Hewlett-Packard-Unix
QNX
QNX Realtime Operating System
LPRNG
LPR Next Generation
SOFTQ
SOFTQ-System
PLP
Portable Line Printer
Der Wert für diese Option muss aus diesen sieben Möglichkeiten gewählt werden, zum Beispiel: printing = SYSV
Der Standardwert dieser Option ist systemabhängig und wird beim ersten Kompilieren von Samba konfiguriert. Bei den meisten Systemen erkennt das configure-Skript das verwendete Drucksystem automatisch und konfiguriert es im Samba-makefile entsprechend. Handelt es sich bei Ihrem System jedoch um ein PLP-, LPRNG- oder QNXDrucksystem, müssen Sie dies explizit im makefile oder in der Druckfreigabe festlegen. Die verbreitetsten Systemtypen sind BSD, SYSV und CUPS. Jeder Drucker an einem BSD-Unix-Server wird in der Printer-Capabilities-Datei beschrieben - üblicherweise ist dies /etc/printcap. Im Abschnitt über den Parameter printcap file finden Sie nähere Informationen zu diesem Thema. Beim automatischen Einstellen der Konfigurationsoption printing werden wenigstens drei weitere Druckoptionen für den fraglichen Dienst gesetzt: print command, lpq command und lprm command. Wenn Sie Samba auf einem System ausführen, das keinen der Druckstile unterstützt, die in Tabelle 10-3 aufgeführt sind, setzen Sie die Befehle für diese Parameter einfach von Hand. printable Die Option printable muss auf yes gesetzt werden, um eine Freigabe als Druckdienst zu kennzeichnen. Wenn diese Option nicht gesetzt ist, wird die Freigabe stattdessen als Verzeichnisfreigabe behandelt. Sie können die Option folgendermaßen setzen: [printer1]
printable = yes
printer Die Option, auch als printer name bezeichnet, gibt den Namen des Druckers auf dem Server an, auf den die Freigabe verweist. Diese Option besitzt keinen Standardwert und muss explizit in der Konfigurationsdatei gesetzt werden, auch wenn Unix-Systeme selbst oft einen Standardnamen wie lp für einen Drucker erkennen, zum Beispiel: [deskjet] printer = hpdkjet1
lpq cache time Die globale Option lpq cache time erlaubt es Ihnen, die Anzahl der Sekunden festzulegen, für die Samba sich den aktuellen Druckerstatus merkt. Nach Ablauf dieser Zeit führt Samba einen lpq-Befehl (bzw. den entsprechenden Befehl, den Sie mit der Option lpq command angegeben haben) aus, um neuere Statusinformationen zu erhalten, die an die Benutzer weitergegeben werden können. Der Vorgabewert beträgt 10 Sekunden. Dieser Wert kann jedoch vergrößert werden, falls Ihr lpq command ungewöhnlich lange für die Ausführung braucht oder Sie viele Clients haben. Der Wert 0 deaktiviert die Zwischenspeicherung des Warteschlangenstatus. Das folgende Beispiel setzt die Zeit auf 30 Sekunden: [deskjet] lpq cache time = 30
postscript Die Option postscript sorgt dafür, dass der Drucker alle Daten, die an ihn gesendet werden, als PostScript behandelt. Dazu setzt er das Präfix %! an den Anfang der ersten Zeile jedes Jobs. Normalerweise wird diese Option bei PCs verwendet, die ein ^D (Control-D oder »Ende-der-Datei«-Zeichen) vor die erste Zeile einer PostScript-Datei setzen. Durch diese Option wird ein Nicht-PostScript-Drucker allerdings nicht in einen PostScript-Drucker verwandelt. Der Vorgabewert für diese Option ist no. Sie können ihn folgendermaßen ändern: [deskjet] postscript = yes
load printers Die Option load printers weist Samba an, für alle bekannten Druckernamen Freigaben zu erzeugen und diese Freigabe in die Suchliste zu laden. Samba erzeugt eine Druckerfreigabe für jeden Druckernamen in /etc/printcap (oder dem systementsprechenden Äquivalent dieser Datei) und listet sie auf. Falls beispielsweise Ihre printcap-Datei so aussieht:3
lp:\ :sd=/var/spool/lpd/lp:\
Spool-Verzeichnis
:mx#0:\
maximale Dateigröße (keine)
:sh:\
unterdrücke Burst-Header (nein)
:lp=/dev/lp1:\
Gerätename für Ausgabe
:if=/var/spool/lpd/lp/filter:
Textfilter
laser:\ :sd=/var/spool/lpd/laser:\
Spool-Verzeichnis
:mx#0:\
maximale Dateigröße (keine)
:sh:\
unterdrücke Burst-Header (nein)
:lp=/dev/laser:\
Gerätename für Ausgabe
:if=/var/spool/lpd/lp/filter:
Textfilter
werden die Freigaben [lp] und [laser] automatisch als gültige Druckfreigaben angelegt, sobald Samba gestartet ist. Beide Freigaben entnehmen die Konfigurationsoptionen dem Abschnitt [printers], um sich selbst zu konfigurieren, und sind in der Suchliste für den Samba-Server verfügbar. Der Standardwert für diese Option ist yes. Falls Sie lieber jeden Drucker explizit in Ihrer Konfigurationsdatei festlegen, verwenden Sie Folgendes: [global] load printers = no
print command, lpq command, lprm command, lppause command, lpresume command Diese Optionen teilen Samba mit, welche Unix-Befehle den Drucker steuern und Daten an ihn senden. Es handelt sich um folgende Unix-Befehle: lpr (Senden an Line PRinter), lpq (List Printer Queue), lprm (Line Printer ReMove) und optional lppause sowie lpresume. Samba bietet für jeden Befehl eine entsprechend benannte Option an, falls Sie die Vorgabewerte des Systems überschreiben wollen. Betrachten Sie folgendes Beispiel: lpq command = /usr/ucb/lpq %p
Damit würde lpq command so eingestellt werden, dass /usr/ucb/lpq benutzt wird. In gleicher Weise würde:
lprm command = /usr/local/bin/lprm -P%p %j
den Löschen-Befehl auf /usr/local/bin/lprm setzen und mit Hilfe der Variablen %j die Job-Nummer übergeben. Die Vorgabewerte der einzelnen Optionen sind vom Wert der Option printing abhängig. Tabelle 10-4 zeigt die vorgegebenen Befehle für die jeweiligen Druckoptionen. Das beliebteste Drucksystem ist BSD.
Tabelle 10-4 Standardbefehle für die verschiedenen Druckoptionen Option
BSD, AIX, PLP, LPRNG
SYSV, HPUX
QNX
SOFTQ
print command
lpr -r -P% p %s
lp -c -d%p % s; rm %s
lp -r -P%p %s
lp -d%p -s % s; rm %s
lpq command
lpq -P%p
lpstat -o%p
lpq -P%p
lpstat -o%p
lprm command
lprm -P%p % j
cancel %p-%j
cancel %p-%j
cancel %p-%j
lppause command
lp -i %p-% j -H hold (nur SYSV)
keiner
keiner
keiner
keiner
keiner
qstat -s -j% j -r
lp -i %p-% lpresume command j -H resume (nur SYSV)
Normalerweise ist es nicht notwendig, diese Optionen in Samba zurückzusetzen. Eine Ausnahme bildet möglicherweise print command. Diese Option muss eventuell explizit gesetzt werden, falls Ihr Drucksystem keine Option -r (nach dem Drucken löschen) für den Druckbefehl besitzt, beispielsweise: print command = /usr/local/lpr -P%p %s; /bin/rm %s
Mit ein wenig vernünftiger Programmierung können diese smb.conf-Optionen ebenfalls für die Fehlersuche eingesetzt werden: print command = cat %s >>/tmp/printlog; lpr -r -P%p %s
Mit der vorherigen Konfiguration ist es möglich zu überprüfen, ob Dateien tatsächlich an den Samba-Server ausgeliefert wurden. Ist dies der Fall, erscheint ihr Inhalt in der Datei /tmp/printlog. Die nach BSD beliebtesten Drucksysteme sind das SYSV-(oder System V-)Drucksystem sowie einige SYSV-Varianten für AIX von IBM und HP-UX von Hewlett-Packard. Diese Systeme besitzen keine /etc/printcap-Datei. Stattdessen kann die Option printcap file auf einen für das System passenden lpstat-Befehl gesetzt werden. Diese Option weist Samba an, vom lpstat-Befehl eine Liste der Drucker zu beziehen. Alternativ
können Sie die globale Konfigurationsoption printcap name auf den Namen einer Dummy-printcap-Datei setzen, die Sie bereitstellen. In diesem Fall muss die Datei eine Reihe von Zeilen enthalten, wie etwa: lp|print1|Mein Drucker 1 print2|Mein Drucker 2 print3|Mein Drucker 3
Jede Zeile nennt einen Drucker, gefolgt von Alias-Bezeichnungen. In diesem Beispiel wird der erste Drucker lp, print1 oder Mein Drucker 1 genannt, je nachdem, welchen Namen der Benutzer bevorzugt. Der erste Name wird in jedem Befehl, den Samba für diesen Drucker ausführt, an Stelle von %p benutzt. Von Samba werden noch zwei weitere Druckertypen unterstützt: LPRNG (LPR New Generation) und PLP (Public Line Printer). Dies sind Public Domain- und Open SourceDrucksysteme, die von vielen Einrichtungen eingesetzt werden, um Problemen mit kommerzieller Software aus dem Weg zu gehen. Samba unterstützt außerdem die Drucksysteme der Echtzeitbetriebssysteme SOFTQ und QNX. printcap name Wenn die Option printcap name (auch printcap) in einer Druckfreigabe auftaucht, verwendet Samba die angegebene Datei als Printer-Capabilities-Datei des Systems (normalerweise ist dies /etc/printcap). Sie können hier jedoch eine Datei einstellen, die nur die Drucker enthält, die Sie über das Netzwerk freigeben wollen. Der Wert der Option ist der Dateiname (mit dem kompletten Pfad) einer Printer-Capabilities-Datei auf dem Server: [deskjet] printcap name = /usr/local/samba/lib/printcap
Das CUPS-Drucksystem hat statt der Standard-printcap-Datei seine eigene Methode zum Feststellen der Druckereigenschaften. Setzen Sie in diesem Fall printcap name folgendermaßen: [global] printing = cups printcap name = cups
min print space Die Option min print space legt fest, wie viel freier Platz auf der Festplatte mit dem Spool-Verzeichnis vorhanden sein muss, damit das Drucken erlaubt ist. Wenn Sie sie auf null (den Vorgabewert) setzen, wird die Prüfung ausgeschaltet; jede andere Zahl legt den Platz in KByte fest. Diese Option ermöglicht es zu vermeiden, dass Druck-Jobs den gesamten verbleibenden Plattenplatz auf dem Server ausfüllen, wodurch andere Prozesse nicht mehr funktionieren würden:
[deskjet] min print space = 4000
queuepause command Diese Konfigurationsoption legt einen Befehl fest, der Samba anweist, eine ganze Druckwarteschlange anzuhalten und nicht nur einen einzelnen Job in der Warteschlange. Der Vorgabewert hängt vom gewählten Drucksystem ab. Es sollte nicht notwendig sein, diese Option zu verändern. queueresume command Diese Konfigurationsoption legt einen Befehl fest, der Samba mitteilt, wie die Verarbeitung einer angehaltenen Druckwarteschlange (und nicht nur eines einzelnen Jobs in der Warteschlange) fortgesetzt wird. Der Vorgabewert hängt vom gewählten Drucksystem ab. Es sollte nicht notwendig sein, diese Option zu verändern. 1Falls Sie Linux verwenden, können Sie mit dem Befehl checkpc auf diese Art von Fehler testen. 2CUPS ist Open Source-Software (http://www.open-source.org), entwickelt von Easy Software Products. Weitere Informationen finden Sie unter http://www.cups.org. 3Die Kommentare auf der rechten Seite wurden von uns hinzugefügt, für den Fall, dass Sie noch nie etwas mit dieser Datei gemacht haben.
Kapitel 11 Weitere Informationen über Samba Dieses Kapitel beschließt unsere Behandlung der Konfigurationsdatei smb.conf mit einigen weiteren Optionen, die eine Vielzahl von Aufgaben ausführen können. Wir sprechen kurz über Optionen zur Zeit-Synchronisierung, betrachten die Internationalisierung, gehen auf Nachrichten ein und zeigen verbreitete WindowsFehler. Im Großen und Ganzen werden Sie diese Optionen nur unter besonderen Umständen benötigen.
Zeit-Synchronisierung In einem Netzwerk mit Computern müssen die Systeme im Netzwerk bezüglich der aktuellen Zeit sowie der Änderungszeitpunkte der Dateien übereinstimmen. Ein Beispiel für die Wichtigkeit der Synchronisierung sind die Roaming-Profile, die wir in Kapitel 4 behandelt haben. Es ist für alle Clients, die auf ein Roaming-Profil zugreifen, ausgesprochen wichtig, dass sie sich einig sind, welche Zeit eingestellt ist sowie welcher Client zuletzt das Profil eines Benutzers verändert hat. Die Zeit-Synchronisierung kann auch für Programmierer sehr bedeutsam sein. Eine nützliche Gruppe von Einstellungen besteht aus den folgenden Optionen: [global] time server = yes dos filetimes = yes fake directory create times = yes dos filetime resolution = yes delete readonly = yes
Wenn Sie diese Optionen setzen, ermöglichen Samba-Freigaben die Kompatibilität der Dateiänderungszeiten, die Visual C++, nmake und andere MicrosoftProgrammierwerkzeuge erfordern. Ansonsten glauben PC-make-Programme möglicherweise, dass alle Dateien in einem Verzeichnis jedes Mal neu kompiliert werden müssen. Das ist aber vermutlich nicht das von Ihnen gewünschte Verhalten. In Kapitel 4 haben wir Ihnen gezeigt, wie Sie ein Anmeldeskript erzeugen, das den Befehl net time verwendet, um die Uhren der Clients automatisch zu synchronisieren, wenn sie sich an der Domäne anmelden. Ist Ihr Netzwerk nicht als Domäne, sondern als Arbeitsgruppe konfiguriert, können Sie den Befehl net time ebenfalls einsetzen, indem Sie den Befehl: net time \\sambaserver /set /yes
bei jedem Client in ein Startskript einsetzen, das ausgeführt wird, wenn das System bootet. Samba bietet immer einen Time-Service an - unabhängig davon, ob es als primärer Domänen-Controller läuft -, oder der Konfigurationsdateiparameter time service ist gesetzt. Angenommen, Domänen-Benutzer melden sich wenigstens einmal am Tag an der Domäne an und Arbeitsgruppen-Clients starten häufig neu. Der Befehl net time kann dann die Uhren der Client-Systeme relativ gut synchronisiert halten. Manchmal jedoch bleiben Domänen-Benutzer für eine längere Zeit angemeldet, und auch Arbeitsgruppen-Clients können zwischen den einzelnen Neustarts durchaus einige Tage durchlaufen. In der Zwischenzeit können sich die Hardware-Uhren der Systeme so sehr verändern, dass Probleme auftreten. Es wäre möglich, dies zu umgehen - je nachdem, welche Windows-Version auf dem Client-System läuft. Unter Windows 98/ Me können Sie den Taskplaner (Task Scheduler) verwenden, um regelmäßig den Befehl net time aufzurufen. Unter Windows 2000/XP benutzen Sie den MS-DOS-Befehl at. Die bessere Lösung besteht jedoch darin, das Network Time Protocol einzusetzen, auf das wir gleich eingehen werden. Die richtige Zeit-Synchronisierung ist auch dann wichtig, wenn Sie in einer Active Directory-Domäne arbeiten, da Active Directory die Kerberos-Authentifizierung benutzt. Wenn ein Kerberos-Domänen-Controller ein Authentifizierungsticket für einen Client erzeugt, ist die Zeit in den Challenge-Response-Austausch zwischen dem Client und dem Domänen-Controller kodiert. Stimmen die Zeiten zwischen dem Client und dem Server nicht überein, schlägt die Authentifizierung unter Umständen fehl. Um eine korrekte Zeit-Synchronisierung in Active Directory-Domänen zu erlauben, hat Microsoft das Network Time Protocol (NTP) aufgegriffen. Seine Implementierung trägt den Namen Windows Time Service. Nähere Informationen finden Sie in dem MicrosoftWhitepaper mit dem Titel The Windows Time Service, das Sie von http://www. microsoft.com herunterladen können. Das Schöne daran ist, dass es sich bei NTP um die Standardmethode zum Synchronisieren von Unix-Hosts in einem Netzwerk handelt. Sie können also alle Unix(einschließlich des Samba-Servers) und Windows-Systeme mit der folgenden Methode synchronisieren: 1. Führen Sie NTP auf den Unix-Systemen in Ihrem Netzwerk aus. Nähere Informationen finden Sie unter http://www.ntp.org. 2. Verwenden Sie eines der Unix-Systeme (etwa das Samba-Host-System) als NTP-Server für die Windows 2000/XP-Clients. 3. Für andere Windows-Clients müssen Sie eventuell ein Update von Microsoft herunterladen, um die Clients um Unterstützung für den Windows Time Service zu erweitern. Oder Sie verwenden ein Programm eines Drittherstellers wie das freie analogX Atomic TimeSync (http://www.analogx.com). Sie können aber auch weiterhin regelmäßig den Befehl net time verwenden, um die Uhren der Clients zu aktualisieren.
Optionen zur Zeit-Synchronisierung Um Roaming-Profile, Programmierer, die auf Ihren Samba-Server zugreifen, und andere zeitkritische Funktionen in Ihrem Netzwerk zu unterstützen, sollten Sie die Optionen beachten, die in Tabelle 11-1 aufgeführt sind.
Tabelle 11-1 Optionen zur Zeit-Synchronisierung Option
time server
time offset
dos filetimes
dos filetime resolution
fake directory create times
Parameter
Funktion
Vorgabewert Geltungsbereich
Boolescher Wert
Wenn yes, wird nmbd den Windows-Clients als SMB-TimeService bekannt gemacht.
no
global
numerischer Wert
Fügt der ausgegebenen Zeit die festgelegte Anzahl Minuten hinzu.
0
global
Boolescher Wert
Erlaubt es Benutzern, die nicht Eigentümer einer Datei sind, die Zeit auf dieser Datei zu ändern, wenn sie diese schreiben dürfen.
no
Freigabe
Boolescher Wert
Veranlasst das Runden der Dateizeiten auf die nächste gerade Sekunde.
no
Freigabe
Boolescher Wert
Legt Verzeichniszeiten fest, um einen MS-nmake-Fehler zu vermeiden.
no
Freigabe
time server Samba arbeitet immer als SMB-Timeserver und entspricht damit dem Verhalten von Windows-Systemen. Voreinstellung ist jedoch, dass Samba sich nicht selbst als Timeserver im Netzwerk bekannt macht. Ist diese Option auf yes gesetzt, macht Samba sich selbst als SMB-Timeserver bekannt: [global] time service = yes
time offset Um mit Clients umzugehen, die die Sommerzeit nicht richtig verarbeiten können,
bietet Samba die Option time offset. Wenn die Option gesetzt ist, wird die angegebene Anzahl an Minuten zur aktuellen Zeit addiert. Das ist praktisch, wenn Sie sich gerade in Neufundland aufhalten und Windows nicht weiß, dass es zum nächstgelegenen Festland einen Zeitunterschied von 30 Minuten gibt: [global] time offset = 30
dos filetimes Traditionell dürfen nur der root-Benutzer und der Besitzer einer Datei auf einem UnixSystem den Zeitstempel verändern, der darüber Auskunft gibt, wann eine Datei zuletzt verändert wurde. Mit der Option dos filetimes auf Freigabeebene können Sie das Verhalten an DOS und Windows anpassen: Jeder Benutzer darf nun diesen Zeitstempel verändern, sofern eine Schreibberechtigung vorliegt. Samba verwendet zum Ändern des Zeitstempels seine root-Privilegien. Standardmäßig ist diese Option ausgeschaltet. Sie müssen sie häufig auf yes setzen, damit make-Programme auf den PCs korrekt arbeiten. Ohne die Option kann diese Software den Zeitstempel nicht ändern. Das führt oft dazu, dass das Programm glaubt, alle Dateien müssten neu kompiliert werden, auch wenn das nicht der Fall ist. dos filetime resolution dos filetime resolution ist eine Option auf Freigabeebene. Wenn Sie für sie den Wert yes angeben, rundet Samba die Zeitstempel auf die am nächsten liegende Zweisekundengrenze. Diese Option gibt es in erster Linie, um ein Problem in Windows zu umgehen, das dazu führt, dass Visual C++ nicht erkennt, dass eine Datei unverändert ist. Sie können sie folgendermaßen aktivieren: [data] dos filetime resolution = yes
Wir empfehlen, diese Option nur zu benutzen, wenn Sie mit Microsoft Visual C++ auf Dateien einer Samba-Freigabe zugreifen, die Oplocks unterstützt. fake directory create times Die Option fake directory create times hilft make-Programmen auf PCs. VFAT- und NTFS-Dateisysteme zeichnen im Gegensatz zu Unix-Dateisystemen den Erstellungszeitpunkt von Verzeichnissen auf. Ohne diese Option meldet Samba seinen Clients für Verzeichnisse den Zeitstempel der ältesten darin enthaltenen Datei. Wenn dies nicht Ihren Bedürfnissen entspricht, können Sie diese Option auf Freigabeebene verwenden: [data] fake directory create times = yes
In diesem Fall meldet Samba als Erstellungsdatum für Verzeichnisse grundsätzlich den 1. Januar 1980. Diese Option wird hauptsächlich eingesetzt, damit das nmakeProgramm von Visual C++ glaubt, dass Dateien in einem Verzeichnis jünger als das Verzeichnis selbst sind und neu kompiliert werden müssen.
Magische Skripten Magische Skripten stellen eine Methode dar, bei der Programme unter Unix ausgeführt werden und die Ausgabe zurück auf den SMB-Client geleitet wird. Im Prinzip handelt es sich um ein Experiment. Allerdings verlassen sich einige Benutzer und ihre Programme auf diese beiden Funktionen, damit ihre Programme korrekt arbeiten. Magische Skripten genießen nicht besonders viel Vertrauen, und das Samba-Team rät auch dringend von ihrer Verwendung ab.
Optionen für magische Skripten Tabelle 11-2 zeigt die Optionen, die im Zusammenhang mit magischen Skripten auf dem Samba-Server zum Einsatz kommen.
Tabelle 11-2 Optionen für magische Skripten Option
Parameter
Funktion
Vorgabewert
Geltungsbereich
magic script
Datei, die von Samba unter der Kennung des angemeldeten String Benutzers (Dateiname) ausgeführt wird, wenn dieser die Datei öffnet und anschließend wieder schließt.
keiner
Freigabe
magic output
Datei, in der die String Ausgabe des (Dateiname) magischen Skripts aufgezeichnet wird.
skriptname.out Freigabe
magic script Wenn Sie mit der Option magic script einen Dateinamen angeben und der Client eine Datei mit diesem Namen in der Freigabe erstellt, führt Samba die Datei aus, sobald der Benutzer sie öffnet und wieder schließt. Lassen Sie uns zum Beispiel annehmen, dass die folgende Option in der Freigabe [accounting] steht: [accounting] magic script = tally.sh
Samba beobachtet ständig die Dateien in der Freigabe. Wenn ein Client eine Datei mit
dem Namen tally.sh schließt (nachdem er sie zuvor geöffnet hat), führt Samba diese Datei lokal auf dem Unix-System aus. Samba übergibt die Datei zur Ausführung an die Shell, deshalb muss es sich dabei um ein gültiges Shell-Skript handeln. Das bedeutet, dass am Zeilenende Newline-Zeichen an Stelle der Windows-CRLFs stehen müssen. Außerdem sollten Sie am Anfang der Datei die Anweisung #! verwenden, um anzuzeigen, unter welcher Shell oder welchem Interpreter Samba das Skript ausführen soll, es sei denn, das Skript ist für die Standard-Shell Ihres Systems vorgesehen. magic output Diese Option legt eine Ausgabedatei fest, in die das durch magic script angegebene Skript seine Ausgabe sendet. Sie müssen einen Dateinamen in einem schreibbaren Verzeichnis angeben: [accounting] magic script = tally.sh magic output = /var/log/magicoutput
Fehlt diese Option, trägt die Standardausgabedatei den Namen des Skripts (wie in der Option magic script) mit der Erweiterung .out.
Internationalisierung Beginnend mit Samba 3.0, unterstützt Samba von sich aus Unicode. Es sind also von Ihrer Seite keine zusätzlichen Anstrengungen erforderlich, um Dateinamen und anderen Text zu unterstützen, die Zeichen in internationalen Zeichensätzen enthalten.
Internationalisierungsoptionen Samba 2.2.x besitzt eine begrenzte Fähigkeit, fremde Sprachen zu »sprechen«: Wenn Sie Dateinamen mit Zeichen unterstützen müssen, die nicht dem Standard-ASCIIZeichensatz entstammen, können einige der Optionen aus Tabelle 11-3 Ihnen dabei helfen.
Tabelle 11-3 Internationalisierungsoptionen Option
client code page
Parameter beschrieben in diesem Abschnitt
Funktion Gibt die CodeSeite an, die Samba von den Clients zu erwarten hat.
Vorgabewert Geltungsbereich
850
global
character set
beschrieben in diesem Abschnitt
Übersetzt Code-Seiten in alternative UnixZeichensätze.
keiner
global
coding system
beschrieben in diesem Abschnitt
Übersetzt Code-Seite 932 in einen asiatischen Zeichensatz.
keiner
global
valid chars
String (Menge von Zeichen)
Fügt einer Code-Seite einzelne Zeichen hinzu.
keiner
global
client code page Die Zeichensätze auf Windows-Plattformen basieren auf dem ursprünglichen Konzept von Code-Seiten (engl. Code Pages). Diese Code-Seiten werden von DOS- und Windows-Computern verwendet, um die Regeln für die Abbildung von Kleinbuchstaben auf Großbuchstaben festzulegen. Samba unterstützt mit Hilfe der globalen Option client code page zahlreiche Code-Seiten, so dass Sie diejenige auswählen können, die der Client verwendet. Diese Option lädt eine Code-SeitenDefinitionsdatei und kann die in Tabelle 11-4 zusammengefassten Werte annehmen.
Tabelle 11-4 Für Samba 2.0 gültige Code-Seiten Code-Seite
Definition
437
MS-DOS Latin (Vereinigte Staaten von Amerika)
737
Windows 95 Griechisch
850
MS-DOS Latin 1 (Westeuropäisch)
852
MS-DOS Latin 2 (Osteuropäisch)
861
MS-DOS Isländisch
866
MS-DOS Kyrillisch (Russisch)
932
MS-DOS Japanisch Shift-JIS
936
MS-DOS Vereinfachtes Chinesisch
949
MS-DOS Koreanisch Hangul
950
MS-DOS Traditionelles Chinesisch
Sie können die Client-Code-Seite folgendermaßen einstellen: [global]
client code page = 852
Der Vorgabewert für diese Option ist 850 für MS-DOS Latin 1. Mit dem Dienstprogramm make_smbcodepage, das mit Samba geliefert wird (üblicherweise im Verzeichnis /usr/local/samba/bin ), können Sie Ihre eigenen SMB-Code-Seiten erzeugen, falls die hier aufgeführten Ihnen nicht genügen. character set Die globale Option character set dient der Konvertierung von Dateinamen, die ein Client mit einer DOS-Code-Seite anspricht (siehe vorherigen Abschnitt »client code page«). Dabei konvertiert Samba bestimmte DOS-Zeichen in bestimmte UnixZeichen. Wenn Sie zum Beispiel den westeuropäischen DOS-Zeichensatz eines Clients in einen westeuropäischen Unix-Zeichensatz konvertieren wollen, geben Sie folgende Option in der Konfigurationsdatei an: [global] client code page = 850 character set = ISO8859-1
Beachten Sie, dass Sie auch die Option client code page aufnehmen müssen, um den Zeichensatz festzulegen, aus dem Sie die Konvertierung vornehmen. Die gültigen Zeichensätze (und ihre entsprechenden Code-Seiten), die Samba akzeptiert, sind in Tabelle 11-5 aufgeführt.
Tabelle 11-5 Gültige Zeichensätze Zeichensatz Entsprechende Code-Seite
Definition
ISO8859-1
850
Westeuropäisch, Unix
ISO8859-2
852
Osteuropäisch, Unix
ISO8859-5
866
Russisch (Kyrillisch), Unix
ISO8859-7
737
Griechisch, Unix
KOI8-R
866
Russische (Alternativ), Unix
Normalerweise ist die Option character set deaktiviert. coding system Die Option coding system ähnelt der Option character set. Ihr Zweck besteht darin, Zeichen aus der japanischen JIS-Code-Seite in einen entsprechenden UnixZeichensatz umzuwandeln. Auch um diese Option verwenden zu können, müssen Sie außerdem die bereits beschriebene Option client code page auf den Wert 932 setzen. Die von Samba akzeptierten Kodierungssysteme finden Sie in Tabelle 11-6.
Tabelle 11-6 Gültige Werte für die Option coding system Zeichensatz
Definition
SJIS
Standard Shift JIS
JIS8
Acht-Bit-JIS-Codes
J8BB
Acht-Bit-JIS-Codes
J8BH
Acht-Bit-JIS-Codes
J8@B
Acht-Bit-JIS-Codes
J8@J
Acht-Bit-JIS-Codes
J8@H
Acht-Bit-JIS-Codes
JIS7
Sieben-Bit-JIS-Codes
J7BB
Sieben-Bit-JIS-Codes
J7BH
Sieben-Bit-JIS-Codes
J7@B
Sieben-Bit-JIS-Codes
J7@J
Sieben-Bit-JIS-Codes
J7@H
Sieben-Bit-JIS-Codes
JUNET
JUNET-Codes
JUBB
JUNET-Codes
JUBH
JUNET-Codes
JU@B
JUNET-Codes
JU@J
JUNET-Codes
JU@H
JUNET-Codes
EUC
EUC-Codes
HEX
drei Byte langer Hexadezimal-Code
CAP
drei Byte langer Hexadezimal-Code (Columbia AppleTalk Program)
valid chars Die Option valid chars kann verwendet werden, um eine Code-Seite um einzelne Zeichen zu erweitern. Sie benutzen diese Option folgendermaßen: valid chars = Î valid chars = 0450:0420 0x0A20:0x0A00 valid chars = A:a
Trennen Sie die einzelnen Zeichen in der Liste durch Leerzeichen voneinander. Wenn sich zwischen zwei Zeichen oder ihren numerischen Äquivalenten ein Doppelpunkt befindet, werden die Daten links vom Doppelpunkt als Groß- und die Zeichen rechts vom Doppelpunkt als Kleinbuchstaben angesehen. Sie können Zeichen sowohl literal (falls Sie sie eintippen können) als auch durch ihre oktalen, hexadezimalen oder dezimalen Unicode-Äquivalente darstellen. Diese Option muss hinter der Option client code page stehen, zu der Sie ein Zeichen hinzufügen wollen.
Der Windows-Nachrichtendienst Eines der eigenartigen Merkmale des SMB-Protokolls ist seine Fähigkeit, Textnachrichten zwischen Computern auszutauschen. Obwohl die Funktionalität der von Windows Messenger ähnelt, ist es nicht das Gleiche. Windows Messenger (auch als MSN Messenger bezeichnet) ist ein Internet-orientierter Nachrichtendienst, während es sich beim Windows-Nachrichtendienst um einen älteren und einfacheren LAN-orientierten Dienst handelt. Beim Windows-Nachrichtendienst können Nachrichten an Benutzer, einzelne Computer oder ganze Arbeitsgruppen im Netzwerk gerichtet werden. Das Programm WinPopup (Winpopup.exe), das in Abbildung 11-1 zu sehen ist, kann unter Windows 95/98/Me zum Senden oder Empfangen von Nachrichten eingesetzt werden. WinPopup ist ganz praktisch zum Versenden von Nachrichten. Um jedoch Nachrichten zu empfangen, muss es bereits in Betrieb sein, wenn die Nachricht am entfernten System abgeschickt wird. Abbildung 11-1 Das Senden einer Nachricht von einem Windows 95/98/Me-System (links); das Empfangen einer Nachricht (rechts)
Unter Windows NT/2000/XP erlaubt der Nachrichtendienst den Empfang von Nachrichten, ohne dass bereits eine Anwendung laufen muss; die Nachrichten erscheinen beim Empfang automatisch in einem kleinen Dialogfeld auf dem Bildschirm, wie in Abbildung 11-2 zu sehen.
Abbildung 11-2 Empfangen einer Nachricht auf einem Windows 2000-System
Um Nachrichten zu verschicken, muss der Befehl net send in einem Eingabeaufforderungsfenster verwendet werden: C:\> net send maya "Wer ist dort?" The message was successfully sent to MAYA.
Konfigurationsoption für den Windows-Nachrichtendienst Samba enthält eine einzige Option für den Windows-Nachrichtendienst, nämlich message command, zu sehen in Tabelle 11-7.
Tabelle 11-7 Konfigurationsoption für den Windows-Nachrichtendienst Option
message command
Parameter
String (ShellBefehl)
Funktion Legt einen Befehl fest, der unter Unix ausgeführt wird, wenn eine WinPopupNachricht ankommt.
Vorgabewert Geltungsbereich
keiner
global
message command Die Samba-Option message command definiert den Befehl, der auf dem Server ausgeführt wird, wenn eine Nachricht vom Windows-Nachrichtendienst ankommt. Der Befehl wird mit den Berechtigungen des Benutzers ausgeführt, den Sie über guest account angegeben haben. Was mit den Nachrichten gemacht werden soll, ist fraglich, da die meisten Samba-Server als selbstständige Server laufen. Eine Lösung besteht darin, die Nachrichten an root zu senden: [global] message command = /bin/mail -s "SMB-Nachricht von %f auf %m" root <%s; rm %s
Beachten Sie die Verwendung von Variablen an dieser Stelle. Die Variable %s wird durch den Namen der Datei ersetzt, in der sich die Nachricht befindet. Diese Datei sollte gelöscht werden, wenn das Programm beendet wird, weil sich sonst Nachrichtendateien auf dem Samba-Server anhäufen könnten. Außerdem muss der Befehl sich entweder schnell beenden oder seinen eigenen Prozess teilen (mit & nach dem Befehl); ansonsten wartet der Client möglicherweise endlos auf eine Meldung, dass seine Nachricht angekommen ist. Neben den Standardvariablen können Sie mit der Option message command drei weitere Variablen verwenden. Diese sind in Tabelle 11-8 dargestellt.
Tabelle 11-8 Variablen für den Wert der Option message command Variable
Definition
%s
Name der Datei, in der sich die Nachricht befindet
%f
Name des Systems, das die Nachricht gesandt hat
%t
Name des Systems, das Ziel der Nachricht ist
Diverse Optionen Viele Samba-Optionen behandeln betriebssystemabhängige Probleme, die jeweils mit Windows und Unix auftreten können. Einige dieser Optionen werden speziell dazu verwendet, die Benutzung der Ressourcen auf dem Unix-Server durch die Clients zu beschränken. Die in Tabelle 11-9 aufgeführten Optionen kümmern sich um einige dieser Probleme.
Tabelle 11-9 Diverse Optionen Option
deadtime
dfree command
Parameter
Funktion
Vorgabewert Geltungsbereich
numerischer Wert (Minuten)
Dauer der Inaktivität (in Minuten), bevor eine Verbindung geschlossen werden sollte.
0
global
String (Befehl)
Gibt einen Befehl an, der Informationen über den freien Festplattenplatz in einem Samba bekannten Format zurückliefert.
keiner
global
fstype
NTFS, FAT oder Samba
Dateisystemtyp, der vom Server an den Client übermittelt wird.
NTFS
global
keepalive
numerischer Wert (Sekunden)
Zeitdauer (in Sekunden) zwischen den Tests, ob ein Client in Betrieb ist.
300 (keiner)
global
Größte Festplattengröße, die an einen Client, von denen manche Beschränkungen unterliegen, zurückzuliefern ist. Beeinflusst nicht die eigentlichen Arbeiten auf der Platte.
0 (unendlich)
global
numerischer Wert
Maximale Anzahl gleichzeitiger SMBOperationen, die Clients ausführen können.
50
global
max open files
numerischer Wert
Setzt die Anzahl der offenen Dateien auf einen Wert unterhalb der bei Unix vorhandenen Grenze.
10000
global
max xmit
numerischer Wert
Legt die maximale Paketgröße fest, die Samba versendet.
65535 oder 16644
global
Boolescher Wert
Deaktiviert eine Funktion zur Unterstützung von NT/2000/XP; für Benchmarks oder im Fehlerfall.
yes
global
Boolescher Wert
Deaktiviert eine Funktion zur Unterstützung von NT/2000/XP; für Benchmarks oder im Fehlerfall.
yes
global
numerischer max disk size Wert (MByte)
max mux
nt pipe support
nt smb support
ole locking Boolescher compatibility Wert
Weist außerhalb des gültigen Bereichs liegende, unter Windows verwendete Sperranfragen neu zu, um sie in den unter Unix erlaubten Bereich zu bringen. Das Deaktivieren dieser Option verursacht Fehler unter Unix.
yes
global
keiner
global
panic action
String
Befehl, der ausgeführt werden soll, falls der SambaServer abstürzt; für die Fehlerbehebung.
set directory
Boolescher Wert
Wenn yes, wird VMSClients erlaubt, set dir-Befehle auszuführen.
no
global
status
Boolescher Wert
Wenn yes, wird Samba erlaubt, den Status für den Befehl smbstatus zu überwachen.
yes
global
Boolescher Wert
Wenn no, werden Anfragen von WindowsProgrammen ignoriert, die eine Synchronisierung auf die Platte ausführen wollen.
no
global
sync always
Boolescher Wert
Wenn yes, müssen alle Schreibanforderungen von Clients abgearbeitet worden sein, bevor der Aufruf beendet werden kann.
no
global
strip dot
Boolescher Wert
Wenn yes, werden abschließende Punkte von Unix-Dateinamen entfernt.
no
global
strict sync
change notify timeout
numerischer Wert (Sekunden)
Zeitdauer zwischen den Tests, wenn ein Client auf eine Änderung in einem bestimmten Verzeichnis wartet.
60
global
stat cache
Boolescher Wert
Wenn yes, speichert Samba aktuelle Namenszuordnungen ab.
yes
global
stat cache size
numerischer Wert
Anzahl der Einträge im stat-Cache.
50
global
deadtime Mit dieser globalen Option können Sie die Anzahl der Minuten festlegen, die der Samba-Server wartet, bevor er eine Sitzung mit einem nicht-aktiven Client schließt. Samba betrachtet einen Client als inaktiv, wenn er keine Dateien geöffnet hat und keine Daten an den Server sendet. Die Vorgabe für diese Option ist 0, so dass Samba niemals Sitzungen schließt, selbst wenn Clients inaktiv sind. Dies kann allerdings zu einer unnötigen Inanspruchnahme von Ressourcen des Servers durch inaktive Clients führen. Wir empfehlen Ihnen, den Vorgabewert folgendermaßen zu überschreiben: [global] deadtime = 10
Dies weist Samba an, Sitzungen zu nicht-aktiven Clients nach zehn Minuten zu schließen. In den meisten Netzwerken entstehen dadurch keine Probleme, weil Clients in der Lage sind, geschlossene Verbindungen erneut aufzubauen, und zwar transparent für den Benutzer des Clients. Siehe auch den Parameter keepalive. dfree command Diese globale Option wird auf Systemen eingesetzt, die nicht in der Lage sind, den freien Platz auf der Festplatte korrekt zu ermitteln. Das einzige bekannte System, auf dem Sie diese Option verwenden müssen, ist Ultrix. Die Option besitzt keinen Vorgabewert, da Samba normalerweise weiß, wie es den freien Platz berechnen muss und die Ergebnisse als zuverlässig angesehen werden. Sie können den Wert folgendermaßen festlegen: [global] dfree command = /usr/local/bin/dfree
Der Wert dieser Option sollte auf ein Skript oder Programm verweisen, das die Kapazität der Festplatte in Blöcken und die Anzahl der freien Blöcke zurückmeldet. Die Samba-Dokumentation empfiehlt das Folgende als verwendbares Skript: #!/bin/sh
df $1 | tail -1 | awk '{print $2" "$4}'
Auf Maschinen mit System V können Sie diese Zeilen einsetzen: #!/bin/sh /usr/bin/df $1 | tail -1 | awk '{print $3" "$5}'
fstype Diese Option auf Freigabeebene legt den Dateisystemtyp fest, den Samba meldet, wenn es von einem Client danach gefragt wird. Drei Strings können als Wert dieser Konfigurationsoption verwendet werden, wie in Tabelle 11-10 gezeigt.
Tabelle 11-10 Dateisystemtypen Wert
Definition
NTFS
Microsoft Windows NT-Dateisystem
FAT
DOS FAT-Dateisystem
Samba Samba-Dateisystem Vorgabe für diese Option ist NTFS, das heißt die Repräsentation eines Windows NTDateisystems. Es ist wahrscheinlich nicht notwendig, einen anderen Dateisystemtyp festzulegen. Sollte es jedoch doch einmal der Fall sein, können Sie den Vorgabewert für eine Freigabe folgendermaßen außer Kraft setzen: [data] fstype = FAT
keepalive Mit dieser globalen Option können Sie die Anzahl der Sekunden bestimmen, die zwischen dem Versand von zwei NetBIOS-keepalive-Paketen vergehen sollen. Mit diesen Paketen wird getestet, ob ein Client noch aktiv und im Netzwerk ist. Der Vorgabewert dieser Option ist 300 (5 Minuten). Verändern Sie diesen Wert so: [global] keepalive = 600
Der Wert 600 (10 Minuten) ist gut für Netzwerke, in denen zuverlässige Clients laufen. Enthält Ihr Netzwerk relativ unzuverlässige Clients, sollten Sie keepalive besser auf einen niedrigeren Wert setzen, etwa auf 30. Wird keepalive auf 0 gesetzt, werden
überhaupt keine NetBIOS-keepalive-Pakete verschickt. Siehe auch den Parameter deadtime. max disk size Diese globale Option legt für alle Freigaben, die Samba anbietet, eine scheinbare Grenze in MByte fest. Sie beeinflusst allerdings nur, wie viel Festplattenplatz Samba für die Freigabe angibt, und verhindert nicht, dass tatsächlich mehr Plattenplatz verwendet wird. Üblicherweise setzen Sie diese Option, um zu verhindern, dass Clients mit älteren Betriebssystemen - oder fehlerhaften Anwendungen - von großen Festplattengrößen verwirrt werden. So geraten beispielsweise einige ältere WindowsProgramme durcheinander, wenn sie eine Freigabe entdecken, die größer als 1 GByte ist. Um dieses Problem zu umgehen, kann max disk size folgendermaßen eingestellt werden: [global] max disk size = 1000
Der Vorgabewert für diese Option lautet 0, was bedeutet, dass es keine obere Grenze gibt. max mux Diese globale Option legt die maximale Anzahl der gleichzeitig möglichen SMBOperationen fest, die Samba erlaubt. Der Vorgabewert für diese Option ist 50. Sie können ihn folgendermaßen ändern: [global] max mux = 100
max open files Diese globale Option legt die maximale Anzahl offener Dateien fest, die Samba zu einem bestimmten Zeitpunkt für alle Prozesse erlauben soll. Dieser Wert muss gleich oder kleiner dem für das Betriebssystem erlaubten Wert sein und ist von System zu System unterschiedlich. Der Vorgabewert für diese Option ist 10000. Sie können ihn folgendermaßen ändern: [global] max open files = 8000
max xmit Diese globale Option legt die maximale Größe von Paketen fest, die Samba mit einem Client austauschen kann. In seltenen Fällen können kleinere Pakete die Leistung steigern, besonders mit Windows for Workgroups-Clients. In Samba-Versionen bis 2.2.5 lag der Vorgabewert für diese Option bei 65535. In 2.2.7 und späteren Versionen wurde die Vorgabe auf 16644 geändert, um dem Verhalten von Windows
2000 zu entsprechen und die Unterstützung für Windows NT 4.0 zu verbessern. Sie können den Vorgabewert folgendermaßen ändern: [global] max xmit = 4096
nt pipe support Diese globale Option wird von Entwicklern verwendet, die es Windows NT/2000/XPClients erlauben oder verbieten wollen, Verbindungen zu den NT-spezifischen SMB IPC $-Pipes herzustellen. Als gewöhnlicher Benutzer werden Sie den Vorgabewert niemals ändern müssen. [global] nt pipe support = yes
nt smb support Diese globale Option wird von Entwicklern verwendet, um NT-spezifische SMBOptionen mit Windows NT/2000/XP-Clients auszuhandeln. Das Samba-Team hat festgestellt, dass die Leistung ihrer Software etwas höher ist, wenn der Wert dieser Option no beträgt. Dennoch sollten Sie als Benutzer die Vorgabe niemals ändern. [global] nt smb support = yes
ole locking compatibility Mit dieser globalen Option können Sie Sambas interne Sperrung von Bereichen innerhalb von Dateien ein- oder ausschalten. Diese Funktionalität stellt die Kompatibilität mit Object Linking and Embedding-(OLE-)Anwendungen bereit, die Bereichssperrungen als Methode zur Kommunikation zwischen Prozessen benutzen. Die Vorgabe für diese Option ist yes. Wenn Sie Ihrem Unix-Sperrmechanismus trauen, können Sie den Wert ändern. [global] ole locking compatibility = no
panic action Diese globale Option gibt einen Befehl an, den Samba ausführt, wenn im Betrieb oder beim Start ein nicht behebbarer Fehler auftritt. Es gibt keinen Vorgabewert für diese Option. Sie können folgendermaßen eine Aktion festlegen: [global]
panic action = /bin/csh -c 'xedit <<: "Samba has shutdown unexpectedly";:'
set directory Diese Boolesche Option auf Freigabeebene erlaubt es Digital Pathworks-Clients, mit dem setdir-Befehl in Verzeichnisse auf dem Server zu wechseln. Wenn Sie den Digital Pathworks-Client nicht verwenden, benötigen Sie diese Option nicht. Der Vorgabewert für diese Option ist no. Sie können ihn auf Freigabeebene folgendermaßen ändern: [data] set directory = yes
status Diese globale Option gibt an, ob Samba alle aktiven Verbindungen in einer Statusdatei aufzeichnen soll. Diese Datei wird ausschließlich vom Befehl smbstatus verwendet. Wenn Sie diesen Befehl nicht verwenden wollen, können Sie für diese Option den Wert no angeben, wodurch der Server ein wenig schneller arbeitet. Die Vorgabe ist yes. Sie können sie folgendermaßen ändern: [global] status = no
strict sync Diese Option auf Freigabeebene legt fest, ob Samba Client-Anfragen zur FestplattenSynchronisierung beachten soll. Viele Windows-Clients senden eine solche Anfrage schon bei dem Versuch, Daten in ihre eigenen offenen Dateien zu schreiben. In diesem Fall ist eine Festplatten-Synchronisierung unter Unix auf Grund seiner hohen Zuverlässigkeit im Allgemeinen unnötig; sie hat im Großen und Ganzen vor allem den Effekt, dass sie die Leistung des Samba-Host-Systems deutlich vermindert. Der Vorgabewert für diese Option ist no, wodurch überflüssige Anfragen nach FestplattenSynchronisierungen ignoriert werden. Sie können diesen Wert folgendermaßen ändern: [data] strict sync = yes
sync always Diese Option auf Freigabeebene bestimmt, ob jedem Schreibzugriff auf die Festplatte eine Festplatten-Synchronisierung folgen soll, bevor der Schreibaufruf die Kontrolle an den Client zurückgibt. Selbst wenn der Wert dieser Option no ist, können Clients eine Festplatten-Synchronisierung anfordern; beachten Sie dazu die Option strict sync. Der Vorgabewert ist no. Sie können ihn für eine Freigabe folgendermaßen ändern:
[data] sync always = yes
strip dot Legen Sie mit dieser globalen Option fest, ob der abschließende Punkt in einem UnixDateinamen entfernt wird. Der Vorgabewert dieser Option ist no. Sie können ihn auf Freigabeebene folgendermaßen ändern: [global] strip dot = yes
change notify timeout Die globale Option change notify timeout emuliert ein Windows NT/2000-SMBMerkmal namens Änderungsbenachrichtigung. Dieses erlaubt es einem Client anzufordern, dass ein Windows NT/2000-Server ein bestimmtes Verzeichnis in einer Freigabe regelmäßig auf Änderungen hin überprüft. Treten Änderungen auf, benachrichtigt der Server den Client. Samba führt diese Funktion für seine Clients in einem Intervall aus, das standardmäßig 1 Minute (60 Sekunden) beträgt. Werden diese Überprüfungen zu oft ausgeführt, verlangsamt das den Server merklich; Sie können diese Option jedoch verwenden, um eine andere Zeitdauer festzulegen, die Samba zwischen den Tests warten soll: [global] change notify timeout = 30
stat cache Die globale Option stat cache aktiviert die Zwischenspeicherung für kürzlich durchgeführte, schreibweisenunabhängige Namenszuordnungen. Vorgabe ist yes. Das Samba-Team empfiehlt, diesen Parameter niemals zu ändern. stat cache size Die globale Option stat cache size legt die Anzahl der Cache-Einträge fest, die für die Option stat cache verwendet werden. Der Vorgabewert ist 50. Auch hier empfiehlt das Samba-Team, diesen Parameter niemals zu ändern.
Kapitel 12 Fehlersuche und Problembehandlung Samba ist außergewöhnlich robust. Wenn Sie erst einmal alles nach Wunsch eingerichtet haben, werden Sie vermutlich sogar vergessen, dass es überhaupt läuft. Probleme treten normalerweise während der Installation auf oder wenn Sie versuchen, den Server neu zu konfigurieren. Glücklicherweise stehen eine Vielzahl von Ressourcen zur Verfügung, um diese Probleme zu diagnostizieren. Wir können zwar an dieser Stelle nicht in allen Einzelheiten die Lösung für jedes Problem schildern, das bei Ihnen auftreten könnte, Sie sollten aber mit Hilfe der Ratschläge in diesem Kapitel eine gute Starthilfe erhalten. Der erste Abschnitt dieses Kapitels führt den Inhalt Ihres Werkzeugkastens auf: Er enthält die Arbeitsmittel, mit denen Sie Fehlern auf die Schliche kommen können. Der zweite Abschnitt erklärt ausführlich, wie Sie diese Werkzeuge einsetzen können, und im letzten Abschnitt machen wir Sie mit zusätzlichen Ressourcen zum Aufspüren besonders hartnäckiger Probleme bekannt.
Der Werkzeugkasten Unix erscheint manchmal als Sammlung von Anwendungen und Werkzeugen. Es gibt
Werkzeuge, um Fehler in Werkzeugen zu suchen. Und selbstverständlich gibt es immer mehrere Möglichkeiten, eine Aufgabe zu erledigen. Wenn Sie versuchen, ein Problem mit Samba zu beheben, sollte eine wohlüberlegte Vorgehensweise folgende Punkte und Werkzeuge berücksichtigen: ● ● ● ● ●
● ●
Samba-Protokolle Samba-Testprogramme Unix-Werkzeuge den Fehlerbaum die Dokumentation und Listen mit häufig gestellten Fragen und deren Antworten (FAQs; Frequently Asked Questions) Samba-Newsgroups durchsuchbare Mailinglisten-Archive
In den folgenden Abschnitten wollen wir die einzelnen Punkte genauer betrachten.
Samba-Protokolle Ihr erster Anknüpfungspunkt sollten grundsätzlich die Protokolldateien sein. Die Samba-Protokolle helfen bei der Lösung der meisten Probleme, auf die Samba-Administratoren (sowohl im Anfängerals auch im Fortgeschrittenen-Stadium) wahrscheinlich treffen. Samba ist in Bezug auf die Protokollierung sehr flexibel. Sie können den Protokollierungsgrad exakt an Ihre Bedürfnisse anpassen. Mit Hilfe von Variablen in der SambaKonfigurationsdatei können Sie Protokolle für bestimmte Clients, Freigaben, Benutzer oder Kombinationen daraus erstellen.
Standardmäßig legt Samba Protokolle in den Dateien /usr/local/samba/var/smbd.log und /usr/ local/samba/var/nmbd.log an. Sie können beim Start der Samba-Daemons mit der Option -l auf der Kommandozeile ein Protokollverzeichnis festlegen, zum Beispiel: # smbd -l /var/log/samba # nmbd -l /var/log/samba
Alternativ dazu haben Sie die Möglichkeit, den Ort und den Namen mit der Konfigurationsoption log file in smb.conf einzustellen. Diese Option akzeptiert alle Variablen, so dass Sie den Server leicht dazu veranlassen können, ein eigenes Protokoll für jedes Client-System anzulegen, das sich anmeldet. Dazu geben Sie Folgendes an: [global] log file = %m.log
Sie können aber auch dafür sorgen, dass der Server für jeden angebotenen Dienst (also jede Freigabe) ein Protokoll aufzeichnet. Das ist vor allem dann sinnvoll, wenn Sie den Verdacht hegen, dass eine bestimmte Freigabe Ärger verursacht. Dazu setzen Sie die Variable %S ein: [global]
log file = %S.log
Protokollierungsstufen Sie können den Protokollierungsgrad, den Samba verwendet, in der Datei smb.conf festlegen. Benutzen Sie dazu eine der beiden gleichbedeutenden Optionen log level oder debug level. Die Protokollierungsstufe ist ein ganzzahliger Wert zwischen 0 und 10. Bei Stufe 0 wird keine Protokollierung durchgeführt. Höhere Werte haben ausführlichere Protokolle zur Folge. Lassen Sie uns beispielsweise annehmen, dass wir einen Windows-Client benutzen, um ein Verzeichnis auf einem Samba-Server zu durchsuchen. Um nur wenige Informationen zu erhalten, benutzen Sie log level = 1. Damit wird Samba angewiesen, nur oberflächliche Informationen zu zeigen, in diesem Fall lediglich den Verbindungsaufbau: 05/25/02 22:02:11 server (192.168.236.86) connect to service public as user pcguest (uid=503,gid=100) (pid 3377)
Höhere Protokollierungsstufen ergeben ausführlichere Angaben. Normalerweise werden Sie nicht über Stufe 3 hinausgehen, die für die meisten Samba-Administratoren mehr als ausreichende Informationen produziert. Höhere Stufen sind für Entwickler gedacht und geben eine Unmenge an Informationen aus, die für
Normalsterbliche kryptisch sind. Hier sind Beispielausgaben der Stufen 2 und 3 desselben Vorgangs. Stören Sie sich nicht daran, wenn Sie die Komplexität einer SMB-Verbindung nicht verstehen. Es geht uns an dieser Stelle ausschließlich darum, die Unterschiede der beiden Protokollierungsgrade zu verdeutlichen: /* Level 2 */ Got SIGHUP Processing section "[homes]" Processing section "[public]" Processing section "[temp]" Allowed connection from 192.168.236.86 (192.168.236.86) to IPC$ Allowed connection from 192.168.236.86 (192.168.236.86) to IPC/
/* Level 3 */ 05/25/02 22:15:09 Transaction 63 of length 67 switch message SMBtconX (pid 3377)
Allowed connection from 192.168.236.86 (192.168.236.86) to IPC$ ACCEPTED: guest account and guest ok found free connection number 105 Connect path is /tmp chdir to /tmp chdir to / 05/25/02 22:15:09 server (192.168.236.86) connect to service IPC$ as user pcguest (uid=503,gid=100) (pid 3377) 05/25/02 22:15:09 tconX service=ipc$ user=pcguest cnum=105 05/25/02 22:15:09 Transaction 64 of length 99 switch message SMBtrans (pid 3377) chdir to /tmp trans <\PIPE\LANMAN> data=0 params=19 setup=0 Got API command 0 of form <WrLeh> (tdscnt=0,tpscnt=19,mdrcnt=4096,mprcnt=8) Doing RNetShareEnum
RNetShareEnum gave 4 entries of 4 (1 4096 126 4096) 05/25/02 22:15:11 Transaction 65 of length 99 switch message SMBtrans (pid 3377) chdir to / chdir to /tmp trans <\PIPE\LANMAN> data=0 params=19 setup=0 Got API command 0 of form <WrLeh> (tdscnt=0,tpscnt=19,mdrcnt=4096,mprcnt=8) Doing RNetShareEnum RNetShareEnum gave 4 entries of 4 (1 4096 126 4096) 05/25/02 22:15:11 Transaction 66 of length 95 switch message SMBtrans2 (pid 3377) chdir to / chdir to /pcdisk/public call_trans2findfirst: dirtype = 0, maxentries = 6, close_after_first=0, close_if_end = 0 requires_resume_key = 0 level = 260, max_data_bytes = 2432
unix_clean_name [./DESKTOP.INI] unix_clean_name [desktop.ini] unix_clean_name [./] creating new dirptr 1 for path ./, expect_close = 1 05/25/02 22:15:11 Transaction 67 of length 53 switch message SMBgetatr (pid 3377) chdir to /
[... gelöscht ...]
Wir haben uns den Rest der Ausgabe nach dem ersten Paket gespart, weil sie mehrere Seiten in Anspruch genommen hätte. Seien Sie sich im Klaren, dass Protokollierungsstufen oberhalb von 3 schnell Ihre Festplatten mit Einzelheiten über interne Samba-Aktionen füllen. Die Stufe 3 ist äußerst nützlich, um die Vorgänge des Servers genau zu verfolgen, und in der Regel können Sie Fehler finden, wenn Sie die Protokolldateien genau durchgehen. Eine hohe Protokollierungsstufe (ab 3) verlangsamt den Samba-Server deutlich. Denken Sie daran, dass Einträge in die Protokolldatei
bewirken, dass Daten auf die Festplatte geschrieben werden (ein von Natur aus langsamer Vorgang) und Protokollierungsstufen höher als 2 eine große Datenmenge produzieren. Schalten Sie Stufe 3 nur dann ein, wenn Sie wirklich ein Problem mit dem Samba-Server beheben wollen. Die Protokollierung aktivieren und deaktivieren Um die Protokollierung ein- oder auszuschalten, legen Sie die gewünschte Stufe im Abschnitt [global] der Datei smb.conf fest. Dann können Sie entweder Samba neu starten oder den aktuellen Daemon dazu bringen, die Konfigurationsdatei erneut zu verarbeiten, indem Sie ihm ein Hangup-(HUP-)Signal schicken. Oder Sie senden dem smbd-Prozess ein SIGUSR1Signal, um seine Protokollierungsstufe während des Betriebs zu erhöhen: # kill -SIGUSR1 1234
bzw. ein SIGUSR2-Signal, um sie zu verringern: # kill -SIGUSR2 1234
Aktionen einzelner Client-Systeme oder Benutzer aufzeichnen Ein wirkungsvoller Weg, Probleme einzelner Clients oder Benutzer zu diagnostizieren, ohne andere Clients und Benutzer zu stören, besteht darin, für
einzelne Systeme unterschiedliche Protokollierungsstufen im Abschnitt [global] der smb.conf-Datei zu verwenden. Dies erreichen Sie über eine Strategie, die wir Ihnen bereits vorgestellt haben: [global] log level = 0 log file = /usr/local/samba/var/ log.%m include = /usr/local/samba/lib/smb. conf.%m
Diese Optionen weisen Samba an, für jeden Client jeweils eine eigene Konfigurations- und Protokolldatei zu verwenden. Nun müssen Sie nur für die betreffenden Clients eigene smb.confDateien anlegen, die den Eintrag log level = 3 enthalten (die anderen Clients arbeiten mit der Protokollierungsstufe 0), und die Protokolldatei auswerten, um das Problem zu orten. Wenn ein Problem nur bei einem bestimmten Benutzer auftritt - und diesen von System zu System begleitet -, können Sie die Protokollierung auf diesen Benutzer beschränken, indem Sie Folgendes in die smb.conf-Datei aufnehmen: [global] log level = 0
log file = /usr/local/samba/var/ log.%u include = /usr/local/samba/lib/smb. conf.%u
Anschließend können Sie eine eigene smb.confDatei für jeden Benutzer anlegen, den Sie überwachen wollen (z.B. /usr/local/samba/lib/smb. conf.tim). Die Dateien enthalten die Konfigurationsoption log level = 3 und zeichnen nur für die angegebenen Benutzer ein ausführlicheres Protokoll auf.
Samba-Testprogramme Das Verzeichnis /docs/textdocs der SambaDistribution (beginnend mit der Datei DIAGNOSIS. txt) beschreibt rigorose Prüfungen für die wichtigen Teile von Samba. Der Fehlerbaum in diesem Kapitel ist eine ausführlichere Variante der grundlegenden Tests, die das Samba-Team empfiehlt, behandelt aber - wie DIAGNOSIS.txt nur die Installation und die Neukonfiguration. Die anderen Dateien im Unterverzeichnis /docs behandeln spezielle Probleme und erklären, wie Sie Probleme beheben, auf die wir in unserem Buch nicht eingehen. Wenn der Fehlerbaum Ihnen keine ausreichenden Informationen bietet, sehen Sie sich die Datei DIAGNOSIS.txt und verwandte Dateien an.
Unix-Werkzeuge
Manchmal ist es sinnvoll, ein von Samba unabhängiges Werkzeug zu verwenden, um Vorgänge auf dem Server zu beobachten. Drei Diagnosewerkzeuge können besonders nützlich sein, um Schwierigkeiten mit Samba zu beheben: trace, tcpdump und Ethereal. trace verwenden Den Befehl trace gibt es mit diversen Namen, abhängig vom Betriebssystem, das Sie verwenden. Unter Linux heißt er strace, bei Solaris truss, SGI besitzt padc und par und HP-UX hat trace oder tusc. Alle diese Programme besitzen im Wesentlichen die gleiche Funktion, nämlich das Aufzeigen von Betriebssystem-Funktionsaufrufen. Damit können Sie die Ausführung eines beliebigen Programms verfolgen, beispielsweise den SambaServer, und genau bestimmen, welcher Aufruf das Problem verursacht. Ein Problem, das Sie mit trace finden können, sind falsche Versionen dynamisch verbundener Bibliotheken. Dieser Fehler kann auftauchen, wenn Sie Samba als ausführbare, binäre Dateien heruntergeladen haben. Normalerweise sehen Sie bei einem Problem den fehlerverursachenden Aufruf am Ende der Ausgabe von trace, bevor der Samba-Server abstürzt. Im Folgenden finden Sie eine Beispielausgabe des Befehls strace unter dem Betriebssystem Linux. Dabei handelt es sich um einen kleinen Ausschnitt einer größeren Ausgabe während des Öffnens
eines Verzeichnisses auf dem Samba-Server. Jede Zeile entspricht einem Systemaufruf, beginnend mit dem Namen des Aufrufs, gefolgt von seinen Parametern und dem Rückgabewert. Wenn dabei ein Fehler auftritt, enthält die Ausgabe den Fehlerwert (z.B. ENOENT) und seine Erklärung. Sie können die Parametertypen und die möglichen Fehler in der entsprechenden trace-Manpage für das von Ihnen verwendete Betriebssystem nachsehen. chdir("/pcdisk/public")
= 0
stat("mini/desktop.ini", 0xbffff7ec) 1 ENOENT (No such file or directory)
= -
stat("mini", {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0 stat("mini/desktop.ini", 0xbffff7ec) 1 ENOENT (No such file or directory)
= -
open("mini", O_RDONLY)
= 5
fcntl(5, F_SETFD, FD_CLOEXEC)
= 0
fstat(5, {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0 lseek(5, 0, SEEK_CUR)
= 0
SYS_141(0x5, 0xbfffdbbc, 0xedc, 0xbfffdbbc, 0x80ba708) = 196 lseek(5, 0, SEEK_CUR) 1024
=
SYS_141(0x5, 0xbfffdbbc, 0xedc, 0xbfffdbbc, 0x80ba708) = 0 close(5)
= 0
stat("mini/desktop.ini", 0xbffff86c) 1 ENOENT (No such file or directory)
= -
write(3, "\0\0\0#\377SMB\10\1\0\2\0\200\1 \0"..., 39) = 39 SYS_142(0xff, 0xbffffc3c, 0, 0, 0xbffffc08) = 1 read(3, "\0\0\0?", 4)
= 4
read(3, "\377SMBu\0\0\0\0\0\0\0\0\0\0\0 \0"..., 63) = 63 time(NULL) 896143871
=
Dieses Beispiel zeigt mehrere erfolglose stat()Aufrufe auf Grund fehlender Dateien, die erwartet wurden. Sie müssen kein Experte sein, um zu sehen, dass die Datei desktop.ini im angegebenen Verzeichnis nicht vorhanden ist. Sie können mit trace viele offensichtliche, wiederholt auftretende Probleme identifizieren. Häufig müssen Sie sich lediglich die letzte Nachricht vor einem SambaAbsturz ansehen. tcpdump verwenden
Mit dem Programm tcpdump, das von Andrew Tridgell erweitert wurde, können Sie SMBNetzwerkverkehr in Echtzeit überwachen. Das Programm beherrscht mehrere Ausgabeformate, und Sie können die Ausgabe filtern, um nur einen bestimmten Teil des Netzwerkverkehrs zu sehen. Das Programm zeigt Ihnen die gesamte Kommunikation zwischen Clients und dem Server, einschließlich der SMB- und NMB-BroadcastNachrichten. Die Möglichkeiten zur Fehlersuche beschränken sich auf die OSI-Netzwerkschicht, aber Sie können die Ausgabe der Software verwenden, um eine allgemeine Vorstellung davon zu bekommen, was Server und Clients wollen. Im Folgenden finden Sie eine Beispielausgabe von tcpdump. Dabei hat ein Client den Inhalt eines Verzeichnisses angefordert, woraufhin der Server die Verzeichnisnamen homes, public, IPC$ und temp zurückgeliefert hat (wir haben am rechten Rand einige Erklärungen hinzugefügt): $ tcpdump -v -s 255 -i eth0 port not telnet SMB PACKET: SMBtrans (REQUEST) Anforderungspaket SMB Command = 0x25 Anforderung war ls oder dir
[000] 01 00 00 10
Die
....
>>> NBT Packet Äußerer Rahmen eines SMB-Pakets NBT Session Packet Flags=0x0 Length=226 [lines skipped]
SMB PACKET: SMBtrans (REPLY) Anfang einer Antwort auf die Anforderung SMB Command = 0x25 Der Befehl war ls oder dir Error class
=
0x0
Error code 0
=
Flags1
=
0x80
Flags2
=
0x1
Keine Fehler
Tree ID
=
105
Proc ID
=
6075
UID
=
100
MID
=
30337
Word Count
=
10
TotParamCnt=8 TotDataCnt=163 Res1=0 ParamCnt=8 ParamOff=55 Res2=0 DataCnt=163 DataOff=63 Res3=0 Lsetup=0 Param Data: (8 bytes) [000] 00 00 00 00 05 00 05 00
........
Data Data: (135 bytes) Verzeichnisinhalt:
Eigentlicher
[000] 68 6F 6D 65 73 00 00 00 00 00 00 00 00 00 00 00 homes... ........ [010] 64 00 00 00 70 75 62 6C 69 63 00 00 00 00 00 00 d...publ ic...... [020] 00 00 00 00 75 00 00 00 74 65 6D 70 00 00 00 00 ....u... temp.... [030] 00 00 00 00 00 00 00 00 76 00 00 00 49 50 43 24 ........ v...IPC$ [040] 00 00 00 00 00 00 00 00 00 00 03 00 77 00 00 00 ........ ....w... [050] 64 6F 6E 68 61 6D 00 00 00 00 00 00 00 00 00 00 donham.. ........ [060] 92 00 00 00 48 6F 6D 65 20 44 69 72 65 63 74 6F ....Home Directo [070] 72 69 65 73 00 00 00 49 50 43 20 53 65 72 76 69 ries...I PC Servi [080] 63 65 20 28 53 61 6D
ce (Sam
Die Ausgabe stammt aus derselben Sitzung wie der Befehl trace: das Listing eines Verzeichnisses. Die verwendeten Optionen waren -v (ausführliche
Ausgabe), -i eth0 (die Netzwerkschnittstelle, an der tcpdump lauschen sollte - ein Ethernet-Port) und -s 255 (um die ersten 255 Bytes jedes Pakets anzeigen zu lassen anstatt wie vorgegeben die ersten 68). Mit der Option port not telnet haben wir die Anzeige von Telnet-Sitzungen deaktiviert, weil wir über das Netzwerk auf dem Server angemeldet waren. Das Programm tcpdump kennt eine Menge Optionen, mit denen Sie unerwünschten Netzwerkverkehr herausfiltern können. Mit snoop oder etherdump erhalten Sie eine ähnliche Ausgabe. Sie können die veränderte Variante von tcpdump vom Samba-FTP-Server herunterladen; Sie finden sie unter ftp://samba.anu.edu.au/pub/samba/ tcpdump-smb. Andere Varianten enthalten keine Unterstützung für das SMB-Protokoll; wenn Sie keine Ausgabe wie im obigen Beispiel sehen, müssen Sie die Version mit SMB-Unterstützung verwenden. Ethereal verwenden Ethereal (http://www.ethereal.com) ist ein grafisch orientiertes Programm, das die gleichen Grundfunktionen ausführt wie tcpdump. Möglicherweise bevorzugen Sie die Benutzung von Ethereal, weil es leichter zu bedienen ist. Wenn Ethereal läuft, gehen Sie folgendermaßen vor: 1. Wählen Sie Start aus dem Capture-Menü. 2. Klicken Sie in dem sich öffnenden Dialog auf ok. Dadurch öffnet sich ein Dialogfeld, in dem gezeigt wird, wie viele Pakete Ethereal gesehen
hat. Führen Sie auf dem System (oder den Systemen) in Ihrem Netzwerk die Aktion aus, mit der Sie das Problem, das Sie gerade untersuchen, reproduzieren können. 3. Klicken Sie auf den Stop-Button im EtherealDialog, um die Sammlung der Daten zu beenden. 4. Klicken Sie im Hauptfenster von Ethereal auf einen Eintrag im oberen Fenster, um ihn im unteren Fenster näher zu betrachten. Im unteren Fenster klicken Sie auf eines der Kästchen mit dem Pluszeichen (+), um die Darstellung zu erweitern. Ethereal ist ziemlich gut darin, den Inhalt der Pakete, die es aufzeichnet, in ein lesbares Format zu übersetzen. Es sollte Ihnen nur wenige Schwierigkeiten bereiten festzustellen, was während der Aufzeichnungsperiode in Ihrem Netzwerk geschehen ist.
Der Fehlerbaum Der in diesem Abschnitt präsentierte Fehlerbaum hilft Ihnen bei der Diagnose und beim Beheben von Problemen, die bei der Installation und Umkonfiguration von Samba auftreten können. Dabei handelt es sich um eine erweiterte Form des Dokuments DIAGNOSIS.txt zur Fehlersuche, das in der Samba-Distribution enthalten ist. Bevor Sie mit der Fehlersuche beginnen, sollten Sie folgende Informationen ermitteln:
●
●
●
●
Ihre Client-IP-Adresse (wir verwenden 192.168.236.10) Ihre Server-IP-Adresse (wir verwenden 192.168.236.86) die Netzmaske für Ihr Netzwerk (typischerweise 255.255.255.0) ob sich die Systeme alle im gleichen Subnetz befinden (bei unseren ist das der Fall)
Aus Gründen der Klarheit haben wir in den folgenden Beispielen den Server in server. example.com und das Client-System in client. example.com umbenannt.
Wie Sie den Fehlerbaum benutzen Beginnen Sie die Tests hier und überspringen Sie diesen Schritt nicht. Er dauert nicht lange (etwa fünf Minuten) und kann später Zeit bei der Eingrenzung des Fehlers sparen. Wir sagen Ihnen immer, zu welchem Abschnitt Sie springen können, wenn ein Test erfolgreich verläuft.
Fehlersuche beim IP-Protokoll auf niedriger Ebene Die erste Serie von Tests findet auf den IPDiensten der niedrigen Ebene statt, die Samba zur Ausführung benötigt. Die Tests in diesem Abschnitt stellen sicher, dass folgende Punkte zutreffen: ● ●
Die IP-Software funktioniert. Die Ethernet-Hardware funktioniert.
●
Der grundlegende Namensdienst ist eingerichtet.
In den folgenden Abschnitten richten wir die TCPSoftware ein, die Samba-Daemons smbd und nmbd, die hostbasierte Zugriffskontrolle, die Authentifizierung, die benutzerbasierte Zugriffskontrolle, Dateidienste und das Durchsuchen. Wir haben die Tests ausführlich beschrieben, so dass sowohl technisch orientierte Endanwender als auch erfahrene System- und Netzwerkadministratoren diese verstehen. Testen der Netzwerk-Software mit ping Der erste Befehl, den Sie sowohl am SambaServer als auch am Client eingeben sollten, lautet ping 127.0.0.1. Dabei handelt es sich um die Loopback-Adresse, über die Sie herausfinden können, ob die Netzwerkunterstützung überhaupt funktioniert. Verwenden Sie auf Unix-Computern ping 127.0.0.1 mit der Statistik-Option und brechen Sie den Befehl nach einigen Zeilen ab. Auf Sun-Workstations heißt der Befehl üblicherweise / usr/etc/ping -s 127.0.0.1, bei Linux einfach ping 127.0.0.1. Geben Sie auf Windows-Clients an der MS-DOS-Eingabeaufforderung ping 127.0.0.1 ein, der Befehl beendet sich nach vier Zeilen selbst. Hier ein Beispiel auf einem Linux-Server: $ ping 127.0.0.1 PING localhost: 56 data bytes 64 bytes
from localhost (127.0.0.1): icmp-seq=0. time=1. ms 64 bytes from localhost (127.0.0.1): icmp-seq=1. time=0. ms 64 bytes from localhost (127.0.0.1): icmp-seq=2. time=1. ms ^C ----127.0.0.1 PING Statistics---3 packets transmitted, 3 packets received, 0% packet loss round-trip (ms) min/avg/max = 0/0/1
Wenn der Befehl ping: no answer from ... oder 100% packet loss ausgibt, ist IP nicht auf dem Computer installiert. Bei 127.0.0.1 handelt es sich um die interne Loopback-Adresse, die Sie auch ansprechen können, wenn der Computer nicht mit dem Netzwerk verbunden ist. Wenn dieser Test fehlschlägt, haben Sie ein ernstes Problem. TCP/IP ist entweder nicht installiert oder falsch konfiguriert. Lesen Sie die Dokumentation Ihres Betriebssystems, wenn es ein Unix-Server ist. Bei einem Windows-Client folgen Sie den Anweisungen in Kapitel 3, um Netzwerkunterstützung zu installieren.
Sind Sie der Netzwerkverwalter, empfehlen wir Ihnen TCP/IP-NetzwerkAdministration, Kapitel 11, von Craig Hunt sowie Windows NT TCP/IP Netzwerk-Administration von Craig Hunt und Robert Bruce Thompson. Beide Bücher sind bei O'Reilly erschienen. Lokale Namensdienste mit ping testen Versuchen Sie nun, mit dem Befehl ping localhost auf dem Samba-Server zu erreichen. Der Hostname localhost bezieht sich auf den lokalen Host, also auf die Loopback-Schnittstelle 127.0.0.1, und sollte zu dieser Adresse aufgelöst werden. Nach dem Eingeben von ping localhost sollte die Ausgabe etwa so aussehen: $
ping localhost
PING localhost: 56 data bytes from localhost (127.0.0.1): icmp-seq=0. time=0. ms localhost (127.0.0.1):
64 bytes
64 bytes from
icmp-seq=1. time=0. ms localhost (127.0.0.1):
64 bytes from
icmp-seq=2. time=0. ms
^C
Ist dies erfolgreich, versuchen Sie das Gleiche auf dem Client. Anderenfalls: ●
●
Erhalten Sie die Meldung unknown host: localhost, gibt es ein Problem mit der Auflösung des Hostnamens localhost in eine gültige IP-Adresse. (Die Ursache könnte ganz einfach ein fehlender Eintrag in einer lokalen hosts-Datei sein.) Begeben Sie sich von hier zum Abschnitt »Fehlersuche bei Namensdiensten« weiter unten in diesem Kapitel. Erhalten Sie die Meldung ping: no answer oder 100% packet loss, das Versenden von ping an 127.0.0.1 hat jedoch funktioniert, liefern die Namensdienste eine Adresse, die allerdings nicht die richtige ist. Prüfen Sie die Datei oder Datenbank (üblicherweise / etc/hosts auf einem Unix-System), die vom Namensdienst zum Auflösen der Adressen eingesetzt wird, um sicherzustellen, dass der Eintrag korrekt ist.
Testen der Netzwerk-Hardware mit ping Versuchen Sie nun, die IP-Adresse des Servers selbst mit ping zu erreichen. Sie sollten genau das gleiche Ergebnis erhalten wie beim ping auf die
Adresse 127.0.0.1: $ ping 192.168.236.86 PING 192.168.236.86: 56 data bytes 64 bytes from 192.168.236.86 (192.168.236.86): icmp-seq=0. time=1. ms 64 bytes from 192.168.236.86 (192.168.236.86): icmp-seq=1. time=0. ms 64 bytes from 192.168.236.86 (192.168.236.86): icmp-seq=2. time=1. ms ^C ----192.168.236.86 PING Statistics---3 packets transmitted, 3 packets received, 0% packet loss round-trip (ms) min/avg/max = 0/0/1
Wenn dies auf dem Server funktioniert, wiederholen Sie es auf dem Client. Ansonsten: ●
Falls ping netzwerk_ip auf dem Server oder dem Client fehlschlägt, ping 127.0.0.1 dagegen auf diesem System funktioniert, haben Sie ein TCP/IP-Problem mit der Ethernet-Netzwerkkarte an dem Computer. Lesen Sie die Dokumentation der Karte oder des Betriebssystems, um die korrekte Konfiguration zu ermitteln. Beachten Sie,
dass auf einigen Systemen der ping-Befehl auch dann eine Erfolgsmeldung zurückgibt, wenn das System nicht mit dem Netzwerk verbunden ist, so dass dieser Test ein Hardware-Problem nicht in jedem Fall erkennt. Testen der Verbindungen mit ping Versuchen Sie als Nächstes, den Server mit seinem Namen anzusprechen (nicht mit seiner IPAdresse), und zwar sowohl lokal vom Server als auch vom Client aus. Dabei handelt es sich um einen allgemeinen Test für die NetzwerkHardware. $ ping server PING server.example.com: 56 data bytes 64 bytes from server.example.com (192.168.236.86): icmp-seq=0. time=1. ms 64 bytes from server.example.com (192.168.236.86): icmp-seq=1. time=0. ms 64 bytes from server.example.com (192.168.236.86): icmp-seq=2. time=1. ms ^C ----server.example.com PING Statistics---3 packets transmitted, 3 packets received, 0% packet loss round-trip (ms) min/avg/max = 0/0/1
Im Erfolgsfall erfahren Sie fünf Dinge: ●
●
●
●
●
Der Hostname (z.B. server) ist von Ihrem lokalen Name-Server gefunden worden. Der Hostname wurde zu seinem vollständigen Namen erweitert (z.B. server. example.com). Seine Adresse wurde zurückgeliefert (192.168.236.86). Der Client hat dem Samba-Server vier 56Byte-UDP/IP-Pakete geschickt. Der Samba-Server hat auf alle vier Pakete geantwortet.
Ist dieser Test nicht erfolgreich verlaufen, sind im Netzwerk vermutlich ein oder mehrere Dinge nicht in Ordnung: ●
Wenn Sie eine der Meldungen ping: no answer oder 100% packet loss erhalten, sind entweder Sie nicht an das Netzwerk angeschlossen oder das andere System ist nicht an das Netzwerk angeschlossen, oder eine der Adressen ist falsch. Prüfen Sie die Adressen, die der ping-Befehl für die einzelnen Systeme zurückliefert, und stellen Sie sicher, dass sie denjenigen entsprechen, die Sie zu Anfang eingestellt haben.
Falls nicht, gibt es wenigstens eine falsch zugeordnete Adresse zwischen den beiden Systemen. Geben Sie einmal den Befehl arp -a ein und schauen Sie nach, ob es einen Eintrag
für das andere System gibt. (Der Befehl arp steht für das Address Resolution Protocol. arp a listet alle Adressen auf, die auf dem lokalen System bekannt sind.) Hier sind einige Dinge, die Sie ausprobieren können: - Wenn Sie eine Nachricht wie 192.168.236.86 at (incomplete) empfangen, ist die Ethernet-Adresse von 192.168.236.86 unbekannt. Das ist ein Zeichen für eine fehlende Netzwerkverbindung. Wahrscheinlich haben Sie ein Problem mit dem TCP/IP-ProtokollStack, und zwar mit der Ebene der Ethernet-Schnittstelle. Näheres dazu finden Sie in den Kapiteln 5 und 6 des Buches TCP/ IP Netzwerk-Administration (O'Reilly). - Wenn Sie eine Antwort wie server (192.168.236.86) at 8:0:20:12:7c:94 erhalten, wurde der Server irgendwann einmal erreicht, oder ein anderes System antwortet in seinem Namen. Das bedeutet jedoch, dass ping funktioniert haben sollte: Sie haben ein Netzwerk- oder ARP-Problem. - Wenn die IP-Adresse des ARP nicht den erwarteten Adressen entspricht, untersuchen und korrigieren Sie die Adressen manuell. ●
●
Kann jedes System sich selbst, aber kein anderes mit ping erreichen, stimmt etwas mit dem dazwischen liegenden Netzwerk nicht. Erhalten Sie die Meldungen ping: network unreachable oder ICMP Host Unreachable, bekommen Sie keine Antwort, und es ist
möglicherweise mehr als ein Netzwerk beteiligt. Im Prinzip sollten Sie nicht versuchen, Fehler bei SMB-Clients und -Server in unterschiedlichen Netzwerken zu beheben. Versuchen Sie, einen Server und einen Client zu testen, die sich im gleichen Netzwerk befinden: 1. Führen Sie zuerst die Tests für ping: no answer aus, die weiter vorn in diesem Abschnitt beschrieben worden sind. Kann das Problem damit nicht ermittelt werden, bleiben noch folgende Möglichkeiten: Eine Adresse ist falsch, Ihre Netzmaske ist falsch, ein Netzwerk ist nicht in Betrieb, oder die Pakete sind durch eine Firewall gestoppt worden. 2. Überprüfen Sie sowohl die Adresse als auch die Netzmasken an den Quell- und Zielsystemen, um festzustellen, ob etwas offensichtlich verkehrt ist. Angenommen, beide Systeme befinden sich wirklich im gleichen Netzwerk, dann sollten beide die gleiche Netzmaske besitzen, und ping sollte die richtigen Adressen zurückliefern. Wenn die Adressen falsch sind, müssen Sie diese korrigieren. Wenn sie richtig sind, wurden die Programme vielleicht durch eine falsche Netzmaske verwirrt. Siehe den Abschnitt »Netzmasken« weiter unten in diesem Kapitel. 3. Wenn die Befehle weiterhin berichten, dass das Netzwerk unerreichbar ist und keine der genannten Bedingungen eingetroffen ist, besteht vermutlich wirklich
keine Verbindung zwischen den beiden Netzwerken. Auch dieses Problem muss vom Netzwerkverwalter gelöst werden. ●
●
●
●
●
Die Meldung ICMP Administratively Prohibited deutet darauf hin, dass eine Firewall oder ein falsch konfigurierter Router die Kommunikation verbietet. Sprechen Sie mit dem Beauftragten für die Systemsicherheit. Die Meldung ICMP Host redirect, während gleichzeitig die ping-Befehle funktionieren, ist harmlos: Sie bedeutet, dass Sie eine Umleitung benutzt haben Die Meldung host redirect und ausbleibende ping-Antworten bedeuten, dass ein Router Sie auf eine nicht funktionierende Umleitung geschickt hat. Gehen Sie so vor, als wäre die Fehlermeldung Network unreachable aufgetreten, und prüfen Sie Ihre Adressen und Netzmasken. Wenn Sie die Meldung ICMP Host Unreachable from gateway Gateway_Name erhalten, ping-Pakete im anderen Netzwerk ankommen, Antwortpakete Ihr System hingegen nicht erreichen und der Router das Problem meldet, behandeln Sie dieses Problem, als wäre der Fehler Network unreachable aufgetreten. Prüfen Sie Ihre Adressen und Netzmasken. Die Ausgabe ping: unknown host Hostname bedeutet, dass der Name des Zielcomputers nicht bekannt ist. Das deutet auf ein Problem mit dem Namensdienst hin, der
●
●
localhost nicht beeinflusst. Lesen Sie den Abschnitt »Fehlersuche bei Namensdiensten« weiter unten in diesem Kapitel. Wenn Sie einen Teilerfolg erzielen, also einige ping-Pakete erfolgreich sind und andere nicht, kann ein Netzwerkproblem bestehen; möglicherweise ist das Netzwerk überlastet. Setzen Sie den ping-Befehl über eine längere Zeit fort und schauen Sie, ob das Zielsystem mehr als etwa drei Prozent der Pakete nicht beantwortet. In diesem Fall sollten Sie den Netzwerkverwalter heranziehen; möglicherweise befindet sich das Problem noch in einem Anfangsstadium. Wenn nur wenige Pakete nicht beantwortet werden oder Sie wissen, dass momentan ein Programm mit starker Netzwerkbelastung läuft, kümmern Sie sich nicht weiter darum. Die Protokolle ICMP (und UDP) senden verlorene Pakete nicht erneut, falls sie im Netzwerk verloren gehen. Wenn Sie eine Meldung wie smtsvr. antares.net is alive erhalten, aber mit dem ping-Befehl das System client. example.com erreichen wollten, verwendet das Zielsystem die Adresse eines anderen Computers, oder der Zielcomputer besitzt mehrere Namen und Adressen. Wenn die Adresse falsch ist, ist eindeutig der Namensdienst schuldig, und Sie müssen die Adresse in der Datenbank des Namensdienstes korrigieren, damit sie auf das richtige System verweist. Wie Sie das tun, steht weiter unten in diesem Kapitel im Abschnitt »Fehlersuche bei
Namensdiensten«. Server sind häufig multihomed - d.h. mit mehr als einem Netzwerk verbunden. Sie besitzen in jedem Netzwerk einen eigenen Namen. Wenn Sie eine Antwort mit einem nicht erwarteten Namen von einem Multihomed-Server bekommen, prüfen Sie, ob die Adresse in Ihrem Netzwerk liegt (sehen Sie sich den Abschnitt »Netzmasken« weiter unten in diesem Kapitel an). In diesem Fall sollten Sie aus Gründen der Zuverlässigkeit und der Leistung diese Adresse und nicht diejenige eines anderen Netzwerks benutzen. Server können außerdem für eine einzige Ethernet-Adresse mehrere Namen besitzen; das trifft besonders auf Webserver zu. Das ist unproblematisch, wenn auch möglicherweise überraschend. Sie sollten den offiziellen (permanent gültigen) Namen benutzen anstatt einen Alias-Namen, der sich ändern oder ungültig werden kann. ●
Wenn alles klappt, aber die gemeldete IPAdresse 127.0.0.1 ist, stimmt mit Ihrem Namensdienst etwas nicht. Dieser Fall tritt gewöhnlich auf, wenn ein BetriebssystemInstallationsprogramm einen Eintrag in der Datei /etc/hosts erzeugt, der der Zeile 127.0.0.1 localhost hostname. domainname ähnelt. Die localhost-Zeile sollte 127.0.0.1 localhost oder 127.0.0.1 localhost loghost lauten. Korrigieren Sie sie, da sie Fehler dabei verursacht, wer den Hauptsuchdienst ausführt und die
Hauptsuchliste verwaltet. Dieser Fehler kann zudem in späteren Tests (nicht eindeutige) Probleme verursachen. Wenn dies vom Server aus funktioniert hat, wiederholen Sie die Tests vom Client aus.
TCP-Fehlersuche Nachdem Sie nun IP, UDP und einen Namensdienst mit ping getestet haben, wird es Zeit, TCP zu testen. Das Durchsuchen und ping verwenden ICMP und UDP, die Datei- und Druckdienste (Freigaben) benutzen TCP. Beide hängen von IP als darunter liegender Schicht ab, und alle vier benötigen Namensdienste. Das Testen von TCP geschieht am bequemsten mit dem FTPProgramm. Testen von TCP mit FTP Versuchen Sie eine FTP-Verbindung herzustellen, und zwar einmal lokal vom Server zu sich selbst und einmal vom Client zum Server: $ ftp server Connected to server.example.com. 220 server.example.com FTP server (Version 6.2/OpenBSD/Linux-0.10) ready. Name (server:davecb): 331 Password required for davecb.
Password: 230 User davecb logged in. ftp> quit 221 Goodbye.
Hat dies funktioniert, gehen Sie zum nächsten Abschnitt »Fehlersuche bei den Server-Daemons« über, ansonsten: ●
●
●
Haben Sie die Meldung server: unknown host (unbekannter Host) erhalten, bedeutet dies, dass der Namensdienst nicht funktioniert. Gehen Sie zum entsprechenden Schritt mit ping, »Lokale Namensdienste mit ping testen«, zurück und wiederholen Sie die dort beschriebenen Tests, um herauszufinden, warum die Namensauswertung fehlschlägt. Die Meldung ftp: connect: Connection refused (Verbindung abgelehnt) heißt, dass das Zielsystem keinen FTP-Daemon ausführt. Auf Unix-Systemen ist dies ziemlich ungewöhnlich. Greifen Sie in diesem Fall per telnet an Stelle von ftp auf den Server zu; die Meldungen sind sehr ähnlich, und telnet verwendet ebenfalls TCP. Gibt es eine lange Pause und kommt dann die Meldung ftp: connect: Connection timed out (Verbindung wegen Zeitüberschreitung abgebrochen), ist der
●
Zielcomputer nicht erreichbar. Gehen Sie zum Abschnitt »Testen der Verbindungen mit ping« zurück. Die Meldung 530 Logon Incorrect besagt, dass Sie zwar erfolgreich eine Verbindung hergestellt haben, aber gerade ein anderes Problem aufgetreten ist. Wahrscheinlich haben Sie den falschen Benutzernamen oder das falsche Kennwort eingegeben. Versuchen Sie es noch einmal und achten Sie jetzt darauf, dass Sie wirklich den Benutzernamen vom Unix-Server verwenden und sich bei der Kennworteingabe nicht verschreiben.
Fehlersuche bei den Server-Daemons Wenn die TCP-Kommunikation einwandfrei funktioniert, müssen Sie sicherstellen, dass der Server die Daemons ausführt. Dazu sind drei separate Tests notwendig, weil kein einzelner der drei Tests entscheidend beweist, dass sie richtig funktionieren. Um sicher zu sein, dass sie laufen, müssen Sie feststellen, ob die Daemons: 1. gestartet wurden 2. durch das Betriebssystem registriert oder an einen TCP/IP-Port gebunden wurden 3. tatsächlich arbeitsbereit sind Den Start der Daemons überwachen
Prüfen Sie zunächst die Protokolldateien. Wenn Sie die Daemons gestartet haben, sollte darin die Meldung smbd version Versionsnummer started erscheinen. Wenn dies nicht der Fall ist, müssen Sie die Samba-Daemons erneut starten. Wenn die Daemons der Protokolldatei zufolge gestartet sind, suchen Sie nach der Meldung bind failed on port 139 socket_addr=0 (Address already in use). Sie besagt, dass bereits ein anderer Daemon den Port 139 (smbd ) belegt. nmbd liefert eine ähnliche Meldung, wenn er Port 137 nicht belegen kann. Entweder haben Sie die Daemons zweimal gestartet, oder der inetd-Server hat versucht, einen Daemon für Sie aufzurufen. Diesen Fall behandeln wir in Kürze. Die Daemon-Prozesse mit ps suchen Eine andere Möglichkeit, um sicherzustellen, dass die Daemons ausgeführt werden, besteht darin, ihre Prozesse im System zu prüfen. Benutzen Sie den Befehl ps auf dem Server mit der Option »lang« für Ihren Systemtyp (üblicherweise ps ax oder ps -ef) und schauen Sie nach, ob smbd und nmbd bereits laufen. Oft sieht dies so aus: $ ps ax PID TTY STAT TIME
COMMAND
1
?
S
0:03
init [2]
2
?
SW
0:00
(kflushd)
(...viele Zeilen mit Prozessen...) 234 ?
S
0:14
nmbd -D3
237 ?
S
0:11
smbd -D3
(...weitere Zeilen, möglicherweise mit weiteren smbd-Zeilen...)
Dieses Beispiel zeigt, dass smbd und nmbd ausgeführt werden und als allein stehende Daemons (die Option -D) mit der Protokollierungsstufe 3 gestartet wurden. Prüfen, ob die Daemons an Ports gebunden sind Als Nächstes müssen die Daemons am Betriebssystem registriert werden, damit sie auf die TCP/IP-Ports zugreifen dürfen. Der Befehl netstat teilt Ihnen mit, ob dies geschehen ist. Geben Sie auf dem Server netstat -a ein und suchen Sie in der Ausgabe nach Zeilen, die netbios, 137 oder 139 enthalten: $ netstat -a Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) udp
0
0
*.137
*.*
tcp 0 *.139 *
0
tcp 8370 server.139 client.1439
8760
*. LISTEN
ESTABLISHED
Inmitten vieler ähnlich aussehender Zeilen sollte zumindest eine UDP-Zeile für *.netbios- oder *.137 sein. Sie sagt Ihnen, dass der nmbd-Server registriert ist und (das hoffen wir) Anfragen beantworten kann. Außerdem sollte die Ausgabe wenigstens eine TCP-Zeile mit *.netbios- oder *.139 enthalten, wahrscheinlich mit dem Zustand LISTEN. Das bedeutet, dass smbd aktiv ist und auf Verbindungen wartet. Möglicherweise sehen Sie weitere TCP-Zeilen, die Verbindungen von smbd zu Clients beschreiben (für jede Verbindung eine Zeile). Ihr Zustand ist gewöhnlich ESTABLISHED. Wenn Sie smbd-Zeilen mit dem Zustand ESTABLISHED sehen, führt Ihr Server smbd definitiv aus. Wenn Sie nur eine Zeile mit dem Zustand LISTEN sehen, können wir keine sichere Aussage darüber machen. Fehlen beide Zeilen, wurde einer der Daemons nicht gestartet. Sie müssen die Protokolle prüfen und sollten Kapitel 2 lesen. Wenn es für jeden Client eine Zeile gibt, kann diese entweder vom Samba-Daemon oder vom
Haupt-IP-Daemon, inetd, kommen. Es ist durchaus möglich, dass Ihre inetd-Startdatei Zeilen für den Start der Samba-Daemons enthält, ohne dass Sie es wissen (möglicherweise hat ein SetupProgramm die Zeilen dort eingetragen, wenn Sie Samba als Teil einer Linux-Distribution installiert haben). Die von inetd gestarteten Daemons verhindern, dass unsere Daemons ausgeführt werden. Dieses Problem generiert üblicherweise Protokollmeldungen wie bind failed on port 139 socket addr=0 (Address already in use). Prüfen Sie Ihre Datei /etc/inetd.conf ; solange Sie die Daemons absichtlich und bewusst von hier aus starten, dürfen dort keine netbios-ns-Einträge (UDP-Port 137) oder netbios-ssn-Einträge (TCPPort 139) vorhanden sein. Wenn Ihr System einen SMB-Daemon über inetd zur Verfügung stellt, finden Sie in der inetd.conf-Datei Zeilen wie die folgenden: netbios-ssn stream tcp nowait root /usr/ local/samba/bin/smbd smbd netbios-ns dgram udp wait root /usr/local/ samba/bin/nmbd nmbd
Verwendet Ihr System xinetd an Stelle von inetd, erfahren Sie in Kapitel 2 mehr über seine Konfiguration. smbd mit telnet prüfen Witzigerweise besteht die einfachste Methode zum
Testen der tatsächlichen Betriebsbereitschaft des smbd-Servers darin, ihm eine sinnlose Nachricht zu schicken und abzuwarten, ob er sie abweist. Versuchen Sie einmal so etwas: $ echo "hello" | telnet localhost 139 Trying Trying 192.168.236.86 ... Connected to localhost. Escape character is '^]'. Connection closed by foreign host.
Dieser Befehl sendet eine falsche, aber harmlose Nachricht an smbd. Erhalten Sie die Meldung Connected, gefolgt von der Meldung Connection closed, verlief der Test erfolgreich. Ein smbdDaemon wartet an dem Port und weist unpassende Verbindungsmeldungen ab. Bekommen Sie dagegen die Meldung telnet:connect: Connection refused, ist der Daemon wahrscheinlich nicht vorhanden. Leider gibt es für nmbd keinen so einfachen Test. Wenn sowohl der telnet- als auch der netstat-Test erfolgreich sind, ist die Wahrscheinlichkeit hoch, dass netstat auch eine richtige Aussage über den Prozess nmbd macht. Die Daemons mit testparm testen
Sobald Sie wissen, dass es einen Daemon gibt, sollten Sie in der Hoffnung auf die folgende Ausgabe den Befehl testparm ausführen: $ testparm Load smb config files from /opt/samba/lib/ smb.conf Processing section "[homes]" Processing section "[printers]" ... Processing section "[tmp]" Loaded services file OK. ...
Das Programm testparm berichtet normalerweise die Verarbeitung in einer Reihe von Abschnitten und gibt im Erfolgsfall die Meldung Loaded services file OK aus. Wenn es ein Problem gibt, sehen Sie eine oder mehrere der folgenden Ausgaben, die zusätzlich in dieser Form in der Protokolldatei auftauchen: Allow/Deny connection from account (n) to service Eine nur von testparm ausgegebene Nachricht, die erzeugt wird, wenn Sie die Option valid user oder invalid user in der Datei smb.conf gesetzt haben. Stellen Sie sicher, dass Sie in der Liste der gültigen Benutzer aufgeführt sind und dass root, bin usw. in der Liste der ungültigen Benutzer stehen. Wenn Sie dies nicht tun, können Sie sich nicht mit dem
Samba-Server verbinden, oder andere Personen können sich verbinden, ohne es zu dürfen. Warning: You have some share names that are longer than eight chars Diese Meldung ist nur von Bedeutung, wenn Sie Windows for Workgroups- oder ältere Clients besitzen. Diese können sich nicht mit Freigaben verbinden, deren Namen mehr als acht Zeichen lang sind. Die Clients geben eine verwirrende Meldung aus, die auf Speicherprobleme hindeutet. Warning: [name] service MUST be printable! Bei einer Druckerfreigabe fehlt die Option printable = yes. No path in service name using [name] Einer Verzeichnisfreigabe ist nicht bekannt, welches Verzeichnis sie dem Benutzer anbieten soll, oder einer Druckerfreigabe fehlt die Angabe des Spool-Verzeichnisses. Wenn Sie keinen Pfad angeben, verwendet der Dienst / tmp, was Sie wahrscheinlich nicht wollen. Note: Servicename is flagged unavailable Nur ein Hinweis darüber, dass Sie die Option available = no in einer Freigabe verwendet haben. Can't find include file [name] Eine Konfigurationsdatei, auf die mit der Option include verwiesen wird, existiert nicht. Falls Sie diese Datei bedingungslos eingeschlossen haben, handelt es sich um einen Fehler, und zwar wahrscheinlich um einen ernsten: Die Freigabe weist nicht die von Ihnen beabsichtigte Konfiguration auf. Haben Sie die Datei auf der Grundlage einer der %-
Variablen eingeschlossen, etwa %a (für die Client-Architektur), müssen Sie selbst entscheiden, ob eine fehlende Konfigurationsdatei beispielsweise für Windows for Workgroups ein Problem darstellt. Oft ist das nicht der Fall. Can't copy service name, unable to copy to itself Sie haben versucht, einen Abschnitt der smb. conf in sich selbst zu kopieren. Unable to copy service - source not found: [name] Kennzeichnet einen fehlenden oder falsch geschriebenen Abschnitt in einer copy = Option. Ignoring unknown parameter name Kennzeichnet typischerweise eine veraltete, falsch geschriebene oder nicht unterstützte Option. Global parameter name found in service section Gibt an, dass ein globaler Parameter in einer bestimmten Freigabe verwendet wurde. Samba ignoriert den Parameter. Wiederholen Sie den testparm-Test anschließend mit (genau) drei Parametern: dem Namen Ihrer smb.conf-Datei sowie dem Namen Ihres Clients und seiner IP-Adresse: # testparm /usr/local/samba/lib/smb.conf client 192.168.236.10
Mit diesem Test werden der Hostname und die Adresse mit den Optionen hosts allow und hosts deny verglichen. Es könnten die Meldungen Allow
connection from hostname to service und/oder Deny connection from hostname to service für das Client-System erzeugt werden. Diese Meldungen zeigen an, dass Sie die Optionen hosts allow und/oder hosts deny in Ihrer smb.conf haben, die den Zugriff vom Client-System erlauben oder verbieten.
Fehlersuche bei SMB-Verbindungen Sie wissen jetzt, dass die Server in Betrieb sind, und müssen nun sicherstellen, dass sie richtig ausgeführt werden. Wir beginnen damit, dass wir eine einfache smb.conf-Datei in das Verzeichnis / usr/local/samba/lib legen. Eine minimale smb.conf-Datei In den folgenden Tests nehmen wir an, dass Sie eine [temp]-Freigabe haben, die sich für die Tests eignet, und dass noch ein weiterer Zugang vorliegt. Im Folgenden sehen Sie eine smb.confDatei, die genau diese Anforderungen erfüllt: [global] workgroup = EXAMPLE security = user browsable = yes local master = yes [homes]
guest ok = no browsable = no [temp] path = /tmp public = yes
Die Option public = yes in der [temp]-Freigabe dient lediglich Testzwecken. Sie wollen wahrscheinlich nicht, dass jemand, der keinen Zugang auf Ihrem Samba-Server hat, Dinge darauf ablegen kann. Deshalb sollten Sie diese Option auskommentieren, wenn Sie mit den Tests fertig sind. Lokale Tests mit smbclient Der erste Test soll sicherstellen, dass der Server seine eigenen Dienste (Freigaben) auflisten kann. Führen Sie den Befehl smbclient -L localhost -U
% aus, um eine Verbindung zum Server von sich selbst aus herzustellen und den Gastbenutzer anzugeben. Sie sollten Folgendes sehen: $ smbclient -L localhost -U% Server time is Wed May 27 17:57:40 2002 Timezone is UTC-4.0 Server=[localhost] User=[davecb] Workgroup=[EXAMPLE] Domain=[EXAMPLE] Sharename
Type
Comment
---------
-----
----------
temp
Disk
IPC$ IPC Service (Samba 1.9.18)
IPC
homes directories
Home
Disk
This machine does not have a browse list
Wenn Sie diese Ausgabe erhalten haben, können Sie mit dem nächsten Abschnitt, »Testen der Verbindungen mit smbclient«, fortfahren. Bei einem Fehler überprüfen Sie diese Punkte:
●
●
●
Die Fehlermeldung Get_hostbyname: unknown host localhost bedeutet, dass Sie den Namen falsch geschrieben haben oder dass es tatsächlich ein Problem gibt (das Sie im Abschnitt »Lokale Namensdienste mit ping testen« hätten aufspüren müssen). Fahren Sie in diesem Fall mit dem Abschnitt »Fehlersuche bei Namensdiensten« weiter unten in diesem Kapitel fort. Der Fehler Connect error: Connection refused bedeutet, dass der Server gefunden wurde, er aber keinen nmbdDaemon ausführt. Gehen Sie zum Abschnitt »Fehlersuche bei den Server-Daemons« zurück und testen Sie die Daemons erneut. Wenn Sie die Meldung Your server software is being unfriendly sehen, hat der Server mit »Datenmüll« geantwortet. Der Server ist möglicherweise abgestürzt oder wurde nicht korrekt gestartet. In der Regel finden Sie die Ursachen in den Protokolldateien. Suchen Sie darin: - Ungültige Kommandozeilen-Parameter für smbd ; siehe die smbd-Manpage. - Ein ernsthaftes Problem mit der Datei smb.conf, die den Start von smbd verhindert. Prüfen Sie Ihre Änderungen immer mit testparm, wie im Abschnitt »Die Daemons mit testparm testen« demonstriert. - Fehlende Verzeichnisse, in denen Samba eigentlich seine Protokoll- und Sperrdateien
ablegen soll. - Das Vorhandensein eines Servers am Port (139 für smbd, 137 für nmbd ), das verhindert, dass der Daemon startet. ●
●
●
Wenn Sie inetd (oder xinetd ) statt allein stehender Daemons verwenden, prüfen Sie die Einträge in den Dateien /etc/inetd.conf (bzw. in den Konfigurationsdateien von xinetd) und /etc/services anhand der Manpages auf Fehler. Wenn Sie einen Password:-Prompt präsentiert bekommen, ist Ihr Gastzugang nicht richtig eingerichtet. Die Option -U% weist smbclient an, eine »Null-Anmeldung« durchzuführen, die das Vorhandensein des Gastzugangs erfordert; es muss keine Privilegien besitzen. Auch die Meldung SMBtconX failed. ERRSRV-ERRaccess deutet darauf hin, dass der Server Sie nicht akzeptiert hat. Normalerweise ist diese Meldung ein Hinweis darauf, dass Sie eine hosts allow-Option verwenden, die den Server nicht einschließt, oder dass umgekehrt der Server in der Option hosts deny auftaucht. Prüfen Sie dies erneut mit dem Befehl testparm smb. conf ihr_hostname ihre_ip_adresse (siehe den Abschnitt »Die Daemons mit testparm testen«) und korrigieren Sie alle unbeabsichtigten Sperren.
Testen der Verbindungen mit smbclient
Führen Sie den Befehl smbclient \\server\temp aus, um eine Verbindung zur [temp]-Freigabe des Servers aufzubauen und festzustellen, ob Sie eine Verzeichnisfreigabe erreichen. Sie sollten folgende Antwort erhalten: $ smbclient '\\server\temp' Server time is Tue May 5 09:49:32 2002 Timezone is UTC-4.0 Password:
smb: \> quit Diese Fehler könnten auftreten: ●
●
Wenn Sie eine der Meldungen Get_Hostbyname: Unknown host name, Connect error: Connection refused oder Your server software is being unfriendly sehen, lesen Sie zur Diagnose den vorangegangenen Abschnitt »Lokale Tests mit smbclient«. Die Meldung servertemp: Not enough `\' characters in service bedeutet, dass Sie die Adresse nicht in Anführungszeichen eingeschlossen haben, so dass Unix die Backslashes entfernt hat. Sie können auch diese Befehle schreiben:
smbclient \\\\server\\temp
oder:
smbclient //server/temp
Geben Sie nun Ihr Unix-Kennwort am Password:Prompt ein. Wenn Sie dann den Prompt smb: \> sehen, hat der Verbindungsaufbau funktioniert. Geben Sie quit ein und fahren Sie mit dem Abschnitt »Testen der Verbindungen mit net use« fort. Wenn Sie als Fehlermeldung SMBtconX failed. ERRSRV-ERRinvnetname bekommen, handelt es sich wahrscheinlich um eines der folgenden Probleme: ●
●
● ● ●
●
Ein falscher Freigabename: Vielleicht haben Sie sich vertippt, der Name ist zu lang, enthält gemischte Groß-/Kleinschreibung, oder die Freigabe ist nicht verfügbar. Prüfen Sie Ihre Erwartung mit dem Befehl testparm (siehe den Abschnitt »Die Daemons mit testparm testen«). Ein Parameter security = share in Ihrer Samba-Konfigurationsdatei. In diesem Fall müssen Sie dem smbclient-Befehl zusätzlich -U ihr_zugang übergeben. Ein fehlerhafter Benutzername. Ein fehlerhaftes Kennwort. Eine Option invalid users oder valid users in Ihrer smb.conf-Datei, die Ihrem Zugang keine Verbindung erlaubt. Prüfen Sie dies mit dem Befehl testparm smb.conf ihr_hostname ihre_ip_adresse (siehe den Abschnitt »Die Daemons mit testparm testen«). Eine Option valid hosts, die den Server
●
●
●
●
●
nicht aufführt, oder eine Option invalid hosts, die genau dies tut. Testen Sie auch hier mit testparm. Ein Problem mit der Authentifizierung, wie etwa die Benutzung von ShadowKennwörtern oder eines PAM (Password Authentication Module) auf dem Server, ohne dass Samba es unterstützt. Dieser Fall ist selten, tritt aber hin und wieder ein, wenn ein Samba-Binary für SunOS 4 (ohne Shadow-Kennwörter) ohne Neukompilierung auf einem Solaris-System (mit ShadowKennwörtern) eingesetzt wird. Die Option encrypted passwords = yes steht in der Konfigurationsdatei, in der Datei smbpasswd gibt es jedoch kein Kennwort für Ihren Zugang. Sie haben einen leeren Kennworteintrag entweder in der Unix-Datei /etc/passwd oder in smbpasswd. Sie melden sich an [temp] an, haben aber im Abschnitt [temp] der Datei smb.conf keine guest ok = yes-Option. Sie verbinden sich mit der Freigabe [temp], bevor Sie sich mit Ihrem Home-Verzeichnis verbinden, und Ihr Gastzugang ist nicht korrekt eingerichtet. Wenn Sie sich mit Ihrem Home-Verzeichnis verbinden können und dann eine Verbindung zu [temp] herstellen, besteht das Problem darin. Mehr über die Erstellung einer grundlegenden Samba-Konfigurationsdatei erfahren Sie in Kapitel 2.
Ein fehlerhafter Gastzugang verhindert auch das Drucken oder Durchsuchen, solange Sie
sich noch nicht an Ihrem Home-Verzeichnis angemeldet haben. Es gibt einen weiteren möglichen Grund für diesen Fehlschlag, der nichts mit Kennwörtern zu tun hat: Der Parameter path in Ihrer Datei smb.conf zeigt möglicherweise auf ein nicht existierendes Verzeichnis. testparm erkennt diesen Fehler nicht, und die meisten SMB-Clients können ihn nicht von falschen Benutzerzugängen unterscheiden. Sie müssen es selbst überprüfen. Wenn Sie sich erfolgreich an der Freigabe [temp] angemeldet haben, wiederholen Sie den Test und melden sich dieses Mal an Ihrem HomeVerzeichnis an (z.B. weisen Sie das Netzlaufwerk server\davecb zu). Wenn Sie irgendetwas ändern müssen, damit dies funktioniert, probieren Sie es anschließend noch einmal mit [temp]. Testen der Verbindungen mit net use Führen Sie den Befehl net use * \\server\temp auf dem Windows-Client aus, um festzustellen, ob dieser eine Verbindung zum Server herstellen kann. Sie müssten nach einem Kennwort gefragt werden und anschließend die Meldung Der Befehl wurde ausgeführt erhalten. Wenn das funktioniert hat, fahren Sie mit den Schritten im nächsten Abschnitt, »Testen der Verbindungen mit dem Windows-Explorer«, fort. Ansonsten:
●
●
Wenn Sie die Meldung Das angegebene freigegebene Verzeichnis kann nicht gefunden werden oder Der Netzwerkname kann nicht gefunden werden erhalten, haben Sie den Namen des Verzeichnisses falsch geschrieben, oder die Freigabe befindet sich nicht in der Datei smb.conf. Diese Meldung kann auch bedeuten, dass Sie für den Namen gemischte Groß-/ Kleinschreibung oder Leerzeichen verwendet haben oder dass der Name länger als acht Zeichen ist. Wenn Sie den Fehler Der im Netzwerkpfad angegebene Computer-Name kann nicht gefunden werden oder Kann den angegebenen Computer nicht finden sehen, haben Sie den Namen des Servers falsch geschrieben, oder der Wert der Option hosts deny enthält Ihren Host. - Wenn Sie den Namen des Servers und der Freigabe richtig geschrieben haben, müssen Sie zum Abschnitt »Testen der Verbindungen mit smbclient« zurückkehren, um festzustellen, weshalb es nicht funktioniert. - Wenn smbclient funktioniert, gibt es ein Namensdienst-Problem mit dem ClientNamensdienst, und Sie müssen sich zum Abschnitt »Testen des Servers mit nmblookup« begeben und versuchen, sowohl den Client als auch den Server mit nmblookup nachzusehen.
●
Wenn Sie die Meldung Das Kennwort für \\server\Benutzername ist falsch erhalten, ist Ihre lokal zwischengespeicherte Kopie des Kennworts mit demjenigen auf dem Server nicht identisch. Der Client sollte Sie nach dem richtigen Kennwort fragen.
Windows 95/98/Me-Clients speichern das Kennwort lokal in einer Datei, es handelt sich dabei aber nur um eine zwischengespeicherte Kopie des Kennworts, das zur Authentifizierung an Samba und an NT/2000/XP-Server geschickt wird. Danach werden Sie hier auch gefragt. An einem Windows-System können Sie sich weiterhin ohne Kennwort anmelden (allerdings nicht an NT/2000/XP). Falls Sie Ihr Kennwort eingeben und die Verbindung dennoch nicht erfolgreich herstellen können, gibt es mehrere Möglichkeiten: Sie haben eine valid usersoder invalid users-Liste, durch die Ihnen der Zugriff verweigert wird, NetBEUI macht
Probleme, oder Sie haben das Problem mit den verschlüsselten Kennwörtern, das wir im nächsten Abschnitt beschreiben. ●
Wenn Ihr Client Windows NT 4.0, NT 3.5 mit Patch 3, Windows 95 mit Patch 3, Windows 98, diese Systeme jeweils mit Internet Explorer 4.0, oder eine nachfolgende Version von Windows ausführt, verwendet das System standardmäßig die MicrosoftVerschlüsselung für Kennwörter. Sollten Sie eines der großen Microsoft-Produkte auf einer der älteren Windows-Versionen installiert haben, haben Sie vermutlich im Allgemeinen ein Update durchgeführt und verschlüsselte Kennwörter aktiviert. Benutzt der Client standardmäßig verschlüsselte Kennwörter, müssen Sie encrypt passwords = yes in Ihrer Samba-Konfigurationsdatei angeben, falls Sie eine Samba-Version vor Samba 3.0 einsetzen.
Da der Internet Explorer bei URLs wie file://irgendeinHost/ irgendeineDatei eine SMBVerbindung herstellt, senden Clients bis einschließlich
Windows 95 Patch Level 2 freimütig Ihr Kennwort im Klartext an SMB-Server irgendwo im Internet. Das wurde schließlich als ziemlich schlechte Idee erkannt. Microsoft ging daraufhin dazu über, im SMB-Protokoll nur noch verschlüsselte Kennwörter einzusetzen. Alle nachfolgenden Ausgaben der MicrosoftProdukte enthalten diese Korrektur. ●
●
●
Der Client sendet des Kennwort möglicherweise ausschließlich in Groß- oder in Kleinbuchstaben, obwohl Sie unter Unix ein Kennwort in gemischter Schreibweise haben. Wenn es reicht, das Kennwort so zu ändern, dass es nur noch eine Schreibweise benutzt, dann war dies das Problem. Bedauerlicherweise unterstützen alle außer den ältesten Clients Großbuchstabenkennwörter, so dass Samba das Kennwort einmal mit Groß- und einmal mit Kleinbuchstaben probiert. Wenn Sie die gemischte Schreibweise verwenden wollen, finden Sie mit der Option password level in Kapitel 9 eine Lösung für dieses Problem. Möglicherweise tritt bei Ihnen das Problem mit valid users auf, wie mit smbclient getestet (siehe den Abschnitt »Testen der Verbindungen mit smbclient«). Vielleicht haben Sie das NetBEUI-Protokoll an den Microsoft-Client gebunden. Dadurch werden häufig lange Verzögerungen und
eigenartige Fehler erzeugt, außerdem kann es Probleme beim Akzeptieren von Kennwörtern geben. Entfernen Sie das NetBEUI-Protokoll, es sei denn, Sie benötigen es unbedingt.
Der Begriff »binden« bedeutet an dieser Stelle eine logische Verbindung zwischen zwei Software-Bestandteilen. Wenn der Microsoft-SMB-Client korrekt konfiguriert wurde, ist er im Register Bindungen des Eigenschaften-Fensters von TCP/IP (im Bereich Netzwerk der Systemsteuerung von Windows 95/98/Me) an TCP/IP »gebunden«. TCP/IP wiederum ist an eine Ethernet-Karte gebunden. Das bedeutet nicht das Gleiche wie das Binden eines SMB-Daemons an einen TCP/IP-Port. Testen der Verbindungen mit dem Windows-Explorer Starten Sie den Windows-Explorer (nicht den
Internet Explorer), wählen Sie Netzlaufwerk verbinden aus dem Extras-Menü und geben Sie eine UNC für eine Ihrer Freigaben auf dem SambaServer an, um festzustellen, ob der Explorer eine Verbindung dorthin aufbauen kann. Gelingt dies, können Sie zum nächsten Abschnitt, »Fehlersuche beim Durchsuchen«, übergehen. Der Windows-Explorer ist kein gutes Werkzeug zur Diagnose: Er sagt Ihnen, dass etwas nicht stimmt, gibt aber nicht bekannt, worum es sich handelt. Wenn Sie einen Fehler erhalten, müssen Sie dessen Ursache mit dem Windows-Befehl net use ermitteln, der eine aussagekräftigere Fehlermeldung ausgibt: ●
Die Meldung Das Kennwort für diese Verbindung in Ihrer Kennwortdatei ist nicht länger gültig weist auf einen der folgenden Fehler hin: - Ihre lokal zwischengespeicherte Kopie auf dem Client stimmt nicht mit der auf dem Server überein. - Sie haben bei der Anmeldung auf dem Client keinen Benutzernamen und kein Kennwort angegeben. Einige Versionen des Explorers senden weiterhin einen leeren Benutzernamen und ein leeres Kennwort, selbst wenn Sie ein Kennwort angegeben haben. - Sie haben das Kennwort falsch geschrieben. - Sie haben eine invalid users- oder
valid users-Liste, die den Zugriff verweigert. - Ihr Client benutzt standardmäßig verschlüsselte Kennwörter, Samba ist jedoch mit dem Parameter encrypt passwords = no in der Konfigurationsdatei konfiguriert worden. - Sie haben ein Kennwort in gemischter Schreibweise, das der Client jedoch nur in einer Schreibweise übermittelt. ●
Wenn Sie die Meldung Der Netzwerkname ist entweder nicht korrekt oder Sie besitzen nicht den vollen Zugriff auf das Netzwerk oder Kann den angegebenen Computer nicht finden erhalten, kann einer der folgenden Punkte zutreffen: - falsch geschriebener Name - Fehlfunktion des Diensts - eine fehlgeschlagene Freigabe - Netzwerkproblem - falscher path-Parameter in smb.conf - hosts deny-Zeile, die Sie ausschließt
●
Wenn Sie die Fehlermeldung Sie müssen ein Kennwort angeben, um eine Verbindung herzustellen erhalten, stimmen entweder Ihre Kennwörter auf dem Server und dem Client nicht überein, oder Sie haben zum ersten Mal eine Anmeldung von diesem Client-System versucht und der
●
Client hat es noch nicht lokal zwischengespeichert. Die Meldung Der Netzwerkname kann nicht gefunden werden bedeutet, dass Sie eine nicht existierende Freigabe ansprechen oder dass Sie den Namen der Freigabe falsch geschrieben haben. Auch ein Freigabename mit mehr als acht Zeichen, mit Leerzeichen oder in gemischter Schreibweise kann diesen Fehler verursachen.
Wenn Sie die Freigabe zuverlässig benutzen können, versuchen Sie, auf Ihr Home-Verzeichnis zuzugreifen. Falls Sie etwas ändern müssen, damit Sie das Home-Verzeichnis »sehen« können, probieren Sie es erneut mit der ersten Freigabe und umgekehrt, wie wir im Abschnitt »Testen von Verbindungen mit net use« gezeigt haben. Gibt es Probleme mit dem Windows-Explorer, suchen Sie den Fehler mit den Methoden, die dieser Abschnitt beschreibt.
Fehlersuche beim Durchsuchen Lassen Sie uns nun zum Durchsuchen kommen. Wir haben uns dieses Thema bis hierhin aufgespart, weil es optional ist und teilweise von einem Protokoll abhängt, das die Auslieferung von Paketen nicht garantiert. Das Durchsuchen ist schwer zu untersuchen, wenn Sie nicht sicher sind, dass alle anderen Dienste ausgeführt werden. Die Funktion Durchsuchen ist optional, sie ist einfach nur ein Weg, um Server im Netzwerk und ihre Freigaben zu finden. Unix kennt keine solche
Funktion und existiert glücklich ohne eine solche. Das Durchsuchen geht außerdem davon aus, dass sich all Ihre Systeme in einem lokalen Netzwerk (LAN) befinden, in dem Broadcasts erlaubt sind. Zunächst identifiziert der Suchmechanismus einen Computer mit dem nicht zuverlässigen UDPProtokoll, um dann über eine gewöhnliche (zuverlässige) TCP-Verbindung die bereitgestellten Freigaben aufzulisten. Testen des Durchsuchens mit smbclient Wir beginnen mit dem Test einer zuverlässigen Verbindung. Versuchen Sie vom Server aus, die lokalen Freigaben mit dem Befehl smbclient und der Option -L sowie dem Namen Ihres Servers aufzulisten. Die Ausgabe sollte etwa folgendermaßen aussehen: $ smbclient -L server Added interface ip=192.168.236.86 bcast=192.168.236.255 nmask=255.255.255.0 Server time is Tue Apr 28 09:57:28 2002 Timezone is UTC-4.0 Password: Domain=[EXAMPLE] OS=[Unix] Server=[Samba 2.2.5]
Sharename
Type
Comment
---------
----
-------
cdrom
Disk
CD-ROM
cl
Printer
Color Printer
davecb Directories
Disk
Home
Server
Comment
---------
-------
SERVER
Samba 2.2.5
Workgroup
Master
---------
-------
EXAMPLE
SERVER
1
●
Wenn Sie die Liste der Freigaben nicht sehen, erlaubt Ihnen der Server nicht, seine Freigaben zu durchsuchen. Dies sollte nicht der Fall sein, wenn Sie irgendeine der Freigaben mit dem Windows-Explorer oder dem Befehl net use verwendet haben. Wenn Sie den Test mit smbclient -L localhost -U % noch nicht durchgeführt haben (siehe
●
●
●
●
●
»Lokale Tests mit smbclient«), tun Sie es jetzt. Ein falscher Gastzugang kann dazu führen, dass die Freigaben nicht angezeigt werden. Prüfen Sie auch die Datei smb.conf, um sicherzustellen, dass sie nicht die Option browsable = no enthält. Wir empfehlen, für den Test die Minimalversion der Datei smb. conf zu verwenden (siehe »Eine minimale smb.conf-Datei«). Sie müssen die Option browsable aktivieren (das ist die Standardeinstellung), um zumindest die Freigabe zu sehen. Wenn Sie keine Suchliste erhalten, liefert der Server keine Angaben über die Systeme im Netzwerk. Wenigstens ein System im Netzwerk muss Suchlisten unterstützen. Vergewissern Sie sich, dass in der Datei smb. conf die Option local master = yes steht, falls Samba den lokalen Hauptsuchdienst ausführen soll. Wenn Sie eine Suchliste bekommen, aber nicht die Freigabe /tmp, haben Sie wahrscheinlich ein Problem in der Datei smb. conf. Kehren Sie zum Abschnitt »Die Daemons mit testparm testen« zurück. Wenn Sie keine Arbeitsgruppenliste mit dem Namen Ihrer Arbeitsgruppe erhalten, ist die Arbeitsgruppe in der Datei smb.conf möglicherweise falsch angegeben. Wenn Sie nicht einmal eine Arbeitsgruppenliste sehen, vergewissern Sie sich, dass die Zeile workgroup = EXAMPLE in der Datei smb.conf steht. Wenn Sie nichts erhalten, versuchen Sie es erneut mit den Optionen -I ip_adresse -n
netbios_name -W arbeitsgruppe -d3; geben Sie den NetBIOS- und den Arbeitsgruppennamen in Großbuchstaben an. (Die Option -d3 legt die Protokollierungsstufe mit 3 fest.) Prüfen Sie dann die Samba-Protokolle auf Auffälligkeiten. Wenn Sie immer noch nichts sehen, dürften Sie eigentlich gar nicht bis hierhin gekommen sein. Gehen Sie zu einem der Abschnitte »Testen von TCP mit FTP« oder »Testen der Verbindungen mit ping« zurück. Sehen Sie sich auch folgende Punkte an: ●
●
Wenn Sie die Meldung SMBtconX failed. ERRSRV-ERRaccess sehen, ist Ihnen der Zugriff auf den Server nicht erlaubt. Normalerweise deutet dies darauf hin, dass eine hosts allow-Option verwendet wird, die den Server nicht einschließt, oder eine hosts deny-Option, die dies tut. Die Meldung Bad password hat vermutlich eine der folgenden Ursachen: - eine falsche hosts allow- oder hosts deny-Zeile - eine falsche invalid users- oder valid users-Zeile - ein Kennwort in Kleinbuchstaben und OS/2- oder Windows for Workgroups-Clients - einen fehlenden oder ungültigen Gastzugang
Prüfen Sie, wie Ihr Gastzugang lautet (siehe den Abschnitt »Lokale Tests mit smbclient«), ändern Sie alle hosts allow-, hosts deny-, valid users- oder invalid users-Zeilen oder kommentieren Sie sie aus und überprüfen Sie Ihre smb.conf-Datei mit testparm smb.conf ihr_hostname ihre_ip_adresse (siehe »Die Daemons mit testparm testen«). ●
●
●
●
Falls Sie Connection refused sehen, wird der smbd-Server nicht ausgeführt oder ist abgestürzt. Stellen Sie sicher, dass er läuft, und prüfen Sie mit netstat, ob er am Netzwerk lauscht. Siehe den Abschnitt »Fehlersuche bei den Server-Daemons«. Die Meldung Get_Hostbyname: Unknown host name kann mehrere Ursachen haben: ein Tippfehler, unterschiedliche Unix- und NetBIOS-Hostnamen oder ein Problem des Namensdiensts. Beginnen Sie mit der Fehlersuche beim Namensdienst mit »Testen der Verbindungen mit net use«. Wenn Sie damit den Fehler beheben können, sind unterschiedliche Namen wahrscheinlich, so dass Sie zum Abschnitt »Fehlersuche bei NetBIOS-Namen« gehen sollten. Wenn Sie die Fehlermeldung Session request failed erhalten, hat der Server die Verbindung verweigert. Dies ist üblicherweise ein Hinweis auf einen internen Fehler, wie unzureichender Hauptspeicher zum Teilen (engl. fork) eines Prozesses. Die Meldung Your server software is being unfriendly bedeutet, dass der Server bereits das erste Paket zum Aufbau
●
der Verbindung mit unsinnigen Daten beantwortet hat. Der Server ist möglicherweise abgestürzt oder wurde nicht korrekt gestartet. Gehen Sie zum Abschnitt »Lokale Tests mit smbclient« zurück, um das Problem zu analysieren. Wenn Sie vermuten, dass der Server nicht ausgeführt wird, gehen Sie zurück zum Abschnitt »Die Daemon-Prozesse mit ps suchen«, um herauszufinden, warum der Server-Daemon nicht antwortet.
Testen des Servers mit nmblookup Diese Tests prüfen das Ankündigungssystem, das für Windows-Namensdienste und das Durchsuchen verwendet wird. Ankündigungen geben die Anwesenheit eines Systems und dessen Fähigkeit, Dienste bereitzustellen, bekannt. Dieser Teil des Durchsuchens verwendet ein nicht zuverlässiges Protokoll (UDP) und funktioniert nur in BroadcastNetzwerken wie Ethernet-Netzwerken. Das Programm nmblookup fragt per Broadcast nach dem Hostnamen, den Sie angeben, und liefert seine IP-Adresse und den Namen des Systems, ähnlich wie nslookup für das Domain Name System (DNS). Hier verwenden wir die Optionen d (Protokollierungsstufe) und -B (BroadcastAdresse), um die Anfragen an bestimmte Systeme zu richten. Zunächst wollen Sie feststellen, ob Sie den lokalen Server erreichen können. Führen Sie nmblookup mit der Option -B und dem Namen Ihres Servers aus (damit die Software die Anfrage an den
Samba-Server sendet). Geben Sie außerdem den Parameter _ _SAMBA_ _ als symbolischen Namen an, der nachgefragt werden soll. Sie sollten Folgendes erhalten: $ nmblookup -B server _ _SAMBA_ _ Added interface ip=192.168.236.86 bcast=192.168.236.255 nmask=255.255.255.0 Sending queries to 192.168.236.86 192.168.236.86 _ _SAMBA_ _
Hiermit haben Sie die IP-Adresse des Servers erhalten, gefolgt von _ _SAMBA_ _ , was bedeutet, dass der Server erfolgreich einen Dienst mit diesem Namen angekündigt hat. Sie wissen nun, dass der NetBIOS-Namensdienst zumindest teilweise funktioniert. ●
Die Meldung Name_query failed to find name _ _SAMBA_ _ bedeutet, dass Sie der Option -B möglicherweise den ServerNamen übergeben haben oder dass nmbd nicht läuft. Die Option -B übernimmt eigentlich eine Broadcast-Adresse: Wir verwenden einen Computernamen, um eine Unicast-Adresse zu erhalten und den Server zu fragen, ob er den Namen _ _SAMBA_ _ trägt. Versuchen Sie es noch einmal mit nmblookup -B ip_adresse. Wenn auch dies fehlschlägt, beansprucht nmbd den Namen nicht. Gehen Sie kurz zurück zum Abschnitt »Testen der Daemons mit testparm«, um
festzustellen, ob nmbd läuft. Ist dies der Fall, beansprucht er vermutlich keine Namen, was wiederum bedeutet, dass Samba den Suchdienst nicht anbietet - ein Konfigurationsproblem. Wenn dies alles zutrifft, stellen Sie sicher, dass smb.conf nicht die Option browsing = no enthält. Testen des Clients mit nmblookup Prüfen Sie nun die IP-Adresse des Clients vom Server aus, indem Sie nmblookup mit der Option B für den Namen des Clients und dem Parameter '*' für »alle« ausführen, wie hier gezeigt wird: $ nmblookup -B client '*' Sending queries to 192.168.236.10 192.168.236.10 * Got a positive name query response from 192.168.236.10 (192.168.236.10)
Sie könnten folgenden Fehler erhalten: ●
Die Meldung Name-query failed to find name * deutet auf einen Schreibfehler Ihrerseits oder auf nicht installierte ClientSoftware hin; möglicherweise ist auf dem Client die WINS-Software nicht an das TCP/ IP-Protokoll gebunden. Gehen Sie zurück zu Kapitel 3 und stellen Sie sicher, dass Sie einen Client installiert haben, der am Netzwerk lauscht.
Wiederholen Sie den Befehl mit den folgenden Optionen, falls Fehler aufgetreten sind: ●
●
Wenn nmblookup -B Client_IP_Adresse erfolgreich ist, aber nmblookup -B Client_Name nicht, gibt es ein Problem mit dem Namensdienst. Lesen Sie weiter bei »Fehlersuche bei Namensdiensten«. Wenn nmblookup -B 127.0.0.1 '*' erfolgreich ist, nmblookup -B Client_IP_Adresse hingegen nicht, gibt es wahrscheinlich ein Hardware-Problem, und auch der ping-Befehl sollte fehlgeschlagen sein. Fragen Sie Ihren Netzwerkverwalter.
Testen des Netzwerks mit nmblookup Führen Sie erneut den Befehl nmblookup mit der Option -d2 (Protokollierungsstufe 2) und dem Parameter '*' aus. Diesmal testen Sie, ob Programme (wie nmbd ) Broadcast-Pakete schicken können. Dabei handelt es sich im Wesentlichen um einen Test der Verbindung über Broadcast an die Standard-Broadcast-Adresse. In Ihrem Netzwerk sollten mehrere NBT-Hosts (NetBIOS over TCP/IP) antworten; sie erkennen die Antworten an den Meldungen got a positive name query response. Samba empfängt möglicherweise nicht alle Antworten in der kurzen Zeit, in der es wartet, daher sehen Sie wahrscheinlich nicht alle SMB-Clients in Ihrem Netzwerk. Die meisten sollten aber erscheinen.
$ nmblookup -d 2 '*' Added interface ip=192.168.236.86 bcast=192.168.236.255 nmask=255.255.255.0 Sending queries to 192.168.236.255 Got a positive name query response from 192.168.236.191 (192.168.236.191) Got a positive name query response from 192.168.236.228 (192.168.236.228) Got a positive name query response from 192.168.236.75 (192.168.236.75) Got a positive name query response from 192.168.236.79 (192.168.236.79) Got a positive name query response from 192.168.236.206 (192.168.236.206) Got a positive name query response from 192.168.236.207 (192.168.236.207) Got a positive name query response from 192.168.236.217 (192.168.236.217) Got a positive name query response from 192.168.236.72 (192.168.236.72) 192.168.236.86 *
Aber:
●
●
Wenn Sie damit nicht wenigstens eine zuvor angefragte Client-Adresse erhalten, ist die Standard-Broadcast-Adresse wahrscheinlich falsch. Geben Sie nmblookup -B 255.255.255.255 -d 2 '*' ein, womit Sie eine Broadcast-Adresse verwenden, die komplett aus Einsen besteht. Wenn Sie nun Antworten sehen, ist die von Ihnen verwendete Broadcast-Adresse verkehrt. Hinweise zur Fehlersuche finden Sie im Abschnitt »Broadcast-Adressen« weiter unten in diesem Kapitel. Wenn auch die Adresse 255.255.255.255 keine Ergebnisse liefert, finden Sie heraus, ob Ihr PC und der Server sich in unterschiedlichen Subnetzen befinden. Lesen Sie dazu den Abschnitt »Testen der Verbindungen mit ping«. Verwenden Sie für diesen Test einen Server und einen Client im selben Subnetz. Wenn dies nicht möglich ist, können Sie die Broadcast-Adresse des entfernten Systems mit -B angeben. Wie Sie solche Adressen ermitteln, wird im Abschnitt »Broadcast-Adressen« besprochen. Die Option -B funktioniert, falls Ihr Router gerichtete Broadcasts unterstützt; ist dies nicht der Fall, sind Sie möglicherweise auf Tests mit einem Client innerhalb Ihres Subnetzes angewiesen.
Außerdem können Sie natürlich die SambaProtokolldateien auf Verdächtiges prüfen. Das Durchsuchen von Clients mit dem Befehl net view testen
Geben Sie auf einem Windows-Client an der MSDOS-Eingabeaufforderung den Befehl net view \ \server ein, um festzustellen, ob Sie eine Verbindung zum Server herstellen und nach den angebotenen Freigaben fragen können. Sie sollten eine Liste der verfügbaren Freigaben auf dem Server erhalten. Wenn dies funktioniert, fahren Sie mit dem Abschnitt »Dokumentation und FAQs« fort. Ansonsten: ●
●
●
Der Fehler Der Netzwerkpfad wurde nicht gefunden deutet auf ein Problem der ClientSoftware hin, wenn Sie den gleichen Namen wie im Abschnitt »Testen des Clients mit nmblookup« verwendet haben. Überprüfen Sie dies, indem Sie nmblookup auf dem Client ausführen; wenn dies im Gegensatz zu net view funktioniert, stimmt etwas mit dem Client nicht. Wenn auch nmblookup fehlschlägt, liegt offensichtlich ein Problem mit dem NetBIOSNamensdienst vor. Gehen Sie den Abschnitt »Fehlersuche bei NetBIOS-Namen« durch. Die Meldungen Sie haben keine ausreichenden Zugriffsrechte, um diesen Vorgang auszuführen oder Der Server ist nicht für die Freigabe von Ressourcen konfiguriert bedeuten, dass Ihr Gastzugang falsch konfiguriert ist (siehe »Lokale Tests mit smbclient«) oder Sie eine hosts allow- oder hosts deny-Zeile haben, die Verbindungen von Ihrem System aus
●
●
unterbinden. Sie sollten derartige Probleme mit den smbclient-Tests zu Beginn des Abschnitts »Testen des Durchsuchens mit smbclient« gefunden haben. Wenn Sie die Fehlermeldung Der angegebene Computer empfängt keine Anforderungen erhalten, haben Sie den Namen des Servers falsch geschrieben, das System ist nicht über Broadcasts erreichbar (das haben wir im Abschnitt »Testen des Netzwerks mit nmblookup« geprüft), oder es führt nmbd nicht aus. Die Meldung Falsches Kennwort bedeutet, dass Sie das Problem mit den Microsoftverschlüsselten Kennwörtern haben, das weiter vorn in diesem Kapitel sowie in Kapitel 9 besprochen wurde. Dort finden Sie auch Lösungsansätze.
Durchsuchen des Servers vom Client aus Versuchen Sie, den Server von der WindowsNetzwerkumgebung aus zu durchsuchen. Ihr Samba-Server sollte in der Suchliste Ihrer lokalen Arbeitsgruppe auftauchen. Sie müssten in der Lage sein, auf den Namen des Servers doppelt zu klicken, um eine Liste der Freigaben zu erhalten. ●
●
Der Fehler Falsches Kennwort deutet wieder auf das Verschlüsselungsproblem hin. Der Hinweis Das Netzwerk kann nicht durchsucht werden kann folgende Ursachen haben:
- Sie haben zu früh nachgesehen, die Broadcasts und Aktualisierungen waren noch nicht beendet. Warten Sie 30 Sekunden und versuchen Sie es erneut. - Es gibt ein Netzwerkproblem, das Sie noch nicht erkannt haben. - Es gibt keinen Hauptsuchdienst. Fügen Sie die Konfigurationsoption local master = yes in Ihre smb.conf-Datei ein. - In der Datei smb.conf wurden keine Freigaben als durchsuchbar gekennzeichnet. ●
Auch die Nachricht \\server ist nicht verfügbar kann erscheinen. Es gibt folgende mögliche Ursachen: - Sie haben das Problem mit den verschlüsselten Kennwörtern. - Das System ist wirklich nicht erreichbar. - Das System unterstützt das Durchsuchen nicht.
Wenn Sie bis hierhin gekommen sind und es immer noch Probleme gibt, sind Sie entweder auf ein Problem gestoßen, das auch uns unbekannt ist, oder es handelt sich um ein Problem aus einem Bereich, den wir bereits behandelt haben und der eine weitere Untersuchung verlangt. Oft hängen die Schwierigkeiten mit Samba mit der Namensauflösung zusammen, deshalb gehen wir in den nächsten Abschnitten näher darauf ein. Wenn Sie wissen, dass Ihr Problem nicht in der Namensauflösung liegt, gehen Sie zum Abschnitt
»Weitere Ressourcen« am Ende dieses Kapitels über.
Fehlersuche bei Namensdiensten Dieser Abschnitt befasst sich mit der einfachen Fehlersuche bei allen Namensdiensten, auf die Sie treffen, allerdings beschränkt auf die Aspekte, die für Samba relevant sind. Es gibt verschiedene gute Referenzen, die auf bestimmte Namensdienste eingehen: Paul Albitz' und Cricket Lius' Buch DNS und Bind (O'Reilly) behandelt das DNS, Hal Sterns NFS und NIS (O'Reilly) geht auf NIS (»Yellow Pages«) ein, während der Windows Internet Name Service (WINS), hosts/LMHOSTS-Dateien und NIS+ am besten in den Handbüchern der jeweiligen Hersteller betrachtet werden. In diesem Abschnitt werden folgende Probleme untersucht: ● ●
●
●
●
Namensdienste identifizieren. Ein Hostname kann nicht nachgesehen werden. Die lange (FQDN) Form eines Hostnamens funktioniert, die kurze jedoch nicht. Die kurze Form des Namens funktioniert, die lange Form jedoch nicht. Vor dem Eintreffen des erwarteten Ergebnisses tritt eine lange Verzögerung auf.
Den verwendeten Namensdienst identifizieren
Prüfen Sie zunächst, ob sowohl Server als auch Client DNS, WINS, NIS oder die hosts-Datei verwenden, um IP-Adressen herauszufinden, wenn Sie einen Namen vorgeben. Jede Art von System geht anders vor: ●
●
●
●
●
Windows 95/98/Me versuchen zuerst WINS und die LMHOSTS-Datei, dann Broadcast und schließlich DNS und HOSTS-Dateien. Windows NT/2000/XP versuchen WINS, dann Broadcast, anschließend die LMHOSTSDatei und zum Schluss HOSTS und DNS. Windows-Programme, die dem WINSOCKStandard folgen, benutzen die HOSTS-Datei, DNS, WINS und dann Broadcast. Gehen Sie nicht davon aus, dass der Namensdienst des SMB-Client-Programms funktioniert, nur weil der Namensdienst eines anderen Programms dies tut! Samba-Daemons verwenden lmhosts, WINS, die Namensauswertung des UnixSystems und dann Broadcast. Unix-Systeme können so konfiguriert werden, dass sie eine beliebige Kombination aus DNS, HOSTS-Dateien, NIS oder NIS+ und winbind verwenden, und dies im Allgemeinen in beliebiger Reihenfolge.
Wir empfehlen Ihnen, die Client-Systeme für die Verwendung von WINS und DNS zu konfigurieren, die Samba-Daemons für WINS und DNS und den Unix-Server für DNS, die hosts-Dateien und vielleicht NIS+. Sehen Sie sich Ihre Aufzeichnungen und die gegenwärtige
Konfiguration an, um festzustellen, welche Namensdienste Ihre Computer verwenden. Auf den Clients werden die Namensdienste im Fenster Eigenschaften von TCP/IP der NetzwerkSystemsteuerung eingestellt, wie in Kapitel 3 besprochen. Prüfen Sie, welche Dienste Sie hier aktiviert haben. Schauen Sie auf dem Server nach, ob die Datei /etc/resolv.conf existiert. Wenn dies der Fall ist, verwendet er DNS. Unabhängig davon kann er auf andere Namensdienste zugreifen. Schauen Sie nach, ob der Server NIS oder eine Kombination anderer Namensdienste benutzt. Suchen Sie unter Solaris und anderen System V Unix-Betriebssystemen nach einer /etc/nsswitch. conf-Datei. Wenn Sie sie gefunden haben, suchen Sie dort nach einer Zeile, die mit host: beginnt, gefolgt von einem oder mehreren der Einträge files, bind, nis oder nis+. Dies sind die zu verwendenden Namensdienste in der Reihenfolge ihrer Benutzung; zusätzliche Optionen stehen in eckigen Klammern. Das Schlüsselwort files deutet auf HOSTS-Dateien hin, während bind (der Berkeley Internet Name Daemon) sich auf das DNS bezieht. Wenn Client und Server unterschiedliche Dienste verwenden, müssen Sie die Systeme in Einklang bringen. Clients können ausschließlich DNS, WINS, die Dateien HOSTS und LMHOSTS, aber nicht NIS oder NIS+ verwenden. Servers können die Dateien HOSTS und LMHOSTS, DNS, NIS oder NIS+ sowie winbind einsetzen, aber nicht WINS - selbst wenn Ihr Samba-Server WINS-Dienste bereitstellt. Wenn
Sie nicht von allen Systemen auf dieselben Dienste zugreifen können, müssen Sie sorgsam überprüfen, dass Server und Clients dieselben Daten erhalten. Außerdem können Sie die Option -R (Resolve Order; Auswertungsreihenfolge) für smbclient benutzen. Wollen Sie beispielsweise Probleme mit WINS beheben, müssen Sie angeben: $ smbclient -L server -R wins
Die möglichen Einstellungen sind hosts (womit gemeint ist, was das Unix-System verwendet, nicht nur /etc/hosts), lmhosts, wins und bcast (Broadcast). In den folgenden Abschnitten verwenden wir den Begriff langer Name als Synonym für einen voll qualifizierten Domainnamen (Fully-Qualified Domain Name, FQDN) wie server.example.com . Der Begriff kurzer Name steht für den Host-Teil des FQDN, beispielsweise server. Hostnamen können nicht ausgewertet werden Versuchen Sie Folgendes: Bei DNS Führen Sie nslookup name aus. Schlägt dies fehl, suchen Sie nach einem resolv.conf-Fehler, einem ausgefallenen DNS-Server oder einem Problem mit langen/kurzen Namen (siehe
nächster Abschnitt). Versuchen Sie es damit: - Ihre /etc/resolv.conf-Datei sollte eine oder mehrere nameserver-Zeilen enthalten, jeweils mit einer IP-Adresse. Dies sind die Adressen Ihrer DNS-Server. - Sprechen Sie alle Server-Adressen, die Sie finden können, mit ping an. Schlägt dies für eine Adresse fehl, ist dieses System möglicherweise das Problem. Schlägt es für alle Adressen fehl, untersuchen Sie das Netzwerk. - Versuchen Sie erneut die Auswertung mit dem vollständigen Domainnamen (zum Beispiel server.example.com), wenn Sie zuerst nur den kurzen Namen benutzt hatten, oder verwenden Sie umgekehrt den kurzen Namen, wenn Sie zuerst den langen Namen hatten. Erhalten Sie unterschiedliche Ergebnisse, gehen Sie zum nächsten Abschnitt über. Bei Broadcast/ WINS Broadcast/ WINS verwenden nur kurze Namen, wie zum Beispiel server, und keine langen Namen, wie server.example.com. Geben Sie nmblookup -S server ein. Die Ausgabe meldet alle Objekte, die durch Broadcast für diesen Namen registriert wurden. In unserem Fall sieht die Ausgabe so aus: $ nmblookup -S server Looking up status of 192.168.236.86 received 10 names
SERVER
<00> -
M
<03> -
M
<1f> -
M
<20> -
M
SERVER SERVER SERVER .._ _MSBROWSE_ _. M MYGROUP
<01> -
<00> - M
MYGROUP
<1b> -
M
MYGROUP
<1c> - M
MYGROUP
<1d> -
M
MYGROUP
<1e> - M
Der gesuchte Eintrag ist SERVER <00>, der server als NetBIOS-Name des Computers kennzeichnet. Sie sollten außerdem den Namen Ihrer Arbeitsgruppe wenigstens einmal
sehen. Wenn diese Zeilen fehlen, können Broadcast/WINS nicht zur Namensauswertung verwendet werden, Sie müssen diesen Punkt näher untersuchen.
Die Zahlen in spitzen Klammern der soeben beschriebenen Ausgabe identifizieren NetBIOSNamen als Namen von Arbeitsgruppen, Workstations und Benutzern des Nachrichtendiensts, Hauptsuchdiensten, DomänenHauptsuchdiensten, DomänenControllern und diverser anderer Elemente. Wir interessieren uns hauptsächlich für <00> als Computer- und Arbeitsgruppenname sowie für <20> als Server-Name. Die vollständige Liste der Typen finden Sie unter http://support. microsoft.com/support/kb/ articles/q163/4/09.asp. Bei NIS Geben Sie ypmatch name hosts ein. Wenn dies nicht klappt, ist NIS nicht aktiv. Finden Sie den Namen des NIS-Servers heraus, indem Sie
ypwhich ausführen; versuchen Sie den Server mittels ping zu erreichen. Bei NIS+ Wenn Sie NIS+ einsetzen, geben Sie nismatch name hosts ein. Erhalten Sie kein Ergebnis, ist NIS+ nicht aktiv. Finden Sie den Namen des NIS+-Servers heraus, indem Sie niswhich ausführen; versuchen Sie den Server mittels ping zu erreichen. Bei den Dateien hosts und HOSTS Sehen Sie sich die Datei HOSTS auf dem Client (C:\Windows\ Hosts unter Windows 95/98/Me und C:\WINNT \system32\drivers\etc\hosts unter Windows NT/2000/XP) an. Jede Zeile sollte eine IP-Adresse und einen oder mehrere Namen enthalten (als Erstes den primären Namen, danach optionale Alias-Namen). Hier ein Beispiel: 127.0.0.1
localhost
192.168.236.1
dns.svc.example.com
192.168.236.10 client
client.example.com
192.168.236.11 loghost
backup.example.com
192.168.236.86 server
server.example.com
192.168.236.254
router.svc.example.com
Unter Unix sollte localhost immer 127.0.0.1 sein, obwohl dies auch nur ein Alias für einen Hostnamen auf dem PC sein könnte. Prüfen Sie auf dem Client, dass es keine #XXXAnweisungen an den Zeilenenden gibt; dies sind LAN Manager/NetBIOS-Anweisungen, die nur in LMHOSTS-Dateien auftauchen dürfen. Bei LMHOSTS-Dateien Diese Datei ist eine lokale Quelle für LAN Manager-(NetBIOS-)Namen. Ihr Format ist ähnlich den hosts-Dateien, allerdings unterstützt sie keine langen Domainnamen (z. B. server.example.com) und kann eine Reihe optionaler #XXX-Anweisungen nach den NetBIOS-Namen aufweisen. Üblicherweise gibt es eine lmhosts.sam (für Beispiel) in C: \Windows unter Windows 95/98/Me und in C: \WINNT\system32\drivers\etc unter Windows NT/2000/XP, allerdings wird diese Datei erst benutzt, wenn sie im gleichen Verzeichnis in Lmhosts umbenannt wird. Lange und kurze Hostnamen Wenn die lange (FQDN) Form eines Hostnamens funktioniert, die kurze jedoch nicht (beispielsweise client.example.com funktioniert, client nicht), betrachten Sie Folgendes: Bei DNS Dieser Fehler weist normalerweise auf das Fehlen einer Standard-Domain hin, in der die kurzen Namen nachgesehen werden. Suchen Sie in der Datei /etc/resolv.conf auf dem Samba-Server nach der Zeile default mit
Ihrem Domainnamen. Alternativ kann dort auch die Zeile search mit mehreren Domainnamen stehen. Eine dieser Zeilen muss existieren, damit Sie kurze Namen verwenden können. Welche dies ist, hängt vom Anbieter und der Version Ihres DNS-Resolvers ab. Fügen Sie versuchsweise die Zeile domain ihre_domain in der Datei resolv.conf ein und fragen Sie Ihren Netzwerk- oder DNSAdministrator, welcher Eintrag sich in der Datei befinden sollte. Bei Broadcast/WINS Broadcast/WINS unterstützt keine langen Namen; dieses Problem tritt hier nicht auf. Bei NIS Geben Sie ypmatch hostname hosts ein. Wenn Sie keine Übereinstimmung sehen, unterstützen Ihre Tabellen keine kurzen Namen. Sprechen Sie mit Ihrem Netzwerkverwalter; es kann ein Versehen sein, dass Sie keine kurze Namen verwenden können - oder es ist Teil der Richtlinien Ihres Unternehmens. Einige Netzwerke verwenden niemals kurze Namen, da sie nicht eindeutig sind. Bei NIS+ Versuchen Sie nismatch hostname hosts. Behandeln Sie einen Fehler genau wie bei NIS. hosts Wenn sich der kurze Name nicht in der Datei / etc/hosts befindet, können Sie ihn als AliasNamen hinzufügen. Vermeiden Sie nach Möglichkeit kurze Namen als primäre Namen (der erste Name in einer Zeile). Geben Sie kurze Namen als Alias-Namen an, wenn Ihr
System dies unterstützt. LMHOSTS LAN Manager unterstützt keine langen Namen; dieses Problem tritt hier nicht auf. Wenn andererseits die kurze Form des Namens funktioniert, die lange jedoch nicht, untersuchen Sie Folgendes: Bei DNS Das ist eigenartig; sprechen Sie mit Ihrem Netzwerk- oder DNS-Administrator, da es sich vermutlich um einen Fehler bei der Einrichtung des DNS handelt. Bei Broadcast/WINS Dies ist normal; Broadcast/WINS kann die lange Form nicht verwenden. Probieren Sie alternativ DNS. (Microsoft hat mitgeteilt, dass man irgendwann ganz auf DNS umsteigt, obwohl DNS Namenstypen wie <00> nicht unterstützt.) Bei NIS Wenn Sie mit ypmatch nur die kurze Form eines Namens auswerten können, sollten Sie der Tabelle die lange Form zumindest als Alias hinzufügen. Bei NIS+ Wie bei NIS, allerdings verwenden Sie hier nismatch an Stelle von ypmatch. hosts und HOSTS Tragen Sie den langen Namen ein, vorzugsweise als primären Namen oder wenigstens als Alias-Namen. Sie können auch DNS verwenden, wenn dies für Sie in Betracht kommt.
LMHOSTS Dies ist normal. LAN Manager kann die lange Form nicht benutzen; steigen Sie eventuell auf DNS oder hosts um. Ungewöhnliche Verzögerungen Wenn es eine lange Verzögerung gibt, bevor das erwartete Ergebnis eintrifft: Bei DNS Geben Sie den gleichen Namen mit dem Befehl nslookup auf dem langsamen Computer (Client oder Server) ein. Wenn nslookup ebenfalls langsam ist, handelt es sich um ein DNSProblem. Wenn es nur auf dem Client langsam ist, haben Sie möglicherweise zu viele Transportprotokolle installiert und an die Ethernet-Karte gebunden. Entfernen Sie das langsame Protokoll NetBEUI und optional Novell - sofern Sie diese Protokolle nicht benötigen. Dies ist besonders bei Windows 95 wichtig, da dieses Betriebssystem sehr empfindlich reagiert, wenn Sie nicht benötigte Protokolle installieren. Bei Broadcast/ WINS Testen Sie den Client mit nmblookup; ist dies schneller, haben Sie möglicherweise das gerade erwähnte Protokollproblem. Bei NIS Versuchen Sie ypmatch; ist dies langsam, teilen Sie das Ihrem Netzwerkverwalter mit. Bei NIS+ Versuchen Sie nismatch, ansonsten siehe NIS. hosts und HOSTS
Die hosts-Dateien sind immer schnell - wenn sie eine vernünftige Größe haben. Sie haben vermutlich das beim Punkt DNS erwähnte Protokollproblem. lmhosts und LMHOSTS Dies ist kein Problem der Namensauswertung; LMHOSTS-Dateien sind so schnell wie die Dateien hosts und HOSTS. Probleme mit Localhost Wenn ein Localhost nicht 127.0.0.1 ist, versuchen Sie Folgendes: Bei DNS Es gibt möglicherweise keinen Eintrag für localhost. A 127.0.0.1. Sorgen Sie dafür, dass einer angelegt wird, ebenso der ReverseRecord, 1.0.0.127.IN-ADDR.ARPA PTR 127.0.0.1. Bei Broadcast/WINS Entfällt. NIS Wenn localhost nicht in der Tabelle steht, fügen sie es hinzu. NIS+ Wenn localhost nicht in der Tabelle steht, fügen sie es hinzu. hosts und HOSTS Fügen Sie die Zeile 127.0.0.1 localhost hinzu. LMHOSTS Entfällt.
Fehlersuche bei Netzwerkadressen Zahlreiche verbreitete Probleme sind auf inkorrektes Routing von Internet-Adressen oder auf falsche Adresszuweisungen zurückzuführen. Dieser Abschnitt hilft Ihnen herauszufinden, wie Ihre Adressen lauten. Netzmasken Die Netzmasken sagen jedem Host, welche Adressen er direkt erreichen kann (diese Adressen befinden sich im selben lokalen Netzwerk oder Subnetz) und für welche Adressen er einen Router ansprechen muss. Wenn die Netzmasken falsch sind, machen Ihre Computer einen von zwei möglichen Fehlern. Sie versuchen, Pakete mit lokalem Ziel über einen Router auszuliefern, was normalerweise Zeitverschwendung ist - abhängig von diversen Faktoren kann dieses Verfahren einigermaßen schnell arbeiten, ziemlich langsam oder gar nicht. Der andere Fehler besteht in dem Versuch, Pakete für einen Host in einem anderen Netzwerk lokal auszuliefern, was nicht funktionieren kann; die Pakete werden ihr Ziel nie erreichen. Die Netzmaske ist wie eine IP-Adresse aufgebaut. Sie besteht aus eingeschalteten Bits für den Netzwerkteil der Adresse und aus ausgeschalteten Bits für den Host-Teil. Sie wird als Bit-Maske verwendet, um Teile der Adresse im TCP/IP-Code zu maskieren, also zu verbergen. Eine Maske von 255.255.0.0 bedeutet, dass die ersten 2 Bytes (16 Bits) den Netzwerkanteil und die restlichen 2 Bytes
(16 Bits) den Host-Anteil repräsentieren. Sie werden häufig auf die Maske 255.255.255.0 treffen, bei der der Netzwerkanteil aus 3 Bytes (24 Bits) und der Host-Anteil aus einem Byte (8 Bits) besteht. Lassen Sie uns für unser Beispiel annehmen, dass Ihre IP-Adresse 192.168.0.10 lautet, während der Samba-Server die Adresse 192.168.236.86 besitzt. Bei einer Netzmaske von 255.255.255.0 besteht der Netzwerkanteil der IP-Adresse aus den ersten drei Bytes (24 Bits) und der Host-Anteil aus dem verbleibenden Byte (8 Bits). In diesem Fall befinden sich die beiden Systeme in unterschiedlichen Netzwerken:
Netzwerkanteil Host-Anteil 192 168 000
10
192 168 235
86
Bei einer Netzwerkmaske von 255.255.0.0 besteht der Netzwerkanteil der IP-Adressen aus den ersten beiden Bytes. Da diese bei den beiden von uns verwendeten IP-Adressen übereinstimmen, befinden sich die Computer im selben Netzwerk:
Netzwerkanteil Host-Anteil 192 168
000 10
192 168
236 86
Achten Sie darauf, dass die verwendeten Netzmasken bei den einzelnen Systemen der Struktur Ihres Netzwerks entsprechen. In einem Subnetz müssen die Netzmasken auf allen Systemen identisch sein. Broadcast-Adressen Die Broadcast-Adresse ist eine gewöhnliche Adresse, bei der der Host-Anteil ausschließlich aus eingeschalteten Bits besteht. Sie bedeutet »alle Hosts in Ihrem Netzwerk«. Sie können sie leicht ausrechnen, wenn Sie die Netzmaske und die IPAdresse kennen: Nehmen Sie die Adresse und aktivieren Sie alle Bits, wenn die entsprechenden Bits in der Netzmaske auf null stehen (der HostAnteil). Die folgende Tabelle veranschaulicht dies:
Netzwerkanteil Host-Anteil IP-Adresse
192 168 236
86
Netzmaske 255 255 255
000
Broadcast
255
192 168 236
In diesem Beispiel ist 192.168.236.255 die Broadcast-Adresse des Netzwerks 192.168.236. Es gibt außerdem eine alte, »universelle« BroadcastAdresse, nämlich 255.255.255.255. Router dürfen diese Adresse nicht weiterleiten, aber die meisten Hosts in Ihrem Netzwerk werden auf BroadcastNachrichten mit dieser Zieladresse antworten.
Netzwerkadressbereiche Mehrere Adressbereiche des Internets wurden für Testzwecke und für nicht mit dem Internet verbundene Netzwerke reserviert. Wir verwenden einen davon in unserem Buch. Wenn Sie noch keinen eigenen IP-Adressraum besitzen, können Sie den gleichen wie wir verwenden. Die Adressbereiche enthalten ein großes Netzwerk, 10. *.*.*, als Klasse-A-Netzwerk, einen Bereich mit Klasse-B-Netzwerkadressen, 172.16.*.* bis 172.31.*.*, und 254 Klasse-C-Netzwerke, 192.168.1.* bis 192.168.254.*. Die Domain example.com ist ebenfalls für nicht verbundene Netzwerke, Beispiele und Bücher reserviert. Wenn Ihr Netzwerk mit dem Internet verbunden ist, benötigen Sie eine entsprechende IP-Adresse und einen Domainnamen. Wenden Sie sich dazu am besten an Ihren Internet-Provider. Ihre Netzwerkadresse ermitteln Falls Sie Ihre IP-Adresse nicht kennen, können Sie sie mit dem Befehl ifconfig unter Unix bzw. ipconfig unter Windows ermitteln. (Schauen Sie in den Manpages nach, ob Ihre spezielle UnixVariante besondere Optionen erfordert. Beispielsweise will Solaris ifconfig -a sehen.) Die Ausgabe sieht in etwa so aus: $ ifconfig -a le0: flags=63
RUNNING > inet 192.168.236.11 netmask ffffff00 broadcast 192.168.236.255 lo0: flags=49<<>UP,LOOPBACK, RUNNING<>> inet 127.0.0.1 netmask ff000000
Eine der Schnittstellen ist die LoopbackSchnittstelle (in unseren Beispielen lo0), und die andere ist die normale IP-Schnittstelle. Die Flags sollten signalisieren, dass die Schnittstelle in Betrieb ist, Ethernet-Schnittstellen müssten außerdem bekannt geben, dass sie Broadcasts unterstützen (was PPP-Schnittstellen nicht tun). Sie können auch an anderen Stellen nach IPAdressen suchen: in /etc/hosts-Dateien, WindowsHOSTS-Dateien, Windows-LMHOSTS-Dateien, NIS, NIS+ und DNS.
Fehlersuche bei NetBIOS-Namen Die SMB-Protokolle haben von Anfang an das NetBIOS-Namenssystem genutzt. Es ist auch unter der Bezeichnung LAN Manager-Namenssystem bekannt. Dabei handelt es sich um ein einfaches Verfahren, bei dem jeder Knoten einen Namen mit 20 Zeichen Länge besitzt, der per Broadcast im Netzwerk herumgeschickt wird, so dass jeder andere Knoten davon weiß. Bei TCP/IP tendieren wir dazu, Namen wie client.example.com über DNS oder WINS zu verwenden, die in der Datei /
etc/hosts gespeichert sind. Die übliche Zuordnung von Domainnamen wie server.example.com zu NetBIOS-Namen benutzt einfach server als NetBIOS-Namen und konvertiert ihn in Großbuchstaben. Leider funktioniert dieses Verfahren nicht immer, besonders wenn Ihr Computer einen Host-Namen mit mehr als 20 Zeichen besitzt. Nicht bei jedem Rechner sind NetBIOS- und DNS-Namen identisch. So ist es nicht ungewöhnlich, für einen Computer den NetBIOS-Namen corpvm1 zu verwenden, wenn er den Hostnamen vm1.corp.com besitzt. Computer, bei denen sich NetBIOS- und Hostnamen unterscheiden, können bei der Fehlersuche für Verwirrung sorgen. Wir empfehlen Ihnen daher, diese Konstellation zu vermeiden, wo immer Sie können. Sie können NetBIOS-Namen mit smbclient herausfinden: ●
●
●
Wenn Sie die Freigaben auf Ihrem SambaServer mit smbclient -L kurzer_name anzeigen lassen können, handelt es sich bei dem kurzen Namen um den NetBIOSNamen. Erhalten Sie die Meldung Get_Hostbyname: Unknown host name, liegt vermutlich ein Konfigurationsfehler vor. Prüfen Sie in der smb.conf-Datei, ob der NetBIOS-Name ausdrücklich eingestellt ist. Versuchen Sie erneut, die Freigaben aufzulisten, geben Sie dieses Mal -I und die IP-Adresse des Samba-Servers an (z.B. smbclient -L server -I 192.168.236.86).
●
●
●
●
Dadurch umgehen Sie die Namensauswertung, so dass Pakete direkt zur angegebenen IP-Adresse gesendet werden. Wenn dies funktioniert, gibt es ein Konfigurationsproblem. Versuchen Sie es mit -I und dem vollständigen Domainnamen des Servers (also zum Beispiel smbclient -L server -I server.example.com). Dieser Befehl testet die Auswertung des Domainnamens mit dem in Samba konfigurierten Verfahren (zum Beispiel DNS). Wenn dieser Versuch fehlschlägt, haben Sie ein Problem mit dem Namensdienst. Lesen Sie den Abschnitt »Fehlersuche bei Namensdiensten«, wenn Sie mit der Fehlersuche bei den NetBIOSNamen fertig sind. Versuchen Sie es mit der Option -n (NetBIOS-Name) und dem Namen, der Ihrer Annahme nach funktionieren müsste (also zum Beispiel smbclient -n server -L server-12), aber ohne Angabe der IPAdresse durch die Option -I. Wenn dies funktioniert, ist der mit -n der tatsächliche NetBIOS-Name des Servers. Die Meldung Get-Hostbyname: Unknown host SERVER bedeutet, dass es sich nicht um den richtigen Namen handelt. Wenn bisher nichts funktioniert hat, wiederholen Sie die Tests und geben zusätzlich -U benutzername und -W arbeitsgruppe an (beides in Großbuchstaben). Damit stellen Sie sicher, dass Ihnen der Name des Benutzers oder der Arbeitsgruppe kein Schnippchen schlägt. Wenn auch jetzt noch nichts funktioniert
und Sie ein Namensdienstproblem hatten, beheben Sie die Probleme mit dem Namensdienst (siehe »Fehlersuche bei Namensdiensten«) und kehren dann zum NetBIOS-Namensdienst zurück.
Weitere Ressourcen Irgendwann im Laufe Ihrer Arbeit mit Samba werden Sie zu dem Punkt kommen, an dem Sie weitere Informationen über die Software haben wollen, und zwar sowohl in gedruckter als auch in elektronischer Form, um Neuigkeiten zu lesen, um etwas über Aktualisierungen zu erfahren oder um Hilfe zu bekommen.
Dokumentation und FAQs Es ist völlig in Ordnung, die Dokumentation zu lesen. Wirklich. Niemand kann Sie dabei sehen, und wir erzählen auch niemandem davon. Samba wird mit zahlreichen Dateien zur Dokumentation geliefert, und sie sind es wert, zumindest überflogen zu werden. Sie finden sie im Distributionsverzeichnis Ihres Computers unter / docs oder im Internet auf der Samba-Website: http://www.samba.org. Dort befindet sich die neueste Version der FAQ (Frequently Asked Questions; häufig gestellte Fragen), Fehlerinformationen und Hinweise zu den Distributionen, außerdem Links auf alle SambaManpages und HOWTO-Anleitungen.
Samba-Newsgroups
Usenet-Newsgroups waren schon immer ein guter Ort, um Ratschläge zu bekommen, über welches Thema auch immer. In den letzten Jahren hat sich dieser große Informationspool zu einer Ressource von unschätzbarem Wert gewandelt, zu einem Wissensspeicher. Archiv- und Such-Sites wie Google (http://www.google.de/advanced_group_ search) haben die Artikel der Newsgroups gespeichert und stellen nach einigen Mausklicks wertvolle Lösungen für Probleme bereit. Die wichtigste Newsgroup für Samba ist comp. protocols.smb. Sie sollte Ihre erste Adresse werden, wenn Sie ein Problem haben. Meist können Ihnen fünf Minuten der Suche hier stundenlange Frustration ersparen, die Ihre Fehlersuche auf eigene Faust begleiten kann. Wenn Sie eine Newsgroup durchsuchen, machen Sie so genaue Angaben wie möglich, aber fomulieren Sie knapp. Das Suchen nach einer bestimmten Fehlermeldung ist das Beste, wenn Sie die Antwort nicht sofort finden. Widerstehen Sie der Versuchung, nach Hilfe zu fragen, solange Sie nicht eine gewisse Zeit lang selbst gesucht haben. Vielleicht finden Sie die Antwort auf Ihre Frage in einer FAQ oder in einer der vielen Dokumentationsdateien, die mit Samba geliefert werden. Oder Sie kommen auf die Lösung, indem Sie eines der Diagnosewerkzeuge von Samba benutzen. Wenn dies nicht funktioniert, stellen Sie Ihre Frage in comp.protocols.smb und beschreiben dabei genau, was Sie versucht haben und wie Ihr Ergebnis aussieht. Schreiben Sie die Fehlermeldungen in die Frage. Es kann einige Tage
dauern, bevor Sie Hilfe bekommen, seien Sie also bitte geduldig und versuchen Sie bis zur Antwort weiter, das Problem selbst zu lösen.
Suchen Sie selbst weiter nach einer Lösung, nachdem Sie die Frage gestellt haben. Die meisten von uns haben die Erfahrung gemacht, dass sie eine Frage mit hunderten von Zeilen mit Einzelheiten über mehrere Kontinente geschickt haben, nur um nach einer Stunde das Problem selbst zu lösen. Die Faustregel lautet etwa so: Je mehr Menschen Ihre Frage lesen, umso einfacher ist die Lösung. Das bedeutet, wenn jeder in der Unix-Gemeinschaft Ihren Artikel einmal gelesen hat, ist die Lösung so einfach wie: »Stecken Sie den Stecker in die Steckdose!«
Samba-Mailinglisten
Die folgenden Mailinglisten bieten Unterstützung für Samba. Auf der Samba-Homepage unter http:// www.samba.org/ erfahren Sie, wie Sie sich an diesen Mailinglisten an- und abmelden: [email protected] Dies ist die wichtigste Mailingliste für allgemeine Fragen und Diskussionen über Samba. [email protected] Diese Liste ist für Neuigkeiten Samba betreffend zuständig, wie etwa die Ankündigung neuer Versionen. [email protected] Wenn Sie sich an dieser Liste anmelden, erhalten Sie jedes Mal eine Nachricht, wenn einer der Samba-Entwickler den SambaQuellcode im CVS-Repository aktualisiert. Sie könnten diese Möglichkeit nutzen, wenn Sie auf einen bestimmten Bugfix oder die Umsetzung einer bestimmten Funktion warten. Um zu vermeiden, dass Ihre Mailbox von Nachrichten überschwemmt wird, empfehlen wir Ihnen, die Digest-Funktion zu nutzen, die Nachrichten in einer geringeren Anzahl von E-Mails zusammenfasst. [email protected] Diese Liste dient den Diskussionen der SambaDokumentation. [email protected] Diese Mailingliste ist für alle, die Samba auf dem Betriebssystem VMS betreiben. [email protected] Dies ist eine Liste für Entwickler, die über vorkompilierte Samba-Distributionen
diskutieren wollen. [email protected] Diese Mailingliste ist für Diskussionen der Entwickler über den Samba-Code. Durchsuchbare Versionen der Samba-MailinglistenArchive finden Sie unter http://marc. theaimsgroup.com. Wenn Sie eine Nachricht an die SambaMailinglisten schicken, sollten Sie immer daran denken, dass Sie diese Nachricht an ein großes Publikum richten. Die Hinweise aus dem vorherigen Abschnitt bezüglich der UsenetPostings gelten auch hier. Eine gut formulierte Frage oder ein entsprechender Kommentar wird höchstwahrscheinlich beantwortet - eine unausgereifte Nachricht dagegen wird wohl mit Nichtbeachtung bestraft werden!
Weitere Informationsquellen Hunt, Craig. TCP/IP-Netzwerk-Administration, 3. Auflage. Köln, O'Reilly Verlag, 2003. Hunt, Craig und Robert Bruce Thompson. Windows NT TCP/IP Netzwerk-Administration. Köln, O'Reilly Verlag, 1999. Albitz, Paul und Cricket Liu. DNS und BIND, 3. Auflage. Köln, O'Reilly Verlag, 2001. Stern, Hal. Managing NFS and NIS, 2nd Edition. Sebastopol, CA, O'Reilly & Associates, 2001.
Symbole %$-Variable 203 %a-Variable 151 , 202 Variablenersetzung 202 %d-Variable 203 %G-Variable 202 %g-Variable 202 %H-Variable 202 , 298 %h-Variable 203 %I-Variable 202 %L-Variable 147 , 151 , 203 %M-Variable 202 %m-Variable 147 , 151 , 202 %N-Variable 203 %P-Variable 203 %p-Variable 203 %R-Variable 203 %S-Variable 202 %T-Variable 203 %U-Variable 202 , 298 %u-Variable 147 , 151 , 202 , 298 %v-Variable 203 . (Punkt) (siehe auch Punktdateien) NetBIOS-Namen und 14 .bak-Dateien 263 .bat-Dateien 146 .cmd-Dateien 146 .dat-Dateien ändern in .man-Dateien 157 NTUSER.DAT 148 USER.DAT 148 .ini-Dateien 197
.man-Dateien, erstellen aus .dat-Dateien 157 .nsmbrc-Dateien 191 .old-Dateien 54 .pwl-Dateien 30 .win_profile-Verzeichnis 151 Beispiel 153 /etc/fstab-Datei, Warnung vor Bearbeiten 187 /etc/group 298 /etc/hosts-Datei 75 /etc/nsswitch.conf-Datei 75 /etc/passwd-Datei, manuelles Erzeugen der Einträge 134 /etc/printcap.local-Datei 349 /etc/resolv.conf-Datei 77 , 231 /usr/local/etc/nsmb.conf-Datei 191 [global]-Abschnitt (smb.conf-Datei) 204 [homes]-Freigabe (smb.conf-Datei) 131 , 205 , 245 , 299 Besonderheiten der 300 [netlogon]-Freigabe (smb.conf-Datei) 131 , 145 , 245 [printers]-Freigabe (smb.conf-Datei) 205 , 342 Beispiel für ein Linux-System 342 [profiles]-Freigabe (smb.conf-Datei) 131 _ _MSBROWSE_ _-Ressourceneintrag 17 , 240
Zahlen 127.0.0.1 (Localhost) 78 bind interfaces only-Option 219
A abort shutdown script-Option (smb.confDatei) 426 ACLs 32 abbilden auf Unix-Berechtigungen 453 Installieren von Samba mit Unterstützung für 525 Konfigurationsoptionen 273-275 POSIX.1e 272 Unix 272 Unterstützung in Samba 2.2 39 vererben 441 verglichen mit Unix-Dateiberechtigungen 32 Windows NT/2000/XP 173 , 266-275 Active Directory Samba 2.2 36 , 127 Samba 3.0 36 Server, festlegen 427 Zeitsynchronisation und 360 Adapter 73 add machine script-Option (smb.confDatei) 427 add printer command-Option (smb.confDatei) 426 add share command-Option (smb.confDatei) 427 add user script-Option (smb.conf-Datei) 167 , 427 admin users-Option (smb.conf-Datei) 301 , 303 , 427 administrative Benutzer (siehe rootZugänge)
Administrator (siehe Domänenadministrator) ads server-Option (smb.conf-Datei) 427 AFS (Andrew Filesystem), Installieren von Samba mit Unterstützung für 525 Aktualisieren von Samba 54 , 55 Albitz, Paul 407 algorithmic rid base-Option (smb.confDatei) 428 allow hosts-Option (smb.conf-Datei) 428 allow trusted domains-Option (smb.confDatei) 428 analogX Atomic TimeSync 360 Änderungsbenachrichtigung 374 Anleitungen, Samba 48 Anmeldeparameter, einstellen 25 Anmeldepfad, Unterstützen von RoamingProfilen für Windows NT/2000/XP-Clients 130 Anmeldeskripten 126 , 144-147 erstellen 145-147 Optionen 158 Überprüfen des Formats 146 Verwenden von Variablen in 147 announce as-Option (smb.conf-Datei) 246 , 428 announce version-Option (smb.conf-Datei) 247 , 428 anonym (siehe auch Gastzugang) Beschränken des Zugriffs 461 ANSI C-Compiler benötigt von SambaQuellen 47 Arbeitsgruppen 27-31 definiert 16
die mehrere Subnetze umfassen 36 Hinzufügen des ersten Samba-Servers zu 420 Probleme im Zusammenhang mit 31 Windows 2000 108 Windows 95/98/Me 87 Windows NT 99 Windows XP 119 Arbeitsstationsdienst, installieren unter Windows NT 94 Ausblenden von Dateien 252-254 ausführbare-Datei-Berechtigungsbit 260 auth methods-Option (smb.conf-Datei) 428 Authentifizierung Aktivieren von Samba als WINS-Server, Beispiel für Konfigurationsdatei 419 Client 306-312 Einstellen der Methode der 462 Dateien, Festlegen des Ablageortes für Samba 527 definiert 32 Methoden, festlegen 428 mit winbind 324-337 Pass-Through 35 Sambas normale benutzerbezogene verglichen mit Windows 79 Samba-Sicherheitsstufen 306 Überblick 33 Windows 95/98/Me 30 (siehe auch Kennwörter) auto services-Option (smb.conf-Datei) 245 , 248 , 428 automatisch mountende Freigaben 525 available-Option (smb.conf-Datei) 429
B Backends (CUPS-Module) 351 Backup-Domänen-Controller (BDC) 32 (siehe auch primäre Domänen-Controller) Unfähigkeit von Samba 2.2, mit BDCs zusammenzuarbeiten 128 Backups, erzeugen und wiederherstellen mittels smbclient 181-184 Benutzer Account-Dateien in Windows 30 Anlegen neuer 427 automatisches Löschen eines Zugangs 434 einzelne, hinzufügen unter Unix 297-299 Festlegen des schreibgeschützten Zugriffs 460 Gruppenzugehörigkeit, außer Kraft setzen 438 hinzufügen zu Windows 2000 110 Windows 95/98/Me 88 Windows NT 101 Windows XP 121 mehrere, hinzufügen unter Unix 299-300 Untersuchen bestimmter 432 Benutzer-Accounting 529 Benutzer-ID (UID, User ID) 32 Berechtigungen (siehe auch Dateiberechtigungen; Verzeichnisberechtigungen) zuordnen zu Windows NT-ACLs 453 Bereichs-ID (SMB-Paket) 17 bind interfaces only-Option (smb.conf-
Datei) 219 , 429 --bindir (configure-Option) 51 Bindungen 73 Windows 2000 106 Windows 95/98/Me 86 Windows NT 99 Windows XP 116 Bitmasken 185 CIDR-Format 219 b-Knoten (NetBios-Knotentyp) 14 block size-Option (smb.conf-Datei) 429 blocking locks-Option (smb.conf-Datei) 429 Broadcast Namensauflösung 75 verglichen mit NBNSNamensregistrierung 11 Broadcast-Adresse 414 Broadcasting 13 browsable-Option (smb.conf-Datei) 245 , 247 , 300 , 429 browse list-Option (smb.conf-Datei) 247 , 429 browseable-Option (smb.conf-Datei) (siehe browsable-Option (smb.conf-Datei)) Browse-Master (siehe lokaler Hauptsuchdienst) Browse-Server (siehe lokaler Hauptsuchdienst) Browsing and Windows 95 Networking und CIFS/E Browser Protocol 241 BROWSING.txt und BROWSING-Config.txt 241 BSD-Unix automatisches Starten der SambaDaemons 65 Drucker 349-350
C Caching-Regeln, Client-seitige 432 case sensitive-Option (smb.conf-Datei) 278 , 430 casesignames-Option (smb.conf-Datei) 430 change notify timeout-Option (smb.confDatei) 374 , 430 change share command-Option (smb.confDatei) 430 character set-Option (smb.conf-Datei) 365 , 430 checking (Nachricht des configure-Skripts) 52 CIDR-Format-Bitmaske 219 CIFS 22 Unix-Erweiterungen 39 , 469 (siehe auch SMB) CIFS Technical Reference 21 client code page-Option (smb.conf-Datei) 364 , 430 Cluster-Umgebung, Samba in 464 (siehe auch Multihomed-System; mehrere Subnetze) 464 code page directory-Option (smb.confDatei) 431 Codeseiten 364 coding system-Option (smb.conf-Datei) 366 , 431 comment-Option (smb.conf-Datei) 213 , 431 Common Internet File System (siehe CIFS) comp.protocols.smb-Newsgroup 417 Computer, hinzufügen zu Domänen 427
Computernamen Namensauflösung (siehe Namensauflösung) Windows 2000 108 Windows 95/98/Me 87 Windows NT 99 Windows XP 119 Computerzugänge, hinzufügen 132 Concurrent Versions System (CVS) 521 config file-Option (smb.conf-Datei) 207 , 431 config.log-Datei 52 config.pol-Datei 163 config.status-Datei 55 configure-Skript 50 Beispielausführung 51 Optionen 523-529 --bindir 51 --datadir 51 --eprefix 51 --include dir 51 --infodir 51 --libdir 51 --libexec dir 51 --mandir 51 --prefix 51 --sbindir 51 with Funktion 50 --with-acl-support 525 --with-afs 525 --with-automount 525 --with-codepagedir 525 --with-configdir 525 --with-dce-dfs 525 --with-fhs 525
--with-included-popt 525 --with-krb4 525 --with-krb5 526 --with-ldapsam 526 --with-libiconv 526 --with-libsmbclient 526 --with-lockdir 526 --with-logfilebase 526 --with-manpages-langs 526 --with-msdfs 50 , 526 --with-nisplus-home 527 --with-nisplussam 527 without Funktion 50 --with-pam 527 --with-pam_smbpass 527 --with-piddir 527 --with-privatedir 527 --with-profiling-data 527 --with-quotas 527 --with-readline 527 --with-sendfile-support 528 --with-smbmount 51 , 528 --with-smbwrapper 51 , 528 --with-spinlocks 528 --with-ssl 528 --with-sslinc 528 --with-ssllib 528 --with-swatdir 528 --with-syslog 529 --with-tdbsam 529 --with-utmp 529 --with-winbind 529 copy-Option (smb.conf-Datei) 208 , 431 Core und Core Plus 22 create mask-Option (smb.conf-Datei) 261 , 263 , 431
create mode-Option (smb.conf-Datei) 299 , 432 creating (Nachricht des configure-Skripts) 52 csc policy-Option (smb.conf-Datei) 432 CVS (Concurrent Versions System) 521
D Daemons (siehe inetd-Daemon; nmbdDaemon; smbd-Daemon; xinetd-Daemon) Darwin, automatisches Starten der SambaDaemons 68 --datadir (configure-Skript-Option) 51 Datagramm-Dienste (NBT) definiert 17 Hinweise 19 Datagramm-Dienste, definiert 11 Datagramm-Funktionen 18 Dateiberechtigungen Ausführbarkeitsbit 260 Einstellen der maximal zulässigen 431 Einstellen in Windows NT/2000/XP 173 Optionen 262-266 Unix-Berechtigungen verglichen mit ACLs 32 unter MS-DOS und Unix 257-266 verglichen mit ACLs 32 Zusammenfassung der UnixBerechtigungsbits 259 Dateinamen Konventionen 275 (siehe auch Namensverkürzung) speichern und suchen in Samba 277 Dateisperren (siehe Sperren und Oplocks)
Dateisystemoptionen 255-257 Dateiübertragung mittels smbclient 178 deadtime-Option (smb.conf-Datei) 370 , 432 debug hires timestamp-Option (smb.confDatei) 432 debug pid-Option (smb.conf-Datei) 432 debug timestamp-Option (smb.conf-Datei) 225 , 432 debug uid-Option (smb.conf-Datei) 432 debuglevel-Option (smb.conf-Datei) 433 default case-Option (smb.conf-Datei) 278 , 279 , 433 default devmode-Option (smb.conf-Datei) 433 default service-Option (smb.conf-Datei) 248 , 433 default-Option (smb.conf-Datei) 433 delete printer command-Option (smb.confDatei) 433 delete readonly-Option (smb.conf-Datei) 262 , 264 , 434 delete share command-Option (smb.confDatei) 434 delete user script-Option (smb.conf-Datei) 167 , 434 delete veto files-Option (smb.conf-Datei) 253 , 257 , 434 deny hosts-Option (smb.conf-Datei) 434 dfree command-Option (smb.conf-Datei) 370 , 434 Dfs (Microsofts Distributed Filesystem) 291-294 Bereitstellen von Diensten 441 Installieren von Samba mit Unterstützung für 526
Konfigurieren von Samba als Dfs-Server 292-294 Unterstützung in Samba 2.2 38 Windows-Clients 292 DHCP und IP-Adressen 74 DIAGNOSIS.txt 380 dig-Befehl (Unix) 77 Digital Pathworks-Clients 373 directory mask-Option (smb.conf-Datei) 261 , 263 , 435 directory mode-Option (smb.conf-Datei) 299 , 435 directory security mask-Option (smb.conf file) 275 directory security mask-Option (smb.confDatei) 274 , 435 directory-Option (smb.conf-Datei) 435 disable spools-Option (smb.conf-Datei) 435 Distributed Computing Environment/ Distributed Filesystem (DCE/DFS) 525 Distributed Filesystem (siehe Dfs) dmask-Option 185 DNS 75 Konfiguration Windows 2000 107 Windows 95/98/Me 85 Windows NT 98 Windows XP 117 NetBIOS-Namen Übersetzen zwischen DNS-Namen und 192 verglichen mit Hostnamen 14 Server, Namensauflösung und 229 Überblick 77 dns proxy-Option (smb.conf-Datei) 231 , 234 , 435 DNS-Proxy, konfigurieren auf WINS-Server
231 Dokumentation, Samba 48 , 49 , 416 domain admin group-Option (smb.confDatei) 168 , 436 Domain Admins-Gruppe 436 domain guest group-Option (smb.confDatei) 436 Domain Guest-Gruppe 436 domain logons-Option (smb.conf-Datei) 166 , 436 domain master-Option (smb.conf-Datei) 167 , 250 , 436 Domain Name System (siehe DNS) Domänen Hinzufügen von Computern zu 427 Vertrauensbeziehungen 34 vertrauenswürdige 428 Vorteile von 126 weitere Informationen über das Einrichten von 128 (siehe auch Windows NT-DomänenOptionen) Domänenadministrator 132 , 436 Domänenanmeldungen Konfigurieren von Windows-Clients für 134-144 Windows 2000 140-142 Windows 95/98/Me 134-138 Windows beschwert sich, dass Sie bereits angemeldet sind 134 Windows NT 138-140 Windows XP Professional 142-144 Domänen-Controller 31 primäre (siehe primäre DomänenController) Sicherungs- (siehe Backup-Domänen-
Controller) Domänen-Hauptsuchdienst 36 , 237 Erzwingen von Samba als 250 , 436 Konfigurieren von Samba sowohl als lokaler Hauptsuchdienst als auch als 130 Probleme mit 37 Samba als 242 Synchronisieren der Suchlisten mit allen 437 Verifizieren von Samba als 243 Domänen-Member-Server 35 Samba als 163-165 smb.conf-Datei-Beispiel 424 Domänenmitgliedschaft 132 dont descend-Option (smb.conf-Datei) 253 , 255 , 436 dos filemode-Option (smb.conf-Datei) 436 dos filetime resolution-Option (smb.confDatei) 362 , 436 dos filetimes-Option (smb.conf-Datei) 361 , 437 dos2unix-Befehl 179 Druckbefehle 340 Drucken 338-358 Anlegen eines Unix-Druckers 349-352 CUPS-kompatibles 516 Einrichten und Testen eines WindowsClients 344 Fehlerbehebung bei Druckern 344 Freigaben Beispiel 340 wichtige Informationen über 341 Mac OS X-Umgebung 344 Netzwerk 338 Optionen 352-358 Systemtypen 353
Testen der Konfiguration 343 Variablen 340 verbreitetes Problem mit SambaDrucker-Konfiguration 344 zu Windows von Unix aus 347-358 (siehe auch Drucker) Drucker Beispiel für das Freigeben 8 BSD 349-350 CUPS 351 einrichten von Windows aus 8 Einstellen des Standardgerätemodus 433 entfernen aus System 433 freigeben 338 unter Mac OS X 531 Hinzufügen neuer zum System 426 Namen in Suchlisten 444 Senden von Dateien mittels smbclient 343 System V 351 (siehe auch Drucken) Druckerstatus, Einstellen eines Befehls für 446 Druck-Jobs anhalten 446 Begrenzen der Anzahl der 450 fortsetzen 447 löschen 447 senden über Samba 339 Durchsuchen 227 , 235-251 eine Liste mit Computern und freigegebenen Ressourcen, definiert 28 Fehlersuche 400-406 freigegebene Ressource eines bestimmten Computers 28 in einem Windows-Netzwerk 236-241
Konfigurieren von Samba für 241 Optionen 246-251 Server vom Client aus 406 über Subnetzgrenzen hinaus 243 Überblick 27-30 unsichtbare Freigaben 245
E emacs-Texteditor 146 encrypt passwords-Option (smb.confDatei) 320 , 437 enhanced browsing-Option (smb.confDatei) 437 entfernte Logins (siehe Roaming-Profile) enumports command-Option (smb.confDatei) 437 --eprefix (configure-Skript-Option) 51 Erstellungsmasken 259-262 Ethereal (SMB-Schnüffler) 21 , 383 exec-Option (smb.conf-Datei) 437 ext2/ext3-Dateisystem 39
F fake directory create times-Option (smb. conf-Datei) 362 , 437 fake oplocks-Option (smb.conf-Datei) 287 , 438 FAQs, Samba 416 Fehlerbaum, Fehlersuche bei Samba 383416 Fehlerbehebung bei Samba 376-418
Durchsuchen 400-406 Fehlerbaum 383-416 Hostnamen 408 lange und kurze 410 IP-Protokoll auf niederer Ebene 384-389 Localhost-Probleme 412 Namensdienste 407-412 NetBIOS-Namen 415 Netzwerkadressen 413-415 Server-Daemons 390-393 Prüfen von smbd mit telnet 392 Suchen nach an Ports gebundenen Daemons 391 Suchen nach Daemon-Prozessen mit ps 390 Testen von Daemons mit testparm 392 Untersuchen des Starts der Daemons 390 SMB-Verbindungen 394-400 TCP 389 Testen Client-Durchsuchen mit net view 405 Clients mit nmblookup 404 Durchsuchen des Servers vom Client aus 406 Durchsuchen mit smbclient 401 lokal mit smbclient 394 Namensdienste mit ping 385 Netzwerk mit nmblookup 404 Netzwerkhardware mit ping 385 Netzwerksoftware mit ping 384 Server mit nmblookup 403 Verbindungen mit net use 397 Verbindungen mit ping 386 Verbindungen mit smbclient 396 Verbindungen mit Windows Explorer 399 ungewöhnliche Verzögerungen 412
Werkzeuge 376 ping 384-389 Protokolldateien 377-380 Testprogramme 380-383 Fehlermeldungen von configure-Skript 52 Filesystem Hierarchy Standard 525 findsmb-Programm 42 , 483 Firewall-Konfiguration 64 fmask-Option (sbmount) 185 follow symlinks-Option (smb.conf-Datei) 255 , 256 , 438 force create mode-Option (smb.confDatei) 263 , 438 force directory mode-Option (smb.confDatei) 264 , 438 force directory security mode-Option (smb. conf-Datei) 275 , 438 force group-Option (smb.conf-Datei) 261 , 264 , 438 force security mode-Option (smb.confDatei) 274 , 439 force unknown acl user-Option (smb.confDatei) 439 force user-Option (smb.conf-Datei) 261 , 264 , 439 Freigaben Abschnitte in smb.conf-Datei 131 Anlegen neuer 427 Drucker, Einstellen des Standardgerätemodus 433 Einstellen der maximalen Anzahl 449 erlauben und verbieten 441 festlegen in Suchlisten 428 , 429 , 457 Festlegen von Systemen, die sich anmelden dürfen 428 Kopieren von Konfigurationen 431
löschen 434 unsichtbare 245 verändern 430 Verbieten des Zugriffs auf 429 Verwalten von Verbindungen zu (siehe Verbindungsskripten) freigeben Dateien Mac OS X 531 Windows 95/98/Me 170 Windows NT/2000/XP 172 , 173 Drucker (siehe Drucker, freigeben) Verzeichnisdienstbeispiel 5-7 Frisch, Æleen 344 fstab-Datei, Warnung vor dem Bearbeiten 187 fstype-Option (smb.conf-Datei) 371 , 439
G Gastzugriff 301 gcc-Binaries 47 get-Befehl 178 getwd cache-Option (smb.conf-Datei) 256 , 439 GNU Free Documentation License 542-548 GNU-configure-Skript (siehe configureSkript) Google 416 Groß-/Kleinschreibung 275-281 Bewahren der Schreibweise von Dateinamen 458 Sambas Umgang mit 278 group-Option (smb.conf-Datei) 439 grouppol.inf-Datei 161
Gruppen Einstellen einer Gruppenfreigabe in smb. conf-Datei 298 Systemgruppendatei 298 Überschreiben der normalen Gruppenmitgliedschaft eines Benutzers 438 zusätzliche Informationen 16 (siehe auch Arbeitsgruppen; SMB, Gruppen) Gruppen-ID (GID) 32 guest account-Option (smb.conf-Datei) 301 , 304 , 439 guest ok-Option (smb.conf-Datei) 301 , 440 guest only-Option (smb.conf-Datei) 304 , 440
H Hauptsuchdienst (siehe lokaler Hauptsuchdienst) hide dot files-Option (smb.conf-Datei) 252 , 256 , 440 hide files-Option (smb.conf-Datei) 253 , 256 , 440 hide local users-Option (smb.conf-Datei) 440 hide unreadable-Option (smb.conf-Datei) 440 h-Knoten (NetBios-Knotentyp) 14 homedir map-Option (smb.conf-Datei) 295 , 440 Home-Verzeichnis, einstellen 446
host msdfs-Option (smb.conf-Datei) 294 , 441 Hostname, verteidigen 13 hosts allow-Option (smb.conf-Datei) 215218 , 441 hosts deny-Option (smb.conf-Datei) 215218 , 441 hosts equiv-Option (smb.conf-Datei) 323 , 441 hosts.sam-Datei 78 HOSTS-Datei 75 , 78 Hunt, Craig 93
I iconv( )-Funktion 526 ifconfig-Befehl 414 Implementing Policies and Profiles for Windows NT 4.0 149 --include dir (configure-Skript-Option) 51 include-Option (smb.conf-Datei) 203 , 207 , 441 inetd-Daemon 56 Starten der smbd- und nmbd-Daemons 70 --infodir (configure-Skript-Option) 51 inherit acls-Option (smb.conf-Datei) 441 inherit permissions-Option (smb.confDatei) 265 , 442 Installationsverzeichnisse für Samba 54 Installieren von Samba 52-56 auf einem Unix-System 45-71 ANSI C-Compiler benötigt von SambaQuelle 47
Binär oder Quelle 46 Konfiguration (siehe configure-Skript) Paketversionen 45-48 Quelle, Überblick über Schritte 48 Fehlersuche (siehe Fehlersuche bei Samba, Fehlerbaum) interfaces-Option (smb.conf-Datei) 218 , 442 Internationalisierung 364-367 Funktionen von Samba 2.2 483 Installieren von Samba mit Unterstützung für 525 invalid users-Option (smb.conf-Datei) 300 , 303 , 442 IP-Adressen 74 127.0.0.1 (Localhost) 78 bind interfaces only-Option 219 Übersetzen zwischen NetBIOS-Namen und 192 Windows 2000 107 Windows 95/98/Me-Netzwerke 84 Windows NT 96 Windows XP 117 IPC$-Kennwort 79 ipconfig /all-Befehl (Windows NT/2000/XP) 14 ipconfig-Befehl 414
K keepalive-Option (smb.conf-Datei) 371 , 442 Kennwort-Chat, gelieferte Zeichen 318 Kennwort-Chat, gesendete Zeichen 318 Kennwörter 78 , 312-324
Beschränken der Länge der 451 Deaktivieren verschlüsselter 314 Einrichten der Server, die validieren 456 Einrichten unter Windows 95/98/Me 88 hinzufügen zu smb.conf-Datei 79 IPC$ 79 Klartext oder verschlüsselte 79 Konfigurationsoptionen 320-324 Synchronisation 317-319 verschlüsselte (siehe verschlüsselte Kennwörter) Windows verglichen mit Unix 30 (siehe auch Authentifizierung) Kennwort-Server (Mac OS X) 534 einschalten 536 Kerberos-Authentifizierung 40 Installieren von Samba mit Unterstützung für 525 Samba 2.2 und 127 Zeitsynchronisation und 360 kernel oplocks-Option (smb.conf-Datei) 286 , 442 Knotentypen 14 Kommandozeilenoptionen, parsen 525 Kompilieren von Samba 52-56 Komponenten, Windows 73 Konfigurationsdatei Auswählen einer neuen 431 Sambas Haupt- (siehe smb.conf-Datei) Variablen (siehe smb.conf-Datei, Variablen) (siehe auch Konfigurieren von Samba) Konfigurationsverwaltungswerkzeug (siehe CVS) Konfigurationswertetypen 475-476 Konfigurieren von Samba 49-52
Fehlersuche (siehe Fehlersuche bei Samba, Fehlerbaum) für die Installation (siehe configureSkript) für Roaming-Profile 150-155 Identifizieren von in früheren Installationen benutzten Optionen 55 Konfigurationsdatei (siehe smb.confDatei) zum Durchsuchen 241
L LAN Manager Versionen 1.0, 2.0 und 2.1 22 LAN Manager-Host-Ankündigungen 249 lanman auth-Option (smb.conf-Datei) 443 large readwrite-Option (smb.conf-Datei) 443 Lastausgleich und Dfs 292 , 294 Laufwerksbuchstabe, Verbinden eines Verzeichnisses mit 6 , 145 LDAP 36 , 40 Installieren von Samba mit Unterstützung für 526 Samba 2.2 und 127 ldap admin dn-Option (smb.conf-Datei) 443 ldap filter-Option (smb.conf-Datei) 443 ldap port-Option (smb.conf-Datei) 443 ldap server-Option (smb.conf-Datei) 443 ldap ssl-Option (smb.conf-Datei) 444 ldap suffix-Option (smb.conf-Datei) 444 Leistungssteigerung, Zwischenspeichern von Verzeichnissen 439 level2 oplocks-Option (smb.conf-Datei)
286 , 444 --libdir (configure-Skript-Option) 51 --libexec dir (configure-Skript-Option) 51 libnss_winbind.so-Bibliothek 326 Linux-PAM System Administrator's Guide 331 Liu, Cricket 407 lm announce-Option (smb.conf-Datei) 249 , 444 lm interval-Option (smb.conf-Datei) 249 , 444 LMHOSTS-Datei 76 Namensauflösung und 230 Windows 2000 107 Windows 95/98/Me 86 Windows NT 98 Windows XP 118 load printers-Option (smb.conf-Datei) 355 , 444 local master-Option (smb.conf-Datei) 241 , 248 , 445 Localhost-Adresse (siehe 127.0.0.1 (Localhost)) lock directory-Option (smb.conf-Datei) 288 , 445 lock dir-Option (smb.conf-Datei) 445 lock spin count-Option (smb.conf-Datei) 445 lock spin time-Option (smb.conf-Datei) 445 locking-Option (smb.conf-Datei) 285 , 445 log file-Option (smb.conf-Datei) 224 , 377 , 445 log level-Option (smb.conf-Datei) 225 , 445 log.smb-Datei 71 logon drive-Option (smb.conf-Datei) 159 , 446
logon home-Option (smb.conf-Datei) 159 , 446 logon home-Zeile (smb.conf-Datei) 151 logon path-Option (smb.conf-Datei) 159 , 446 logon path-Zeile (smb.conf-Datei) 151 logon script-Option (smb.conf-Datei) 158 , 446 logon.bat 145 lokale Profile 148 lokaler Hauptsuchdienst 28 , 236 Konfigurieren von Samba sowohl als Domänen-Hauptsuchdienst als auch als 130 lpadmin-Befehl (Unix) 352 lppause command-Option (smb.confDatei) 356 , 446 lppause-Befehl (Unix) 341 lpq cache time-Option (smb.conf-Datei) 354 , 446 lpq command-Option (smb.conf-Datei) 356 , 446 lpq-Befehl (Unix) 341 lpr-Befehl (Unix) 340 lpresume command-Option (smb.confDatei) 356 , 447 lpresume-Befehl (Unix) 341 lprm command-Option (smb.conf-Datei) 356 , 447 lprm-Befehl (Unix) 341
M Mac OS X Aktivieren der SMB-Druckerfreigabe 344
automatisches Starten der SambaDaemons 68 Kenntwort-Server 534 aktivieren 535 einschalten 536 Konfigurationsdetails 537-540 smbutil und mount_smbfs 193-195 Überwachen der Dienste 536 Mac OS X Server Ausführen von Samba unter 530-541 Freigeben von Dateien 531 Freigeben von Druckern 531 Konfigurationseinstellungen 539 Konfigurieren und Aktivieren von Diensten 532 Mac OS X Server Administrator's Guide 530 machine password timeout-Option (smb. conf-Datei) 168 , 447 magic output-Option (smb.conf-Datei) 363 , 447 magic script-Option (smb.conf-Datei) 363 , 447 magische Skripten 363 Mailinglisten, Samba 417 Archive 48 make install-Befehl (Unix) 54 Aktualisieren der Installationen 55 make revert-Befehl (Unix) 54 make_smbcodepage-Programm 42 , 483 make_unicodemap-Programm 42 , 484 make-Dienstprogramm (Unix) 52 makefile, erzeugen für SambaKonfiguration 50 Mandatory-Profile 157 Ändern aus Roaming-Profilen 157 --mandir (configure-Skript-Option) 51
mangle case-Option (smb.conf-Datei) 280 , 447 mangled map-Option (smb.conf-Datei) 281 , 447 mangled names-Option (smb.conf-Datei) 280 , 448 mangled stack-Option (smb.conf-Datei) 280 , 448 mangling char-Option (smb.conf-Datei) 280 , 448 mangling method-Option (smb.conf-Datei) 448 Manpages (siehe Online-Handbuch) MANPATH-Umgebungsvariable 56 map archive-Option (smb.conf-Datei) 259 , 264 , 448 map hidden-Option (smb.conf-Datei) 259 , 265 , 448 map system-Option (smb.conf-Datei) 259 , 265 , 448 map to guest-Option (smb.conf-Datei) 449 max connections-Option (smb.conf-Datei) 304 , 449 max disk size-Option (smb.conf-Datei) 372 , 449 max log size-Option (smb.conf-Datei) 225 , 449 max mux-Option (smb.conf-Datei) 372 , 449 max open files-Option (smb.conf-Datei) 372 , 449 max print jobs-Option (smb.conf-Datei) 450 max protocol-Option (smb.conf-Datei) 450 max smbd processes-Option (smb.confDatei) 450
max ttl-Option (smb.conf-Datei) 235 , 450 max wins ttl-Option (smb.conf-Datei) 235 , 450 max xmit-Option (smb.conf-Datei) 372 , 450 mehrere Subnetze Durchsuchen über Subnetzgrenzen hinweg 243 mit Samba-Servern 244 (siehe auch Cluster-Umgebung, Samba in; Multihomed-System) message command-Option (smb.confDatei) 368 , 450 mget-Befehl 179 Microsoft Distributed Filesystem (siehe Dfs) min passwd length-Option (smb.confDatei) 451 min password length-Option (smb.confDatei) 451 min print space-Option (smb.conf-Datei) 357 , 451 min protocol-Option (smb.conf-Datei) 451 min wins ttl-Option (smb.conf-Datei) 235 , 451 m-Knoten (NetBios-Knotentyp) 14 mount_smbfs-Programm 169 , 192 Optionen 193 mput-Befehl 179 msdfs root-Option (smb.conf-Datei) 294 , 451 MS-DOS-Dateiberechtigungen 257-266 MSN Messenger 367-369 Multihomed-System (siehe auch Cluster-Umgebung, Samba in; mehrere Subnetze) Ausführen von Samba auf 214
N Nachrichtendienst 367-369 name resolve order-Option (smb.confDatei) 230 , 235 , 452 Namensauflösung 11-13 , 75 , 227-235 Broadcast-Methode 75 Konfigurationsoptionen 232-235 konfigurieren in Samba 230 Methoden 228 mittels Broadcast-Paketen 228 Namensdienste definiert 11 Fehlerbehebung 407-412 feststellen, was verwendet wird 407 wechseln 75 Namensregistrierung 11-13 Namensverkürzung 275-281 Optionen 278-281 , 447 wie Samba einen langen Dateinamen zu einem 8.3-Dateinamen verkürzt 276 NBNS-Namensregistrierung verglichen mit Broadcast 11 NBT 11 , 73 Dienste 17 Standard 11 nbtstat-Dienstprogramm 240 Beispiele 15 , 16 net time-Befehl 145 , 359 net use-Befehl 145 , 151 Testen von Verbindungen mit 397 net view-Programm 236 Testen des Client-Durchsuchens 405
NetBEUI-Protokoll 10 ausführen zur gleichen Zeit wie NetBIOS over TCP/IP 73 NetBIOS eindeutige Ressourcentypen 16 Knotentypen 14 Namen Fehlerbehebung 415 übersetzen zwischen IP-Adresse oder DNSNamen und 192 verglichen mit DNS-Hostnamen 14 Ressourcennamen und -typen 15 Ressourcentypen für Gruppen 16 Sitzung, etablieren 23 Überblick 10 Windows 95/98/Me 86 netbios aliases-Option (smb.conf-Datei) 220 , 452 netbios name-Option (smb.conf-Datei) 210 , 452 NetBIOS over TCP/IP (siehe NBT) netbios scope-Option (smb.conf-Datei) 452 net-Programm 42 , 484-490 Network Information Service (siehe NIS) Network Time Protocol (NTP) 360 Netzmaske, einsetzen zur Fehlerbehebung 413 Netzwerkadapter 73 Netzwerkadressen Ermitteln Ihrer speziellen Adresse 414 Fehlerbehebung 413-415 Netzwerkbetrieb Komponenten Windows 2000 104 Windows XP 115 Konzepte, Windows (siehe Windows,
Netzwerkkonzepte) Optionen 214-219 Netzwerkumgebung 28 Netzwerkverkehr, überwachen (siehe tcpdump-Programm) neue Funktionen in Samba 2.2 38 in Samba 3.0 40 Neuigkeiten, Samba 48 Neukonfigurieren von Samba 55 Newsgroups, Samba 416 NFS, Installieren von Samba mit Unterstützung für 525 NIS (Network Information Service) 75 , 295 Konfigurationsoptionen 295 Server 32 nis homedir-Option (smb.conf-Datei) 295 , 452 NIS+ Installieren von Samba mit Unterstützung für 527 Server, Installieren von Samba mit Unterstützung zum Suchen 527 nmake-Befehl 437 nmap-Befehl (Unix) 77 nmbd-Daemon 3 , 41 , 64 , 480 automatisches Starten 65-69 BSD Unix 65 Darwin und Mac OS X 68 System V Unix 65 manuell starten 65 Starten durch inetd 70 testen 71 automatischer Start 69
Time-Service 469 nmbd-Protokolldatei 243 nmblookup-Programm 42 , 240 , 243 , 490 Testen der Clients 404 Testen der Server 403 Testen des Netzwerks 404 nobody-Zugang 302 non unix account range-Option (smb.confDatei) 452 nslookup-Befehl (Unix) 77 nsmb.conf-Datei 191 nsswitch, konfigurieren 326 nsswitch.conf-Datei 75 nt acl support-Option (smb.conf-Datei) 273 , 453 NT LAN Manager 1.0 22 nt pipe support-Option (smb.conf-Datei) 373 , 453 nt smb support-Option (smb.conf-Datei) 373 , 453 nt status support-Option (smb.conf-Datei) 453 ntconfig.pol-Datei 163 NT-specifische SMB-IPC$-Pipes 373 NTUSER.DAT-Datei 148 null passwords-Option (smb.conf-Datei) 323 , 453
O obey pam restrictions-Option (smb.confDatei) 453 od-Befehl 146 ole locking compatibility-Option (smb.confDatei) 373
Online-Handbuch 56 in unterschiedlichen Sprachen 526 only guest-Option (smb.conf-Datei) 453 only user-Option (smb.conf-Datei) 309 , 454 Open Directory Password Server 535 oplock break wait time-Option (smb.confDatei) 454 oplock contention limit-Option (smb.confDatei) 454 oplocks-Option (smb.conf-Datei) 286 , 454 opportunistische Sperren (siehe Sperren und Oplocks) os level-Option (smb.conf-Datei) 241 , 250 , 454 os2 driver map-Option (smb.conf-Datei) 455
P padc-Befehl 380 PAM (Pluggable Authentication Modules) 40 konfigurieren 331-334 pam password change-Option (smb.confDatei) 455 pam_stack.so-Modul 333 pam_winbind.so-Modul 333 panic action-Option (smb.conf-Datei) 373 , 455 par-Befehl 380 passdb backend-Option (smb.conf-Datei) 455 Pass-Through-Authentifizierung 35 passwd chat debug-Option (smb.conf-
Datei) 322 , 455 passwd chat-Option (smb.conf-Datei) 318 , 322 , 455 passwd program-Option (smb.conf-Datei) 322 , 456 passwd-Datei, manuelles Erzeugen der Einträge 134 PASSWD-Umgebungsvariable 176 password level-Option (smb.conf-Datei) 322 , 456 password server-Option (smb.conf-Datei) 168 , 311 , 456 path-Option (smb.conf-Datei) 213 , 456 PATH-Umgebungsvariable 56 pdbedit-Programm 42 , 492 PDC-Emulator 127 PDCs (siehe primäre Domänen-Controller) Pearce, Eric 16 , 168 pid directory-Option (smb.conf-Datei) 456 PIDs, hinzufügen zu Protokollzeilen 432 ping, Fehlerbehebung mit 384-389 p-Knoten (NetBios-Knotentyp) 14 Pluggable Authentication Modules (siehe PAM) Portnamen, angepasst 437 posix locking-Option (smb.conf-Datei) 286 , 456 POSIX.1e ACLs 272 POSIX-ACL-Unterstützung 441 postexec-Option (smb.conf-Datei) 291 , 457 postscript-Option (smb.conf-Datei) 355 , 457 preexec close-Option (smb.conf-Datei) 291 , 457
preexec-Option (smb.conf-Datei) 288 , 290 , 457 preferred master-Option (smb.conf-Datei) 249 , 457 preferred master-Parameter (smb.confDatei) 242 --prefix (configure-Skript-Option) 51 preload-Option (smb.conf-Datei) 248 , 457 preserve case-Option (smb.conf-Datei) 278 , 279 , 458 primäre Domänen-Controller (PDCs) 32 , 237 Samba als 127-132 smb.conf-Datei-Beispiel 421-424 Umgang mit Authentifizierung (siehe winbind) Verändern der smb.conf-Datei 128-132 primärer WINS-Server 34 Synchronisationsprobleme mit Samba 2.2 34 print command-Option (smb.conf-Datei) 340 , 356 , 458 print ok-Option (smb.conf-Datei) 459 printable-Option (smb.conf-Datei) 341 , 354 , 458 printcap name-Option (smb.conf-Datei) 357 , 458 printcap.local-Datei 349 printcap-Datei 444 Beispiel 355 printcap-Option (smb.conf-Datei) 357 printer admin-Option (smb.conf-Datei) 458 printer driver file-Option (smb.conf-Datei) 459 printer driver location-Option (smb.confDatei) 459
printer driver-Option (smb.conf-Datei) 459 printer name-Option (smb.conf-Datei) 354 , 459 printer-Option (smb.conf-Datei) 354 , 458 printing-Option (smb.conf-Datei) 353 , 459 private directory-Option (smb.conf-Datei) 459 prompt-Befehl 180 protocol-Option (smb.conf-Datei) 460 Protokolldateien 71 Ändern der Zeitstempel 432 Beispiel 221 Beispielausgabe der Stufen 2 und 3 378 Einstellen des Ablageortes der 445 Fehlersuche mit 377-380 Festlegen der maximalen Größe 449 Festlegen des Ablageverzeichnisses bei Samba 526 nmbd 243 Protokollierungsstufen 377-379 (siehe auch Protokollierung) Protokollierung (siehe auch Protokolldateien) aktivieren und deaktivieren 379 Hinzufügen der Prozess-ID 432 Konfigurationsoptionen 221-226 Untersuchen eines bestimmten Benutzers 432 Prozesse, betrachten in Unix 9 Prozess-IDs, hinzufügen zu Protokollzeilen 432 ps-Befehl (Unix) 9 Suchen nach Daemon-Prozessen mit 390 public-Option (smb.conf-Datei) 460 Punkt (.) (siehe auch Punkt-Dateien)
NetBIOS-Namen und 14 Punkt-Dateien 252 (siehe auch Verbergen von Dateien) verbergen 440 Punkt-zu-Punkt-Kommunikation 13 put-Befehl 178
Q queuepause command-Option (smb.confDatei) 358 , 460 queueresume command-Option (smb.confDatei) 358 , 460
R read bmpx-Option (smb.conf-Datei) 460 read list-Option (smb.conf-Datei) 301 , 303 , 460 read only-Option (smb.conf-Datei) 214 , 460 read raw-Option (smb.conf-Datei) 460 read size-Option (smb.conf-Datei) 461 readline( )-Unterstützung 527 realm-Option (smb.conf-Datei) 461 recurse-Befehl 180 Registry-Dateien 148 Einstellungen und Kennwörter 79 Relative Identifier (RID) 32 remote announce-Option (smb.conf-Datei) 244 , 251 , 461 remote browse sync-Option (smb.confDatei) 250 , 461
reservierte Adressbereiche 414 resolv.conf-Datei 77 , 231 Ressourcennamen und -typen (NetBIOS) 15 restrict anonymous-Option (smb.confDatei) 461 Richtlinien, definiert 126 Roaming-Profile 126 , 147-159 ändern in Mandatory-Profile 157 Benutzer an mehreren Clients angemeldet 149 Definieren eines Anmeldepfades für Windows NT/2000/XP-Clients 130 definitive Dokumentation 149 Einschränken der Benutzer beim Bearbeiten ihrer eigenen 157 Einstellen des Pfades auf das Verzeichnis (Windows NT/2000/XP) 446 Funktionsweise 148 konfigurieren Samba für 150-155 Windows 95/98/Me für 155 Windows NT/2000/XP für 156 mögliche Probleme 150 Optionen 158 smb.conf-Datei 145 Temporary Internet Files-Ordner 150 Warnung 148 Zeitsynchronisation 359 (siehe auch Mandatory-Profile) root directory-Option (smb.conf-Datei) 462 root dir-Option (smb.conf-Datei) 462 root postexec-Option (smb.conf-Datei) 291 , 462 root preexec close-Option (smb.confDatei) 290 , 462
root preexec-Option (smb.conf-Datei) 289 , 290 , 462 root-Option (smb.conf-Datei) 461 root-Zugänge (siehe auch Domänen-Administrator) Festlegen von Benutzern mit rootRechten 427 Hinzufügen des root-Benutzers zu Sambas Kennwortdatenbank 132 root-Zugriff 301 Roving-Profile (siehe Roaming-Profile) rpcclient-Befehle 495-498 rpcclient-Programm 42 , 494 rpm-Befehl (Unix) 46
S SAM (Security Account Manager) 32 Datenbank 132 Samba Aktualisieren der Installationen 55 ausführen auf einem MultihomedSystem 214 Beispiele einfaches Netzwerk 4 Freigeben eines Druckers 8 Freigeben eines Verzeichnisdienstes 5-7 beziehen 44 Definition 2 Distribution, Überblick 41 als Domänen-Member-Server 35 externen Anwendungen den Zugriff auf Samba-Funktionen erlauben 526 Fehlerbehebung (siehe Fehlerbehebung bei Samba)
herunterladen 48 in einer Cluster-Umgebung 464 (siehe auch Multihomed-System; mehrere Subnetze) 464 installieren (siehe Installieren von Samba) kompilieren (siehe Kompilieren von Samba) Konfigurationsdatei (siehe smb.confDatei) konfigurieren (siehe Konfigurieren von Samba) Online-Handbuch 56 in verschiedenen Sprachen 526 Überblick 1-44 Variablen (siehe smb.conf-Datei, Variablen) Vorteile des Einsatzes von 3 Website 44 Samba 2.2 in einer Domäne mit einem Windows 2000-Server mit Native Mode 36 neue Funktionen 38 Probleme mit Active Directory 36 , 127 Samba 3.0 neue Funktionen 40 Rollen 41 veraltete Optionen block size 429 character set 430 client code page 430 code page directory 431 coding system 431 domain guest group 436 force unknown acl user 439
im Zusammenhang mit SSL 465-467 ldap admin dn 443 ldap filter 443 ldap port 443 ldap server 443 ldap ssl 444 ldap suffix 444 nt smb support 453 status 467 unix extensions 469 userhosts 470 valid chars 471 Samba Web Administration Tool (siehe SWAT) Samba-BDC-HOWTO.html 128 Samba-PDC-HOWTO.html 128 Sambas NT LM 0.12 22 Samba-Server Anlegen von Verzeichnissen auf 132 Dienste 2 hinzufügen zu Arbeitsgruppe, Beispiel für Konfigurationsdatei 420 neustarten 132 Senden eines Druck-Jobs 339 Verbinden von Windows 2000 113 Windows 95/98/Me 90 Windows NT 102 Windows XP 123 Verbindungslisten (siehe smbstatusProgramm) SASL (Simple Authentication and Security Layer) standard 535 --sbindir (configure-Skript-Option) 51 Schnittstellenliste 429 schreibgeschützter Zugriff, Festlegen von
Benutzern 460 secrets.tdb-Datei 164 Security Access Token (SAT) 33 Security Account Manager (SAM) 32 security mask-Option (smb.conf-Datei) 274 , 463 security-Option (smb.conf-Datei) 307 , 462 sendfile( )-Systemaufruf 528 Server Message Block- (SMB) Protokoll (siehe SMB) server string-Option (smb.conf-Datei) 211 , 463 Server-Ankündigungen 241 set directory-Option (smb.conf-Datei) 373 , 463 share modes-Option (smb.conf-Datei) 463 Sharpe, Richard 20 short preserve case-Option (smb.confDatei) 278 , 279 , 463 show add printer wizard-Option (smb.confDatei) 463 shutdown script-Option (smb.conf-Datei) 464 Sicherheit Benutzerebene für Windows 95/98/Me 135 Samba-Sicherheitsstufen Benutzer (siehe Sicherheit auf Benutzerebene) Domäne (siehe Sicherheit auf Domänenebene) Freigabe (siehe Sicherheit auf Freigabeebene) Server (siehe Sicherheit auf Serverebene) (siehe auch Authentifizierung)
Sicherheit auf Benutzerebene 306 , 310 für Windows 95/98/Me 135 verglichen mit Sicherheit auf Freigabeebene 170 Sicherheit auf Domänenebene 307 , 312 Sicherheit auf Freigabeebene 306 Optionen 309 verglichen mit Sicherheit auf Benutzerebene 170 Sicherheit auf Serverebene 306 , 311 Sicherheits-IDs (SIDs) 32 Sicherheitsmodelle, Unix verglichen mit Windows 266 Sicherheitsprobleme Deaktivieren von Oplocks in smb.confDatei 62 manuelles Erzeugen der Einträge für / etc/passwd und smbpasswd 134 Sicherungssuchdienste 29 , 237 SIDs (Sicherheits-Identifiers) 32 Sitzungsdienst, definiert 11 Sitzungsdienste (NBT) definiert 17 Hinweise 19 Sitzungsfunktionen 18 Sitzungsparameter, einstellen 25 SMB 2 Befehlsformat 21 CIFS und 22 Clients 22 einfache Verbindung 23 Gruppen 16 Header-Felder 20 Header-Format 20 Nachrichtenformat 20
Netzwerk, Überblick 9-19 Online-Zusammenfassung 20 Pakete 17 Protokoll Aushandeln einer Protokollvariante 24 Überblick 19-27 Versionen 21 zusätzliche Informationen 21 Server 22 Verbindungen, Fehlerbehebung 394-400 smb passwd file-Option (smb.conf-Datei) 323 , 464 smb.conf-Datei 197-226 [global]-Abschnitt 204 [printers]-Abschnitt 205 Ablageort der Paketinstallation 45 Änderungen zur Laufzeit 200 Beispiele 197 Aktivieren von Samba als WINS-Server 419 Einrichten von Samba als DomänenMember-Server 424 Einrichten von Samba als PDC 421-424 Konfigurieren von Samba für die Benutzung eines anderen WINS-Servers 420 Server-Konfigurationsdatei 208-211 Verzeichnisfreigabe 211-214 Dateistruktur 198-201 Deaktivieren von Oplocks 62 Einstieg 58-63 erzeugen und verändern (siehe SWAT) Freigaben 131 , 205 Großschreibung 199 Hinzufügen von Benutzerkennwörtern 79 include-Option 203 Kommentare 200
Konfigurieren von winbind 326 Mac OS X 540 Namen in eckigen Klammern 198 (siehe auch Freigaben, Abschnitte in smb. conf-Datei) Namensauflösung 230 Optionen 199 , 206-208 ACLs 273-275 Datei- und Verzeichnisberechtigungen 262266 Dateisystem 255-257 Drucken 352-358 Durchsuchen 246-251 Internationalisierung 364-367 Kennwort 320-324 Namensauflösung 232-235 Namensverkürzung 278-281 Netzwerkbetrieb 214-219 NIS 295 Protokollierung 221-226 Punkt-Dateien 252 Server 209 Sperren und Oplocks 284-288 Verbindungsskripten 290-291 Verzeichnisfreigabe 212 virtuelle Server 220 winbind 334-337 Zeitsynchronisation 361-362 Zugriffssteuerung 302-304 Roaming-Profile 145 Samba so ändern, dass es DomänenMember-Server ist 164 Samba so ändern, dass es PDC ist 128132 signifikante Änderungen vornehmen 201
smbmount-Programm und 184 smbsh und 189 testen 63 Variablen 201-204 Beispiele für Benutzung 203 Tabelle 202 verwendet zur Laufzeit 147 verschlüsselte Kennwörter und 59 WINS-Unterstützung 76 Zeilenfortsetzung 200 smbcacls-Programm 42 , 498 smbclient-Befehle 177 smbclient-Programm 42 , 71 , 169 , 174184 , 500-507 Auflisten von Diensten 174 Authentifizieren mit 175 Dateiübertragung 178 Erzeugen und Wiederherstellen von Backups 181-184 interaktive Sitzung 177-180 programmieren mit 180 Senden einer Datei an den Drucker 343 Sicherheit und 176 testen Durchsuchen 401 lokal mit 394 Verbindungen mit 396 verglichen mit smbfs und smbsh 174 smbcontrol-Programm 42 , 507 smbd-Daemon 3 , 41 , 64 , 478 automatisch starten 65-69 BSD-Unix 65 Darwin und Mac OS X 68 System V Unix 65 manuell starten 65 prüfen mit telnet 392
starten durch inetd 70 testen 71 automatischer Start 69 smbfs-Dateisystem 169 , 183-188 automatisch mounten 186 Installieren von Samba mit Unterstützung für 528 verglichen mit smbclient 174 smbgroupedit-Programm 43 , 509 smbmnt-Programm 43 , 183 , 510 smbmount-Programm 43 , 184 , 510 Installieren von Samba mit Unterstützung für 528 Optionen 187 smb.conf-Datei 184 SMBnegprot-Anforderung 24 smbpasswd-Datei 132 , 315-317 manuelles Erzeugen der Einträge 134 smbpasswd-Programm 43 , 59 , 512 smbprint.sysv 349 smbprint-Programm 349 SMB-Schnüffler (Ethereal) 21 SMBSesssetupX-Befehl 25 smbsh-Programm 43 , 169 , 188 , 515 Installieren von Samba mit Unterstützung für 528 interaktive Sitzung 189 smb.conf-Datei 189 verglichen mit smbclient 174 smbspool 349 smbspool-Dienstprogramm 351 smbspool-Programm 43 , 516 smbstatus-Programm 9 , 43 , 516 smbtar-Programm 43 , 517 SMBtconX-Nachricht 26
smbumount-Programm 43 , 518 smbutil-Programm 169 , 190 Optionen 193 Testen der Druckkonfiguration 344 smbwrapper-Bibliothek 188 , 528 socket address-Option (smb.conf-Datei) 464 socket options-Option (smb.conf-Datei) 464 source environment-Option (smb.confDatei) 464 source/config.status-Datei 55 Sperren und Oplocks 281-288 Einstellen von Dateisperren 445 Fehlschlagen von Oplock 283 Festlegen des Verzeichnisses, in dem Samba Sperrdateien ablegt 526 komplizierterer Tuning-Parameter 454 Freigeben eines Oplocks 454 Konfigurationsoptionen 284-288 spinlocks 528 Unix und Oplocks 284 Vorgang des opportunistischen Sperrens 282 Sperren von Dateien (siehe Sperren und Oplocks) Spinlocks 528 SSL Installieren von Samba mit Unterstützung für 528 Optionen 465-467 ssl CA certDir-Option (smb.conf-Datei) 465 ssl CA certFile-Option (smb.conf-Datei) 465 ssl ciphers-Option (smb.conf-Datei) 465 ssl client cert-Option (smb.conf-Datei) 465 ssl client key-Option (smb.conf-Datei) 465
ssl compatibility-Option (smb.conf-Datei) 466 ssl hosts resign-Option (smb.conf-Datei) 466 ssl hosts-Option (smb.conf-Datei) 466 ssl require clientcert-Option (smb.confDatei) 466 ssl require servercert-Option (smb.confDatei) 466 ssl server cert-Option (smb.conf-Datei) 466 ssl server key-Option (smb.conf-Datei) 467 ssl version-Option (smb.conf-Datei) 467 ssl-Option (smb.conf-Datei) 465 Standardgerätemodus, einstellen 433 stat cache size-Option (smb.conf-Datei) 375 , 467 stat cache-Option (smb.conf-Datei) 375 , 467 status (smb.conf-Datei) 374 status-Option (smb.conf-Datei) 467 Stern, Hal 407 Steuern des Zugriffs auf Freigaben 300-304 strace-Befehl 380 strict allocate-Option (smb.conf-Datei) 467 strict locking-Option (smb.conf-Datei) 285 , 468 strict sync-Option (smb.conf-Datei) 374 , 468 strip dot-Option (smb.conf-Datei) 374 , 468 Subnetze, Arbeitsgruppen, die mehrere umfassen 36 Suchdienste Domänen-Hauptsuchdienst (siehe Domänen-Hauptsuchdienst) lokale Hauptsuchdienste (siehe lokaler
Hauptsuchdienst) Sicherungs (siehe Sicherungssuchdienste) Suchdienstwahlen 29 , 238-241 , 445 Suchlisten 28 , 236 Druckernamen 444 Festlegen des Verzeichnisses, in dem Samba diese ablegt 527 Festlegen einer Liste von Freigaben 457 Festlegen von Freigaben in 428 , 429 synchronisieren mit allen DomänenHauptsuchdiensten 437 unsichtbare Freigaben 245 Suchpfade, einstellen 56 Superuser- (root) Zugriff 301 SWAT aktivieren 56 benutzen 60-62 festlegen, wo Dateien zu installieren sind für 528 Login 60 symbolische Links 254 erzeugen, bevor Clients in das Netzwerk eingefügt werden 154 in Dateifreigaben 438 symlinks-Option (smb.conf-Datei) 254 sync always-Option (smb.conf-Datei) 374 , 468 Synchronisation, Kennwort (siehe Kennwörter, Synchronisation) Synchronisationsprobleme mit WINSServern in Samba 34 , 76 syslog 223 Fehlerprotokollierung, Installieren von Samba mit Unterstützung für 529 syslog only-Option (smb.conf-Datei) 226 ,
468 syslog.conf-Datei 223 syslog-Option (smb.conf-Datei) 226 , 468 System V Unix automatisches Starten der SambaDaemons 65 Drucker 351 Systemgruppendatei 298 Systemrichtlinien 160-163 Windows Me 163 Systemrichtlinien-Editor 160-163
T TCP, Fehlerbehebung 389 TCP/IP hinzufügen zu Windows 95/98/MeNetzwerk 82 konfigurieren für Windows 2000 106 konfigurieren für Windows 95/98/Me 82 konfigurieren für Windows NT 95 konfigurieren für Windows XP 116 Windows NT 93 tcpdump-Programm 381 Beispiel 23 herunterladen 23 telnet, Prüfen von smbd mit 392 template homedir-Option (smb.conf-Datei) 332 , 337 , 468 template shell-Option (smb.conf-Datei) 332 , 337 , 469 Temporary Internet Files-Ordner 150 Testen von Samba (siehe testparmProgramm; Fehlerbehebung bei Samba)
testparm-Programm 43 , 63 , 132 , 518 Testen der Daemons mit 392 testprns-Programm 43 , 519 Testprogramme, Fehlerbehebung mit 380383 Thompson, Robert Bruce 93 time offset-Option (smb.conf-Datei) 361 , 469 time server-Option (smb.conf-Datei) 361 , 469 Time To Live (TTL, Lebensdauer) 450 , 451 Time-Service 360 konfigurieren in Samba für den Netzwerkeinsatz 131 timestamp logs-Option (smb.conf-Datei) 225 , 469 total print jobs-Option (smb.conf-Datei) 469 trace-Befehl 380 Tree Identifier (TID), definiert 24 Tridgell, Andrew 2 , 381 truss-Befehl 380 tusc-Befehl 380
U Überschreiben von Dateien (siehe Sperren und Oplocks) Übersetzen zwischen IP-Adressen oder DNS-Namen und NetBIOS-Namen 192 umasks 259 Umgebungsvariablen, zwingen von Samba zum Einlesen der Liste der 464 UNC (Universal Naming Convention), definiert 6
ungültige Benutzer, Festlegen der Liste der 300 Unicode 483 Uniform Resource Locators (siehe URLs, definiert) Unix ACLs 272 Berechtigungsbits, Zusammenfassung 259 Betrachten von Prozessen 9 CIFS-Erweiterungen 39 Dateiberechtigungen 257-266 verglichen mit ACLs 32 Konfigurieren von Clients zum Zugriff auf freigegebene Ressourcen 169-196 unix extensions-Option (smb.conf-Datei) 469 unix password sync-Option (smb.confDatei) 317 , 321 , 469 unix2dos-Programm 146 , 179 Unterstützung für Festplattenquota 527 update encrypted-Option (smb.conf-Datei) 323 , 470 URLs, definiert 7 use client driver-Option (smb.conf-Datei) 470 use mmap-Option (smb.conf-Datei) 470 use rhosts-Option (smb.conf-Datei) 324 , 470 use sendfile-Option (smb.conf-Datei) 470 USER.DAT-Datei 148 username level-Option (smb.conf-Datei) 305 , 471 username map-Option (smb.conf-Datei) 305 , 471 username-Option (smb.conf-Datei) 310 ,
470 user-Option (smb.conf-Datei) 470 users-Option (smb.conf-Datei) 471 USER-Umgebungsvariable 176 utmp directory-Option (smb.conf-Datei) 471 utmp-Datei 529 utmp-Option (smb.conf-Datei) 471
V valid chars-Option (smb.conf-Datei) 366 , 471 valid users-Option (smb.conf-Datei) 297 , 303 , 472 Variablen, verwendet zur Laufzeit in smb. conf-Datei (siehe smb.conf-Datei, Variablen) Verbergen von Dateien 252-254 Verbindungen Festlegen von Zeitbegrenzungen für unbenutzte 432 verbieten 434 Verbindungsskripte 288-291 Optionen 290-291 Überwachen des Verzeichnisinhalts 289 Verhindern des Dateiüberschreibens (siehe Sperren und Oplocks) verschlüsselte Kennwörter deaktivieren 314 smb.conf-Datei und 59 verwalten 512 (siehe auch smbpasswd-Programm) (siehe auch Kennwörter)
Verteidigung des Hostnamens 13 Vertrauensbeziehungen 34 vertrauenswürdige Domänen 428 Verwalten von Verbindungen zu Freigaben (siehe Verbindungsskripten) Verzeichnis, Beispiel für Freigabe 5-7 Verzeichnisberechtigungen 442 Optionen 262-266 Verzeichnisfreigabekonfiguration 211-214 Verzeichnisrekursion 180 Verzeichnisse anlegen auf dem Samba-Server 132 Einstellen der maximal zulässigen Berechtigungen 435 Einstellen der Pfade 435 Home, einstellen 446 löschen, wenn unsichtbare Dateien vorhanden sind 253 , 434 Überwachen des Inhalts 289 verbinden mit Laufwerksbuchstaben 145 zwischenspeichern zur Leistungssteigerung 439 veto files-Option (smb.conf-Datei) 253 , 257 , 472 veto oplock files-Option (smb.conf-Datei) 283 , 284 , 287 , 472 vfs object-Option (smb.conf-Datei) 472 vfs options-Option (smb.conf-Datei) 472 vim-Texteditor 146 virtuelle Server 220 Konfigurationsoptionen 220 vi-Texteditor 146 volume-Option (smb.conf-Datei) 214 , 472 VPN (Virtuelles Privates Netzwerk) 528
W wbinfo-Programm 43 , 519 wide links-Option (smb.conf-Datei) 254 , 256 , 472 winbind 39 Authentifizierung mit 324-337 Installieren 325 Installieren von Samba mit Unterstützung für 529 Konfigurationsoptionen 334-337 Konfigurieren in smb.conf-Datei 326 korrekte Funktionsweise überprüfen 328330 RID-Zuordnungsdatei 327 winbind cache time-Option (smb.confDatei) 336 , 473 winbind enum groups-Option (smb.confDatei) 473 winbind enum users-Option (smb.confDatei) 473 winbind gid-Option (smb.conf-Datei) 336 , 473 winbind separator-Option (smb.conf-Datei) 335 , 473 winbind uid-Option (smb.conf-Datei) 335 , 473 winbindd-Daemon 42 , 43 , 482 Windows .ini-Dateien 197 Benutzer-Account-Dateien 30 Betriebssysteme und Standard für Kennwortformat 313 Domäne mit einem lokalen Hauptsuchdienst und einem lokalen
Sicherungssuchdienst (Grafik) 35 Drucker, Einrichten 8 Komponenten 73 Konfigurieren von Clients für den Zugriff auf freigegebene Ressourcen 72-125 Netzwerkkonzepte 72-80 Registry-Einstellungen und Kennwörter 79 Windows 2000 ACLs 266-275 Anlegen von Benutzern 110 Arbeitsgruppen 108 Bindungen 106 Client-Verbindung zum Samba-Server 113 Computernamen 108 DNS-Konfiguration 107 Domänenanmeldungen 140-142 einrichten 104-114 Einstellen des Pfads auf das Verzeichnis der Roaming-Profile 446 Freigeben von Dateien 172 Einstellen der Berechtigungen 173 Identifizierung des Knotentyps, ipconfig / all-Befehl 14 IP-Adressen 107 konfigurieren für Roaming-Profile 156 Konfigurieren von TCP/IP 106 LMHOSTS-Datei 107 Netzwerkkomponenten 104 Registry-Datei 148 Server Betrieb im Native Mode 36 PDC-Emulationsmodus 36 Sicherheitsmodell (siehe ACLs) WINS-Server 107
Windows 95/98/Me Authentifizierung 30 Benutzername und Kennwort 88 Bindungen 86 DNS-Konfiguration 85 Domänenanmeldungen 134-138 Einrichten 80-93 Einrichten des Computernamens 87 Einstellen der Arbeitsgruppe 87 Freigeben von Dateien 170 Hinzufügen von TCP/IP 82 Identifizierung des Knotentyps 14 IP-Adressen 84 Konfigurieren für Roaming-Profile 155 Konfigurieren von TCP/IP 82 LMHOSTS-Datei 86 NetBIOS 86 Registry-Datei 148 Sicherheit auf Benutzerebene für 135 Sicherheitsmodell 266 Systemrichtlinien 163 WINS-Konfiguration 84 Zugriff auf Samba-Server 90 (siehe auch Windows) Windows Explorer, Testen von Verbindungen mit 399 Windows Internet Naming Service (WINS) Architecture and Capacity Planning 229 Windows NT ACLs 266-275 Anlegen eines Benutzers 101 Arbeitsgruppen 99 Bindungen 99 Computernamen 99 DNS-Konfiguration 98 Domänen 126-168
Anmeldungen 138-140 Überblick 31-36 einrichten 93-104 Einstellen des Pfads auf das Verzeichnis der Roaming-Profile 446 Freigeben von Dateien 172 Einrichten der Berechtigungen 173 grundlegende Konfiguration 93 Identifizierung des Knotentyps, ipconfig/ all-Befehl 14 Installieren des Arbeitsstationsdienstes 94 IP-Adressen 96 Konfigurieren für Roaming-Profile 156 Konfigurieren von TCP/IP 95 LMHOSTS-Datei 98 Registry-Datei 148 Sicherheitsmodell 32 (siehe auch ACLs) TCP/IP installieren 93 Verbinden mit einem Samba-Server 102 WINS-Server 96 Windows NT-Domänenoptionen 166 Windows Time Service 360 Windows XP ACLs 266-275 Anlegen von Benutzern 121 Arbeitsgruppen 119 Bindungen 116 Computernamen 119 DNS-Konfiguration 117 Domänenanmeldungen 142-144 einrichten 115-125 Einstellen des Pfads auf das Verzeichnis der Roaming-Profile 446 Freigeben von Dateien 172
Einrichten der Berechtigungen 173 Home-Version, Probleme in einer Domänenumgebung 142 Identifizierung des Knotentyps, ipconfig/ all-Befehl 14 IP-Adressen 117 Konfigurieren für Roaming-Profile 156 Konfigurieren von TCP/IP 116 LMHOSTS-Datei 118 Netzwerkkomponenten 115 Registry-Datei 148 Sicherheitsmodell (siehe ACLs) Verbinden mit Samba-Server 123 WINS-Server 118 Windows-Arbeitsgruppen (siehe Arbeitsgruppen) Windows-Nachrichtendienst 367-369 winipcfg-Befehl (Windows 95/98/Me) 14 WinPopup-Werkzeug 367 WINS 34 Client- und Server-Interaktion 229 Konfiguration, Windows 95/98/Me 84 Proxy, konfigurieren 232 Replikation 40 Unterstützung, smb.conf-Datei 76 wins hook-Option (smb.conf-Datei) 234 , 473 wins proxy-Option (smb.conf-Datei) 232 , 234 , 474 wins server-Option (smb.conf-Datei) 232 , 233 , 474 wins support-Option (smb.conf-Datei) 233 , 474 wins support-Parameter (smb.conf-Datei) 231 WINS-Server
Aktivieren von Samba als, Konfigurationsdateibeispiel 419 Einrichten von Samba als 231 Konfigurieren eines DNS-Proxy 231 Konfigurieren von Samba zur Benutzung eines anderen 232 Konfigurationsdateibeispiel 420 mehrere 34 primäre (siehe primärer WINS-Server) Synchronisationsprobleme in Samba 76 Windows 2000 107 Windows NT 96 Windows XP 118 with Funktion-Option, Konfigurieren von Samba 50 --with-acl-support (configure-SkriptOption) 525 --with-afs (configure-Skript-Option) 525 --with-automount (configure-SkriptOption) 525 --with-codepagedir (configure-SkriptOption) 525 --with-configdir (configure-Skript-Option) 525 --with-dce-dfs (configure-Skript-Option) 525 --with-fhs (configure-Skript-Option) 525 --with-included-popt (configure-SkriptOption) 525 --with-krb4 (configure-Skript-Option) 525 --with-krb5 (configure-Skript-Option) 526 --with-ldapsam (configure-Skript-Option) 526 --with-libiconv (configure-Skript-Option) 526 --with-libsmbclient (configure-Skript-
Option) 526 --with-lockdir (configure-Skript-Option) 526 --with-logfilebase (configure-SkriptOption) 526 --with-manpages-langs (configure-SkriptOption) 526 --with-msdfs (configure-Skript-Option) 50 , 526 --with-nisplus-home (configure-SkriptOption) 527 --with-nisplussam (configure-SkriptOption) 527 without Funktion-Option, Konfigurieren von Samba 50 --with-pam (configure-Skript-Option) 527 --with-pam_smbpass (configure-SkriptOption) 527 --with-piddir (configure-Skript-Option) 527 --with-privatedir (configure-Skript-Option) 527 --with-profiling-data (configure-SkriptOption) 527 --with-quotas (configure-Skript-Option) 527 --with-readline (configure-Skript-Option) 527 --with-sendfile-support (configure-SkriptOption) 528 --with-smbmount (configure-SkriptOption) 51 , 528 --with-smbwrapper (configure-SkriptOption) 51 , 528 --with-spinlocks (configure-Skript-Option) 528 --with-ssl (configure-Skript-Option) 528
--with-sslinc (configure-Skript-Option) 528 --with-ssllib (configure-Skript-Option) 528 --with-swatdir (configure-Skript-Option) 528 --with-syslog (configure-Skript-Option) 529 --with-tdbsam (configure-Skript-Option) 529 --with-utmp (configure-Skript-Option) 529 --with-winbind (configure-Skript-Option) 529 workgroup-Option (smb.conf-Datei) 474 workgroup-Parameter (smb.conf-Datei) 211 writable-Option (smb.conf-Datei) 214 , 474 write cache size-Option (smb.conf-Datei) 474 write list-Option (smb.conf-Datei) 301 , 303 , 474 write ok-Option (smb.conf-Datei) 214 , 475 write raw-Option (smb.conf-Datei) 475 writeable-Option (smb.conf-Datei) 214
X XFS-Dateisystem 39 xinetd-Daemon 56
Z Zeichensätze, übersetzen 430 Zeitstempel ändern in Protokollen 432 Bedeutung von 149
Zeitsynchronisation 359-362 Zeitsynchronisationsoptionen 361-362 Zugänge (siehe Computerzugänge, hinzufügen; Benutzer) Zugriff, steuern (siehe ACLs; Steuern des Zugriffs auf Freigaben) Zugriffskontrolleinträge (Access Control Entries, ACEs) 32 , 266 Zugriffskontrolllisten (Access Control Lists, siehe ACLs) Zugriffssteuerungsoptionen 302-304 Zuordnen eines frei formatierten ClientBenutzernamens zu einem UnixBenutzernamen 305 Zuweisen eines Netzlaufwerks (siehe Laufwerksbuchstabe, verbinden eines Verzeichnisses mit)
Anhang A Beispielkonfigurationsdateien Weiter vorn in diesem Buch haben wir Ihnen gezeigt, wie die Parameter in einer SambaKonfigurationsdatei gesetzt werden. Es fehlt jedoch noch ein Beispiel für eine vollständige Datei, die tatsächlich auf einem Server verwendet werden kann. In diesem Anhang finden Sie Beispiele für komplette Konfigurationsdateien zum Ausführen von Samba in den verschiedenen von uns vorgestellten Modi. Wenn Sie eines dieser Beispiele benutzen, können Sie Samba als Arbeitsgruppen-Authentifizierungs-Server, als Arbeitsgruppen-Server, als primären DomänenController oder als Domänen-Member-Server einsetzen. Wir haben die Beispiele einfach gehalten, damit sie sich möglichst universell verwenden lassen. Sie können sie als Vorlagen benutzen, um sie an Ihre eigenen Bedürfnisse anzupassen und ohne weitere Verzögerungen einen Samba-Server aufzusetzen. Die Kommentare in den Dateien geben an, was in welcher Weise geändert werden muss, um auf einem bestimmten System in Ihrem Netzwerk zu funktionieren.
Samba in einer Arbeitsgruppe Wenn Ihr Netzwerk als Arbeitsgruppe konfiguriert
wurde, ist das Hinzufügen eines Samba-Servers recht einfach. Samba erlaubt es Ihnen sogar, weitere Funktionen aufzunehmen, wie etwa Sicherheit auf Benutzerebene und WINS, die normalerweise einen teuren Windows NT/2000Server erfordern würden.
Authentifizierung und WINS-Server In einer Arbeitsgruppe kann Samba so eingerichtet werden, dass es Sicherheit auf Freigabenebene ermöglicht und keinen WINSNamensdienst anbietet. Das funktioniert und ist einfach, allerdings empfehlen wir im Allgemeinen Sicherheitsmaßnahmen auf Benutzerebene, damit Windows 95/98/Me-Systeme diese nutzen können. Außerdem ist nur ein einziger Parameter nötig, um Samba zu einem WINS-Server zu machen und dadurch die Effizienz des Netzwerks zu erhöhen. Die folgende Konfigurationsdatei erledigt dies: [global] # Ersetzen Sie "toltec" durch den Hostnamen Ihres Systems.
netbios name = toltec
# Ersetzen Sie "METRAN" durch den Namen Ihrer Arbeitsgruppe.
workgroup = METRAN
security = user encrypt passwords = yes
# Ein WINS-Server wird ausgeführt.
wins support = yes
# Die folgenden drei Zeilen stellen sicher, dass der Samba# Server die Rolle des Hauptsuchdienstes erhält. # Achten Sie darauf, dass das OSLevel bei keinem anderen Samba-Server # höher gesetzt wurde als hier.
local master = yes
preferred master = yes os level = 65
# Home-Verzeichnisse auf dem Server werden den Benutzern zur Verfügung gestellt.
[homes] comment = %u's Home-Verzeichnis browsable = no read only = no map archive = yes
# Dies ist ein freigegebenes Verzeichnis, das allen Benutzern zur Verfügung steht. # Setzen Sie Ihren eigenen Freigabenamen und -pfad ein.
[d] path = /d
create mask = 0700 read only = no
Im Allgemeinen werden Sie eine ähnliche Konfigurationsdatei verwenden, wenn Sie Ihren ersten Samba-Server in die Arbeitsgruppe einfügen.
Arbeitsgruppen-Server Die Dinge liegen ein wenig anders, wenn ein anderes System - entweder ein Samba-Server oder ein Windows NT/2000-Server - bereits WINS und/oder die Authentifizierung erledigt. In diesem Fall wird Samba so konfiguriert, dass es diesen Server für WINS verwendet. Folgende Konfigurationsdatei dient dazu: [global] # Ersetzen Sie "mixtec" durch den Hostnamen Ihres Systems.
netbios name = mixtec
# Ersetzen Sie "METRAN" durch Ihren Arbeitsgruppennamen.
workgroup = METRAN
security = user encrypt passwords = yes
# Ersetzen Sie "172.16.1.1" durch die IP-Adresse # Ihres WINS-Servers. Gibt es keinen, lassen Sie # diese Zeile weg.
wins server = 172.16.1.1
# Das OS-Level ist auf 17 gesetzt, damit # dieses System höher liegt als alle Windows# Versionen, nicht jedoch als der Samba-Server,
# der die Konfigurationsdatei aus dem # vorherigen Abschnitt verwendet.
os level = 17
[homes] comment = %u's Home-Verzeichnis browsable = no read only = no
# Dies ist ein freigegebenes Verzeichnis, auf das alle Benutzer zugreifen dürfen. # Verwenden Sie Ihren eigenen Freigabenamen und -pfad.
[d] path = /d create mask = 0700 read only = no
Wenn Sie bereits einen Server in Ihrer Arbeitsgruppe haben, der die Authentifizierung und WINS erledigt, verwenden Sie diese Konfigurationsdatei, wenn Sie weitere SambaServer in die Arbeitsgruppe aufnehmen.
Samba in einer Windows NT-Domäne Beim Einsatz in einer Windows NT-Domäne kann Samba entweder als primärer DomänenController oder als Domänen-Member-Server agieren.
Primärer Domänen-Controller Das Einrichten von Samba als primären DomänenController ist komplizierter als die anderen Konfigurationen. Der zusätzliche Aufwand wird jedoch dadurch wettgemacht, dass Sie ein sichereres Netzwerk sowie weitere Funktionen etwa Anmelde-Skripten und Roaming-Profile erhalten. Wir fügen in die folgende Konfigurationsdatei außerdem Unterstützung für eine Microsoft-Dfs-Freigabe ein: [global] # Ersetzen Sie "toltec" durch den Hostnamen Ihres Systems.
netbios name = toltec
# Ersetzen Sie "METRAN" durch den Namen Ihrer Windows NT-Domäne.
workgroup = METRAN
# Ein WINS-Server wird ausgeführt.
wins support = yes
# Der Server agiert immer als lokaler Hauptsuchdienst und # Domänen-Hauptsuchdienst. Erlauben Sie es anderen # Systemen nicht, diese Rollen zu übernehmen!
domain master = yes local master = yes
preferred master = yes os level = 255
# Ausführen der DomänenAuthentifizierung.
security = user encrypt passwords = yes domain logons = yes
# Standort der Benutzerprofile für Windows NT/2000/XP.
logon path = \\%L\profiles\%u\%m
# Windows-Home-Verzeichnisse der Benutzer und Ablageort # der Win95/98/Me-Roaming-Profile.
logon drive = G: logon home = \\toltec\%u\. win_profile\%m
# Die folgende Zeile ist optional, da # Samba immer einen NetBIOS-TimeService anbietet. # Auf Grund der folgenden Zeile steht der Dienst jedoch explizit zur Verfügung:
time server = yes
# Das für alle Benutzer verwendete Anmelde-Skript, # relativ zum Freigabeverzeichnis [netlogon].
logon script = logon.bat
# Die Gruppe, die administrative
Benutzer identifiziert. # Haben Sie Domänen-Benutzer in der Gruppe Domain Admins, # setzen Sie diese hier an Stelle von "jay" ein.
domain admin group = root jay
# Zum automatischen Anlegen von Maschinenkonten. # Dieses Beispiel funktioniert unter Linux. Für andere Host# Betriebssysteme brauchen Sie möglicherweise einen anderen # Befehl.
add user script = /usr/sbin/ useradd -d /dev/null -g 100 -s /bin/false -M %u
# Stellt Unterstützung für Microsoft Dfs bereit.
host msdfs = yes
# Die Freigabe netlogon wird benötigt, damit das # System als primärer Domänen-Controller arbeiten kann. # Achten Sie darauf, dass das Verzeichnis, das für den Pfad # verwendet wird, auch wirklich existiert.
[netlogon] path = /usr/local/samba/lib/ netlogon writable = no browsable = no
# Die Freigabe profiles dient zum Ablegen der # Windows NT/2000/XP-Roaming-Profile. # Verwenden Sie Ihren eigenen Pfad und
achten Sie darauf, # dass das Verzeichnis existiert.
[profiles] path = /home/samba-ntprof writable = yes create mask = 0600 directory mask = 0700 browsable = no
[homes] comment = Home-Verzeichnis browsable = no read only = no map archive = yes
# Die Dfs-Freigabe. # Verwenden Sie Ihren eigenen Pfad und achten Sie darauf,
# dass das Verzeichnis existiert.
[dfs] comment = Dfs-Freigabe path = /usr/local/samba/dfs msdfs root = yes
# Ein freigegebenes Verzeichnis, das allen Domänen-Benutzern zur Verfügung steht. # Verwenden Sie Ihren eigenen Freigabenamen und -pfad.
[d] comment = %u's Home-Verzeichnis path = /d create mask = 0700 read only = no
In Kapitel 4 finden Sie weitere Informationen zum Konfigurieren von Samba als primären Domänen-Controller und in Kapitel 8 zum Einrichten einer Microsoft Dfs-Freigabe.
Domänen-Member-Server In eine Domäne, die bereits einen Samba-PDC oder einen Windows NT/2000-Server-PDC besitzt, können mit der folgenden Konfigurationsdatei zusätzliche Samba-Server als Domänen-MemberServer aufgenommen werden: [global] # Ersetzen Sie "mixtec" durch den Hostnamen des Systems.
netbios name = mixtec
# Ersetzen Sie "METRAN" durch den Namen Ihrer Domäne.
workgroup = METRAN
# Ersetzen Sie "172.16.1.1" durch die
# IP-Adresse Ihres WINS-Servers.
wins server = 172.16.1.1
os level = 33
security = domain encrypt passwords = yes password server = *
# Home-Verzeichnisse.
[homes] comment = %u's Home-Verzeichnis browsable = no read only = no map archive = yes
# Dies ist eine Beispiel-Druckerfreigabe, # die unter Linux funktioniert.
[printers] printable = yes printing = BSD print command = /usr/bin/lpr -P%p %s path = /var/tmp min print space = 2000
# Ein freigegebenes Verzeichnis, auf das alle Domänen-Benutzer zugreifen dürfen. # Verwenden Sie Ihren eigenen Freigabenamen und -pfad.
[d] path = /d create mask = 0755
read only = no
In Kapitel 10 finden Sie weitere Informationen über das Freigeben von Druckern mit Samba.
Anhang B Kurzreferenz der SambaKonfigurationsoptionen Im ersten Abschnitt dieses Anhangs finden Sie alle Optionen, die in einer SambaKonfigurationsdatei - üblicherweise als smb.conf bezeichnet - verwendet werden können. Die meisten Konfigurationsdateien enthalten einen globalen Abschnitt mit Optionen, die für alle Dienste (Freigaben) gelten, sowie einen separaten Abschnitt mit Optionen für die verschiedenen einzelnen Freigaben. Gilt eine Option nur für den globalen Abschnitt, steht der Ausdruck [global] rechts neben ihrem Namen im folgenden Referenzabschnitt. Wenn nicht anders angegeben, können Elemente einer Liste durch Leerzeichen, Tabulatoren, Kommata, Semikolons, geschützte Zeilenumbrüche (Newline) oder geschützte Wagenrückläufe (Carriage Return) getrennt werden. Im Anschluss an diesen Referenzabschnitt folgt ein Glossar der Wertetypen und eine Liste der Variablen, die Samba erkennt.
Optionen der Konfigurationsdatei
abort shutdown script = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt den Befehl an, der das Herunterfahren abbricht, das durch shutdown script ausgelöst wurde. Der Befehl wird mit der UID des angemeldeten Benutzers ausgeführt. Neu in Samba 3.0. add printer command = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt den Befehl an, der auf dem System, das den Samba-Server beherbergt, einen neuen Drucker erzeugt. Dieser Befehl wird als root ausgeführt, wenn unter Windows NT/2000/XP der Assistent zum Hinzufügen eines Druckers läuft. Dem Befehl wird ein Druckername, ein Freigabename, ein Port-Name, ein Treibername, der Speicherort des Treibers unter Windows NT/2000/XP und der Speicherort des Treibers unter Windows 95/98/ Me übergeben (in dieser Reihenfolge). Der Befehl
legt im System den Drucker an und fügt der Datei smb.conf eine Definition für den Drucker hinzu. Siehe auch add printer wizard, printing und show add printer wizard. add machine script = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt einen Befehl an, der einen Computer in die Domain des Samba-Servers einfügt. Neu in Samba 3.0. add share command = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt einen Befehl an, der eine neue Freigabe auf dem Samba-Server erzeugt. Dieser Befehl läuft als root, wenn eine Freigabe mit Hilfe des Windows NT/2000/XP Server Manager erzeugt wird. Der Benutzer auf dem Client muss als root angemeldet sein. Dem Befehl wird (in dieser Reihenfolge) der Name der Samba-
Konfigurationsdatei, der Name der zu erzeugenden Freigabe, der vollständige Pfadname eines Verzeichnisses auf dem Samba-Server (das bereits existieren muss) und ein String als Kommentar für die Freigabe übergeben. Der Befehl muss für die Freigabe eine FreigabeDefinition in die Datei smb.conf einfügen. Siehe auch add printer command zum Anlegen einer Druckerfreigabe. add user script = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt einen Befehl an, der einen neuen Benutzer auf dem System anlegt, das den Samba-Server beherbergt. Dieser Befehl läuft als root, wenn der Zugriff auf eine Samba-Freigabe von einem Windows-Benutzer versucht wird, der auf dem Samba-Rechner keinen Zugang besitzt, jedoch auf einem anderen System einen Zugang hat, der von einem primären Domänen-Controller verwaltet wird. Der Befehl muss den Namen des Benutzers als einzelnes Argument akzeptieren, das dem Verhalten der typischen adduser-Befehle entspricht. Samba erkennt den Wert %u (Benutzername) als Argument für den Befehl an. Erfordert security = server oder security = domain. Siehe auch delete user script.
admin users = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL Legt die Benutzer fest, denen durch Samba rootRechte auf der Freigabe gewährt werden. ads server = Wert
Zulässige Werte: DNS-Hostname oder IP-Adresse [global] Default: NONE Gibt den Active Directory-Server an, der von Samba 3.0 zum Authentifizieren von Clients verwendet wird. Erfordert security = ads. Neu in Samba 3.0. algorithmic rid base = Zahl
Zulässige Werte: positives Integer [global] Default: 1000
Gibt den Basiswert an, den Samba verwendet, um die Windows-Sicherheits-ID, das Äquivalent zu Unix-UIDs, zu berechnen. Siehe auch non unix account range. Neu in Samba 3.0. allow hosts = Host-Liste
Zulässige Werte: Liste mit Hosts oder Netzwerken Default: NULL Gibt Systeme an, die Verbindung zu der Freigabe bzw. den Freigaben aufnehmen können. Beim Wert NULL dürfen alle Systeme auf die Freigabe zugreifen, es sei denn, es gibt eine Option hosts deny. Synonym für hosts allow. allow trusted domains = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Erlaubt den Zugriff für Benutzer, die keinen Zugang auf dem Samba-Server, aber Zugänge in einer anderen, vertrauenswürdigen Domäne haben. Erfordert security = server oder
security = domain. announce as = Wert
Zulässige Werte: NT, Win95, Wf W [global] Default: NT Sorgt dafür, dass Samba sich nicht als NTServer, sondern als etwas anderes anmeldet. Davon wird abgeraten, da es das Anbieten der Suchlisten behindert. announce version = Wert
Zulässige Werte: zwei Zahlen, getrennt durch einen Punkt [global] Default: 4.5 Weist Samba an, sich selbst als ein SMB-Server mit einer anderen Version zu melden. Davon wird abgeraten. auth methods = Liste
Zulässige Werte: guest, sam, ntdomain [global] Default: NONE Gibt an, welche Methoden Samba nacheinander zum Authentifizieren von Benutzern ausprobiert. Neu in Samba 3.0. auto services = Diensteliste
Zulässige Werte: Diensteliste [global] Default: NULL Gibt eine Liste mit Freigaben an, die immer in den Suchlisten auftauchen. Auch als preload bezeichnet. available = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Auf NO gesetzt, wird der Zugriff auf eine Freigabe
verweigert. Die Freigabe taucht zwar in der Suchliste auf, Versuche, auf sie zuzugreifen, schlagen jedoch fehl. bind interfaces only = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Auf YES gesetzt, werden Freigaben und Suchlisten nur an Schnittstellen bereitgestellt, die in einer Schnittstellenliste stehen (siehe interfaces). Wenn Sie diese Option auf YES setzen, müssen Sie dafür sorgen, dass 127.0.0.1 in die Schnittstellenliste aufgenommen wird, damit smbpasswd Verbindung zum lokalen System aufnehmen kann, um die Kennwörter zu ändern. Diese Option dient der Bequemlichkeit; sie verbessert nicht die Sicherheit. block size = Zahl
Zulässige Werte: Integer Default: 1024 Legt die Größe der Plattenblöcke fest, die von smbd an den Client gemeldet werden. Wird seit Samba 3.0 als veraltet angesehen.
blocking locks = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Wenn YES, erlaubt Samba Sperranfragen nach Dateibereichen mit Zeitbeschränkungen. Samba speichert die Anfragen in einer Warteschlange und wiederholt sie, bis die Zeitspanne abgelaufen ist. browsable = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Erlaubt das Anbieten einer Freigabe in Suchlisten. Auch als browseable bezeichnet. browse list = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Wenn YES, wird die Suchliste anderen Systemen
im Netzwerk angeboten. Vermeiden Sie es, diese Option zu ändern. browseable = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Synonym für browsable. case sensitive = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Wenn YES, wird beim Auflösen eines Dateinamens auf dem Server genau die gleiche Schreibweise (bezüglich der Groß-/ Kleinschreibung) wie auf dem Client verwendet. Ist der Wert NO, ist die Schreibweise egal. Sollte nicht geändert werden. Auch als casesignames bezeichnet. casesignames = Boolescher Wert
Zulässige Werte: YES, NO
[global] Default: NO Synonym für case sensitive. change notify timeout = Zahl
Zulässige Werte: positive Zahl [global] Default: 60 Legt die Anzahl der Sekunden zwischen zwei Prüfungen fest, wenn ein Client die Benachrichtigung über Änderungen in einem Verzeichnis anfordert. Der Wert sollte nicht verringert werden. change share command = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt einen Befehl an, der eine Freigabe-Definition auf dem Samba-Server ändert. Dieser Befehl wird als root ausgeführt, wenn eine Freigabe mit
Hilfe des Windows NT/2000/XP Server Manager erzeugt wird. Der Client-Benutzer muss als root angemeldet sein. Dem Befehl wird (in dieser Reihenfolge) der Name der SambaKonfigurationsdatei, der Name der zu ändernden Freigabe, der komplette Pfadname eines Verzeichnisses auf dem Samba-Server (das bereits existieren muss) und ein String als Kommentar für die Freigabe übergeben. Der Befehl verändert die Freigabe-Definition für die Freigabe in smb.conf. Siehe auch add share command und delete share command. character set = Name
Zulässige Werte: ISO8859-1, ISO8859-2, ISO8859-5, KOI8-R Default: NULL Übersetzt die DOS-Code-Seiten in die Zeichensätze westeuropäisch (ISO 8859-1), osteuropäisch (ISO 8859-2), russisch-kyrillisch (ISO 8859-5) oder alternativ-russisch (KOI8-R). Die Option client code page muss auf 850 gesetzt werden. Wird seit Samba 3.0 als veraltet an- gesehen. client code page = Name
Zulässige Werte: siehe Tabelle 11-4 in Kapitel 11
Default: 850 (MS-DOS Latin 1) Setzt die DOS-Code-Seite explizit, überschreibt damit alle vorherigen valid chars-Einstellungen. Beispiele für Werte sind 850 für westeuropäisch, 437 für US-Standard und 932 für Japanese ShiftJIS. Wird seit Samba 3.0 als veraltet angesehen. code page directory = Verzeichnis
Zulässige Werte: vollständiger Verzeichnisname [global] Default: /usr/local/samba/lib/codepages Gibt das Verzeichnis an, in dem Code-Seiten abgelegt werden. Wird seit Samba 3.0 als veraltet angesehen. coding system = Wert
Zulässige Werte: euc, cap, hex, hexN, sjis, j8bb, j8bj, jis8, j8bh, j8@b, j8@j, j8@h, j7bb, j7bj, jis7, j7bh, j7@b, j7@j, j7@h, jubb, jubj, junet, jubh,
ju@b, ju@j, ju@h [global] Default: NULL Legt das verwendete Code-System fest, vor allem für Kanji. Dies bezieht sich auf Dateinamen und sollte mit der verwendeten Code-Seite korrespondieren. Die Option client code page muss auf 932 ( Japanese Shift-JIS) gesetzt sein. Wird seit Samba 3.0 als veraltet angesehen. comment = String
Zulässige Werte: String Default: NULL Legt den Kommentar für eine Freigabe fest. Der Kommentar erscheint an solchen Stellen wie der Auflistung mit Hilfe des Befehls net view oder der Netzwerkumgebung. Siehe auch die Konfigurationsoption server string. config file = Dateiname
Zulässige Werte: \dateiname [global]
Default: NULL Wählt eine neue Samba-Konfigurationsdatei, die an Stelle der aktuellen gelesen werden soll. Wird verwendet, um die Konfigurationsdatei zu verlagern. Im Zusammenhang mit %-Variablen wird die Option benutzt, um für bestimmte Benutzer oder Systeme eigene Konfigurationsdateien auszuwählen. copy = Abschnittsname
Zulässige Werte: Name eines existierenden Abschnitts Default: NULL Kopiert die Konfiguration einer bereits definierten Freigabe in die Freigabe, in der diese Option auftaucht. Wird mit %-Variablen benutzt, um eigene Konfigurationen für Systeme, Architekturen und Benutzer auszuwählen. Jede angegebene oder kopierte Option hat Vorrang vor früheren Spezifikationen der Option. create mask = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0744
Legt die maximal zulässigen Rechte für neue Dateien fest (z.B. 0755). Siehe auch directory mask. Wenn Sie das Setzen bestimmter Rechte erzwingen wollen, sehen Sie unter force create mask und force directory mask nach. Auch als create mode bezeichnet. create mode = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0744 Synonym für create mask. csc policy = Wert
Zulässige Werte: manual, documents, programs oder disable Default: manual Legt Client-seitige Caching-Regeln fest, indem mitgeteilt wird, wie Dateien, bei denen dies möglich ist, offline im Cache abgelegt werden. deadtime = Zahl
Zulässige Werte: Zahl
[global] Default: 0 Gibt die Zeit in Minuten an, nach der eine ungenutzte Verbindung beendet wird. Null (0) bedeutet niemals. Wird verwendet, um zu verhindern, dass Clients Server-Ressourcen über einen langen Zeitraum an sich binden. Wird die Option benutzt, müssen Clients sich nach der festgelegten Zeit der Inaktivität erneut mit dem Server verbinden. Siehe auch keepalive. debug hires timestamp = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Ändert die Zeitangaben in Protokolleinträgen von Sekunden in Mikrosekunden. Nützlich für Leistungsmessungen. debug pid = Boolescher Wert
Zulässige Werte: YES, NO [global]
Default: NO Fügt die Prozess-ID des Samba-Servers in die einzelnen Zeilen des Protokolls ein. Dadurch erleichtert sich die Fehlersuche bezüglich eines bestimmten Servers. Erfordert debug timestamp = yes, um zu funktionieren. debug timestamp = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Versieht alle Protokollierungsmeldungen mit Zeitmarken. Kann ausgeschaltet werden, wenn dies nicht sinnvoll ist (z.B. bei der Fehlersuche ). Wird auch als timestamp logs bezeichnet. debug uid = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Fügt reale und effektive Benutzer- und GruppenID des bedienten Benutzers in die Protokolle ein.
Dadurch erleichtert sich die Fehlersuche bezüglich eines bestimmten Benutzers. debuglevel = Zahl
Zulässige Werte: Zahl [global] Default: 0 Legt die verwendete Protokollierungsstufe fest. Werte von 3 oder höher verlangsamen Samba merklich. Auch als log level bezeichnet. Empfohlener Wert ist 1. default = Dienstname
Zulässige Werte: Freigabename [global] Default: NULL Gibt den Namen eines Dienstes (einer Freigabe) an, der angeboten wird, falls jemand auf einen Dienst zugreifen will, den er nicht benutzen darf oder der nicht existiert. Der Pfad wird aus dem Namen gebildet, den der Client angegeben hat, wobei alle Unterstriche ( _ ) in Schrägstriche ( / ) geändert werden, wodurch der Zugriff auf alle Verzeichnisse auf dem Samba-Server erlaubt
wird. Von der Benutzung der Option wird abgeraten. Siehe auch load printers. Auch als default service bezeichnet. default case = Wert
Zulässige Werte: LOWER, UPPER Default: LOWER Legt die Schreibweise fest, in der neue Dateinamen gespeichert werden. LOWER steht für Kleinbuchstaben, UPPER steht für Großbuchstaben. default devmode = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Wird bei den Druckerfreigaben benutzt, auf die Windows NT/2000/XP-Clients zugreifen, um einen Standardgerätemodus für den Drucker einzurichten. Kann Probleme bereiten und sollte mit Vorsicht verwendet werden. default service = Freigabename
Zulässige Werte: Freigabename
[global] Default: NULL Synonym für default. delete printer command = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt einen Befehl an, der einen Drucker von dem System entfernt, auf dem der Samba-Server läuft. Die entsprechende Dienst-Definition wird aus der Datei smb.conf gelöscht. Dem Befehl wird als einziges Argument ein Druckername übergeben. Siehe auch add printer command, printing und show add printer wizard. delete readonly = Boolescher Wert
Zulässige Werte: NO, YES Default: NO Wenn YES, werden Löschanfragen zum Entfernen schreibgeschützter Dateien zugelassen. Dies ist unter MS-DOS/Windows nicht erlaubt, unter Unix dagegen normal, da es dort separate Rechte für
Verzeichnisse gibt. Wird mit Programmen wie RCS verwendet. delete share command = Befehl
Zulässige Werte: Befehl Default: NULL Gibt einen Befehl an, der eine Freigabe vom Samba-Server löscht. Der Befehl wird ausgeführt, wenn ein Benutzer, der als root auf einem Windows NT/2000/XP-System angemeldet ist, eine Freigabe mit dem Server Manager löscht. Dem Befehl wird der Name der SambaKonfigurationsdatei und der Name der zu löschenden Freigabe übergeben. Der Befehl muss die Definition der Freigabe aus der Konfigurationsdatei entfernen. Siehe auch add share command und change share command. delete user script = Befehl
Zulässige Werte: vollständiger Pfad zum Skript [global] Default: NULL Legt den Befehl fest, der als root ausgeführt
wird, wenn ein Benutzer eine Verbindung herstellt, der nicht mehr über einen Zugang auf dem PDC der Domäne verfügt. Akzeptiert %u. Kann verwendet werden, um das Benutzerkonto automatisch vom Host des Samba-Servers zu löschen. Erfordert security = domain oder security = user. Sollte mit Vorsicht eingesetzt werden. Siehe auch add user script. delete veto files = Boolescher Wert
Zulässige Werte: NO, YES Default: NO Wenn YES, kann der Benutzer Verzeichnisse löschen, die Dateien oder Unterverzeichnisse enthalten, die der Benutzer auf Grund der Option veto files nicht sehen kann. Wenn NO, wird das Verzeichnis nicht gelöscht und enthält weiterhin unsichtbare Dateien. deny hosts = Host-Liste
Zulässige Werte: Hosts oder Netzwerke Default: NULL Gibt eine Liste mit Systemen an, deren Verbindungswünsche abgelehnt werden. Auch als hosts deny bezeichnet.
dfree command = Befehl
Zulässige Werte: Befehl [global] Default: unterschiedlich Gibt einen Befehl an, der auf dem Server ausgeführt wird, um Informationen über den freien Plattenplatz zurückzuliefern. Wird nur benötigt, wenn der Befehl dfree des Samba-HostSystems nicht richtig funktioniert. directory = Verzeichnis
Zulässige Werte: UnixVerzeichnisname Default: unterschiedlich Setzt den Pfad auf das Verzeichnis, das von einer Datei- oder Druckerfreigabe bereitgestellt wird. Wird diese Option in der [homes]-Freigabe weggelassen, wird automatisch das HomeVerzeichnis des Benutzers eingestellt. Ansonsten lautet es standardmäßig /tmp. Bei einer Druckerfreigabe wird das Verzeichnis als SpoolVerzeichnis verwendet. Akzeptiert die Variablen % u (user; Benutzer) und %m (machine; Maschine). Synonym für path.
directory mask = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0755 Legt die maximal zulässigen Rechte für neu erzeugte Verzeichnisse fest. Um bestimmte Rechte zu setzen, beachten Sie auch die Optionen force create mask und force directory mask. Auch als directory mode bezeichnet. directory mode = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0755 Synonym für directory mask. directory security mask = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777
Default: wie bei directory mode Kontrolliert, welche Berechtigungs-Bits geändert werden dürfen, wenn ein Benutzer von einem Windows-System aus die Unix-Rechte für Verzeichnisse auf dem Samba-Server bearbeitet. Alle Bits, die in der Maske gesetzt sind, dürfen vom Benutzer geändert werden. Alle Bits, die nicht gesetzt sind, bleiben auf dem Verzeichnis gleich, auch wenn der Benutzer versucht, sie zu ändern. Erfordert nt acl support = YES. disable spools = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Wenn YES, greifen Windows NT/2000/XPSysteme beim Drucken wieder auf Lanman-artige Druckbefehle zurück. Das Hoch- und Herunterladen von Druckertreibern während des Betriebs ist dann allerdings nicht mehr möglich. Sollte mit Vorsicht eingesetzt werden. Siehe auch use client driver. dns proxy = Boolescher Wert
Zulässige Werte: YES, NO
[global] Default: YES Ist diese Option auf YES gesetzt und ist außerdem wins server = YES, werden Hostnamen im DNS nachgesehen, wenn sie mittels WINS nicht gefunden werden können. domain admin group = Benutzerliste
Zulässige Werte: Benutzernamen und/oder Gruppennamen [global] Default: NULL Gibt Benutzer an, die sich in der Gruppe Domain Admins befinden und Administratorrechte für die Domäne haben, wenn Samba der PDC ist. Siehe auch domain guest group und domain logons. Nur in Samba 2.2 nützlich; wird seit Samba 3.0 als veraltet angesehen. domain guest group = Benutzer-/Gruppenliste
Zulässige Werte: Liste mit Benutzernamen und/oder Gruppennamen
[global] Default: NULL Gibt Benutzer an, die sich in der Gruppe Domain Guest befinden, wenn Samba der PDC ist. Siehe auch domain admin group und domain logons. Nur in Samba 2.2 nützlich; wird seit Samba 3.0 als veraltet angesehen. domain logons = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Veranlasst Samba, Domänen-Meldungen auszuführen. Dies ist eine der Grundfunktionen, die erforderlich ist, wenn Samba als PDC agiert. domain master = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: automatisch Macht Samba für seine Domäne zum Domänen-
Hauptsuchdienst. Ist die Option domain logons aktiviert, ist domain master standardmäßig YES. Ansonsten ist es standardmäßig NO. dont descend = Liste
Zulässige Werte: Liste mit Verzeichnissen Default: NULL Verbietet das Wechseln des Verzeichnisses oder ein Durchsuchen des angegebenen Verzeichnisses. Diese Option betrifft das Durchsuchen, sie bietet keine zusätzliche Sicherheit. dos filemode = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Erlaubt es jedem mit Schreibrechten, die Rechte einer Datei zu ändern, wie es auch bei MS-DOS möglich ist. dos filetime resolution = Boolescher Wert
Zulässige Werte: YES, NO
Default: NO Passt die Zeitstempel für Dateien unter Unix an MS-DOS-Standards an (auf die nächste gerade Sekunde gerundet). Wird empfohlen, wenn Sie make von Visual C++ oder von einem PC verwenden, um das unnötige Neukompilieren der Programme zu vermeiden. Diese Option wird zusammen mit der Option dos filetimes benutzt. dos filetimes = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Erlaubt es Benutzern, die nicht Eigentümer einer Datei sind, den Zeitstempel dieser Datei zu ändern, sofern sie diese Datei schreiben dürfen. Dies entspricht dem Verhalten unter MS-DOS und Windows. Siehe auch dos filetime resolution. encrypt passwords = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO in Samba 2.2, YES in Samba 3.0 Ist die Option aktiviert, verwendet Samba eine Kennwortverschlüsselung. Erfordert eine
smbpasswd-Datei auf dem Samba-Server. enhanced browsing = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Synchronisiert automatisch Suchlisten mit allen Domänen-Hauptsuchdiensten, die dem WINSServer bekannt sind. Dadurch wird einerseits das Suchen über Subnetzgrenzen hinaus zuverlässiger, andererseits kann es passieren, dass leere Arbeitsgruppen für immer in den Suchlisten verbleiben. enumports command = Befehl
Zulässige Werte: Befehl [global] Default: NULL Lässt einen Befehl zu, mit dem Clients mit eigenen MS-DOS/Windows-Port-Namen (z.B. PRN:) ausgestattet werden können, die Druckern entsprechen. Samba gibt standardmäßig Samba Printer Port zurück. Der Befehl muss eine Reihe von Zeilen zurückliefern, die jeweils einen
Port-Namen enthalten. exec = Befehl
Zulässige Werte: Befehl Default: NULL Ein Befehl, der unmittelbar vor dem Herstellen einer Verbindung zu einer Freigabe ausgeführt wird. Synonym für preexec. Siehe auch die Optionen postexec, root preexec und root postexec. fake directory create times = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Eine Problemlösung für Benutzer von Microsoft nmake. Wenn YES, setzt Samba die Erstellungszeiten für Verzeichnisse so, dass nmake nicht jedes Mal alle Dateien neu erstellt. fake oplocks = Boolescher Wert
Zulässige Werte: YES, NO Default: NO
Ist die Option gesetzt, liefert sie YES, wenn ein Client anfragt, ob er eine Datei sperren und lokal abspeichern kann, erzwingt aber nicht das Sperren auf dem Server. Das Ergebnis ist eine Leistungssteigerung für schreibgeschützte Freigaben. Darf niemals bei schreibbaren Freigaben verwendet werden! Siehe auch oplocks und veto oplock files. follow symlinks = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Wenn YES, folgt Samba symbolischen Links in einer Freigabe. Beachten Sie die Option wide links, falls Sie symbolische Links auf die aktuelle Freigabe beschränken wollen. force create mode = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0 Wird wirksam, wenn ein Benutzer an einem Windows-Client eine Datei erzeugt, die sich auf dem Samba-Server befindet. Diese Option stellt sicher, dass Bits, die in dieser Maske gesetzt sind, auch immer bei der neuen Datei gesetzt
sind. Wird zusammen mit der Konfigurationsoption create mask verwendet. force directory mode = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0 Wird wirksam, wenn ein Benutzer an einem Windows-Client ein Verzeichnis auf dem SambaServer erzeugt. Diese Option stellt sicher, dass die Bits, die in dieser Maske gesetzt sind, auch auf jedem neu erstellten Verzeichnis gesetzt sind. Wird zusammen mit directory mask verwendet. force directory security mode = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: wie force directory mode Wird wirksam, wenn ein Benutzer an einem Windows-Client die Unix-Zugriffsrechte eines Verzeichnisses auf dem Samba-Server bearbeitet. Diese Option stellt sicher, dass die Bits, die in dieser Maske gesetzt sind, auf dem Verzeichnis gesetzt sind. Erfordert nt acl support = YES.
force group = Wert
Zulässige Werte: ein UnixGruppenname Default: NULL Setzt den effektiven Gruppennamen, der allen Benutzern zugewiesen wird, die auf eine Freigabe zugreifen. Wird verwendet, um die normalen Gruppenzugehörigkeiten eines Benutzers zu überschreiben. force security mode = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: wie force create mode Wird wirksam, wenn ein Benutzer an einem Windows-Client die Unix-Rechte einer Datei auf dem Samba-Server bearbeitet. Diese Option stellt sicher, dass die Bits, die in der Maske gesetzt sind, immer auch auf der Datei gesetzt sind. Erfordert nt acl support = YES. Siehe auch force directory security mode für Verzeichnisse. force unknown acl user = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option gesetzt, werden unbekannte Benutzer oder Gruppen in Windows NT-ACLs auf den Benutzer oder die Gruppe des angeschlossenen Benutzers abgebildet. Wird seit Samba 3.0 als veraltet angesehen. force user = Wert
Zulässige Werte: ein einzelner Benutzername Default: NULL Setzt den effektiven Benutzernamen, der allen Benutzern zugewiesen wird, die auf eine Freigabe zugreifen. Von der Verwendung wird abgeraten. fstype = String
Zulässige Werte: NTFS, FAT, Samba Default: NTFS Legt den Dateisystem-Typ fest, der dem Client übermittelt wird. Sollte nicht geändert werden.
getwd cache = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Legt das aktuelle Verzeichnis aus Leistungsgründen im Cache ab. Empfohlen zusammen mit der Option wide links. group = Wert
Zulässige Werte: ein UnixGruppenname Default: NULL Synonym für force group. guest account = Wert
Zulässige Werte: ein einzelner Benutzername Default: unterschiedlich Gibt den Namen des nicht-berechtigten Unix-
Zugangs an, der für Aufgaben wie das Drucken und den Zugriff auf Freigaben mit der Kennzeichnung guest ok verwendet wird. Der Vorgabewert wird zum Zeitpunkt des Kompilierens festgelegt und lautet üblicherweise nobody. guest ok = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Wenn YES, werden für diese Freigabe keine Kennwörter benötigt. Wird mit security = share verwendet. Synonym für public. guest only = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Zwingt Benutzer einer Freigabe, sich als Gast anzumelden. Erfordert guest ok oder public für den Wert YES. Auch als only guest bezeichnet. hide dot files = Boolescher Wert
Zulässige Werte: YES, NO
Default: YES Behandelt Dateien, deren Namen mit einem Punkt beginnen, so, als wäre das MS-DOSAttribut hidden gesetzt. Die Dateien werden auf einem Windows-Client entweder nicht angezeigt oder erscheinen ausgegraut - je nach den Einstellungen auf dem Client. hide files = durch Schrägstriche getrennte Liste
Zulässige Werte: Muster, getrennt durch /-Zeichen Default: NULL Gibt eine Liste mit Datei- oder Verzeichnisnamen an, bei denen das MS-DOS-Attribut hidden gesetzt werden soll. Die Namen können die Wildcard-Zeichen ? oder * sowie %-Variablen enthalten. Siehe auch hide dot files und veto files. hide local users = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO
Wenn YES, werden Unix-spezifische DummyZugänge (root, wheel, floppy usw.) vor den Clients verborgen. hide unreadable = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Wenn YES, werden alle nicht lesbaren Dateien verborgen. homedir map = Name
Zulässige Werte: Name einer NISMap [global] Default: NONE Wird zusammen mit nis homedir eingesetzt, um das Unix-Home-Verzeichnis eines Benutzers von Sun NIS (nicht NIS+) zu ermitteln. host msdfs = Boolescher Wert
Zulässige Werte: YES, NO
[global] Default: NO Ist die Option auf YES gesetzt und wurde Samba mit der Option --with-msdfs konfiguriert, wird der Microsoft-Dfs-Dienst (Distributed file system) angeboten, wodurch es Dfs-fähigen Clients erlaubt ist, Dfs-Bäume auf dem Samba-Server zu durchsuchen. Siehe auch msdfs root. hosts allow = Host-Liste
Zulässige Werte: Liste mit Hosts oder Netzwerken Default: NULL Gibt eine Liste mit Systemen an, die auf die Freigabe zugreifen dürfen. Wenn NULL, darf jedes System zugreifen, es sei denn, es wurde die Option hosts deny angegeben. Synonym für allow hosts. hosts deny = Host-Liste
Zulässige Werte: Liste mit Hosts oder Netzwerken Default: NULL
Gibt eine Liste mit Systemen an, die keine Verbindung zur Freigabe herstellen dürfen. Synonym für deny hosts. hosts equiv = Dateiname
Zulässige Werte: Name einer Datei [global] Default: NULL Pfad zu einer Datei mit vertrauenswürdigen Systemen, von denen keine Kennwörter verlangt werden, um auf eine Freigabe zuzugreifen. Von der Verwendung wird ausdrücklich abgeraten, da Windows NT/2000/XP-Benutzer immer den Benutzernamen ändern können - die einzige Sicherheitsmaßnahme in diesem Schema. include = Dateiname
Zulässige Werte: Name einer Datei Default: NULL Fügt die angegebene Datei an der Stelle, an der die Option auftaucht, in die Datei smb.conf ein. Diese Option akzeptiert die meisten Variablen, nicht jedoch %u (Benutzer), %P (root-Verzeichnis der aktuellen Freigabe) oder %S (Name der aktuellen Freigabe), da diese zum Zeitpunkt des
Lesens der Datei noch nicht gesetzt sind. inherit acls = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist diese Option gesetzt, werden Dateien und Unterverzeichnisse mit den gleichen ACLs erzeugt wie ihre übergeordneten Verzeichnisse. Verzeichnisse erhalten die Unix-Rechte 0777 (volle Zugriffsrechte), wodurch sichergestellt wird, dass die ACL auf dem Verzeichnis die tatsächlichen Rechte bestimmt, die die Clients erhalten haben. Erfordert POSIX ACLUnterstützung auf dem Samba-Host-System. inherit permissions = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist diese Option gesetzt, werden Dateien und Verzeichnisse mit den gleichen Rechten erzeugt wie ihre übergeordneten Verzeichnisse. Dadurch können Unix-Verzeichnisrechte automatisch neuen Dateien und Verzeichnissen verliehen werden, vor allem in der Freigabe [homes]. Diese Option setzt create mask, directory mask, force create mode und force directory mode
außer Kraft, nicht jedoch map archive, map hidden oder map system. Samba setzt beim Erzeugen einer Datei oder eines Verzeichnisses niemals das setuid-Bit. interfaces = Schnittstellenliste
Zulässige Werte: Schnittstellenliste [global] Default: NULL (alle Schnittstellen außer 127.0.0.1) Legt die Schnittstellen fest, auf die Samba antwortet. Vorgabewert ist nur die primäre Schnittstelle des Systems. Wird empfohlen auf Systemen, die in mehreren Netzwerken residieren (multihomed Hosts), oder um fehlerhafte Adressen und Netzmasken zu umgehen. Es sind Schnittstellennamen wie eth0, DNS-Namen, Paare aus Adresse und Netzmaske und Paare aus Broadcast-Adresse und Netzmaske zulässig. Siehe auch bind interfaces only. invalid users = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL Gibt eine Liste mit Benutzern an, denen der Zugriff auf eine Freigabe nicht erlaubt ist.
keepalive = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 300 Gibt in Sekunden an, in welchen Abständen nach einem abgestürzten Client geforscht wird. Beim Wert 0 wird nicht nach dem Client gesucht. Wird keepalive = 3600 gesetzt, wird einmal pro Stunde nach dem Client gesucht. Ein Wert von 600 (alle 10 Minuten) wird empfohlen, falls Sie häufiger nachsehen wollen. Ein anderer Ansatz wird mit socket options verfolgt (siehe dort). kernel oplocks = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Unterbricht einen Oplock, wenn ein lokaler UnixProzess oder eine NFS-Operation auf eine mit einem Oplock gesperrte Datei zugreift. Dadurch wird eine Beschädigung der Datei vermieden. Dies funktioniert nur bei Betriebssystemen, die Kernel-basierte Oplocks unterstützen, wie etwa
Linux 2.4 und Irix. Vermeiden Sie es, diese Option zu ändern. Siehe auch oplocks und level2 oplocks. lanman auth = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Ist die Option auf YES gesetzt, dürfen Clients den (schwachen) LANMAN-Kennwort-Hash verwenden, den auch die Systeme Windows 95/98/Me benutzen. Ist die Option auf NO gesetzt, ist nur der bessere NT1-Hash von Windows NT/2000/XP zulässig. large readwrite = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO in Samba 2.2, YES in Samba 3.0 Wenn YES, dürfen Windows 2000 und XP 64 KByte auf einmal lesen und schreiben, um die Leistung zu verbessern. Erfordert, dass Samba auf einem 64-Bit-Betriebssystem wie Linux 2.4, Irix oder Solaris läuft. Besitzt einen gewissen
experimentellen Status. ldap admin dn = String
Zulässige Werte: Distinguished Name [global] Default: NULL Setzt den Distinguished Name, der von Samba verwendet wird, wenn es einen LDAP-Server anspricht. Samba muss dazu mit der Konfigurationsoption --with-ldapsam konfiguriert sein. Experimentelle Option, die in Samba 2.2.3 hinzugefügt wurde und seit Samba 3.0 als veraltet angesehen wird. ldap filter = String
Zulässige Werte: LDAP-Suchfilter [global] Default: (&(uid=%u)(objectclass=sambaAccount)) Legt den LDAP-Suchfilter fest. Erfordert, dass Samba mit der Konfigurationsoption --withldapsam konfiguriert wird. Experimentelle Option, die in Samba 2.2.3 hinzugefügt wurde und seit
Samba 3.0 als veraltet angesehen wird. ldap port = Zahl
Zulässige Werte: positives Integer [global] Default: In Samba 2.2 636, falls ldap ssl = on; ansonsten 389 Legt die TCP-Port-Nummer zum Kontaktieren des LDAP-Servers fest. Erfordert, dass Samba mit der Konfigurationsoption --with-ldapsam konfiguriert wird. Experimentelle Option, die in Samba 2.2.3 hinzugefügt wurde und seit Samba 3.0 als veraltet angesehen wird. Siehe auch ldap ssl. ldap server = Wert
Zulässige Werte: voll qualifizierter Domainname (FQDN) [global] Default: Localhost Setzt den Domainnamen des LDAP-Servers. Verlangt, dass Samba mit der Konfigurationsoption --with-ldapsam
konfiguriert wird. Experimentelle Option, die in Samba 2.2.3 hinzugefügt wurde und seit Samba 3.0 als veraltet angesehen wird. ldap ssl = Wert
Zulässige Werte: ON, OFF, START TLS [global] Default: ON Legt fest, ob Samba SSL verwendet, um den LDAP-Server zu kontaktieren. ON und OFF schalten die SSL-Verschlüsselung ein oder aus. Die Einstellung START TLS veranlasst Samba, LDAPv3 StartTLS Extended Operation zu verwenden. Samba muss dazu mit der Konfigurationsoption --with-ldapsam konfiguriert sein. Experimentelle Option, die in Samba 2.2.3 hinzugefügt wurde und seit Samba 3.0 als veraltet angesehen wird. ldap suffix = String
Zulässige Werte: Distinguished Name [global]
Default: NULL Legt den Distinguished Name fest, der als Grundlage für LDAP-Suchen dient. Erfordert, dass Samba mit der Konfigurationsoption --withldapsam konfiguriert wird. Experimentelle Option, die in Samba 2.2.3 hinzugefügt wurde und seit Samba 3.0 als veraltet angesehen wird. level2 oplocks = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Erlaubt es, Dateien schreibgeschützt auf dem Client abzulegen, wenn mehrere Clients die Datei geöffnet haben. Ausführbare Dateien können so lokal gespeichert werden, wodurch sich die Leistung verbessert. lm announce = Wert
Zulässige Werte: AUTO, YES, NO [global] Default: AUTO Erzeugt OS/2 SMB-Broadcasts in einem Intervall, das durch die Option lm interval bestimmt wird. YES/NO schaltet die Option ohne Bedingung ein/
aus. AUTO veranlasst den Samba-Server, auf eine LAN-Manager-Ankündigung zu warten, bevor er einen Broadcast sendet. Erforderlich, damit OS/2-Clients das Netzwerk durchsuchen können. lm interval = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 60 Legt in Sekunden den Abstand zwischen OS/2 SMB-Broadcast-Ankündigungen fest. load printers = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Lädt alle Druckernamen aus der Datei printcap des Systems in die Suchliste. Verwendet Konfigurationsoptionen aus dem Abschnitt [printers]. local master = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Erlaubt es Samba, an der Wahl des lokalen Hauptsuchdienstes teilzunehmen. Siehe auch domain master und os level. lock dir = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: /usr/local/samba/var/locks Synonym für lock directory. lock directory = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: /usr/local/samba/var/locks
Gibt ein Verzeichnis an, in dem Sperrdateien abgelegt werden. Das Verzeichnis muss für Samba schreibbar und für alle anderen lesbar sein. Auch als lock dir bezeichnet. lock spin count = Zahl
Zulässige Werte: positives Integer [global] Default: 2 Gibt die Anzahl der Versuche an, um die Sperre eines Dateibereichs zu erreichen. Siehe auch lock spin time. lock spin time = Zahl
Zulässige Werte: Anzahl Mikrosekunden [global] Default: 10 Gibt in Mikrosekunden die Zeitspanne zwischen den Versuchen an, eine Sperre zu erzielen. Siehe auch lock spin count. locking = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Aktiviert Dateisperren. Ist die Option auf NO gesetzt, akzeptiert Samba Sperranfragen, sperrt die Ressourcen aber nicht. Schalten Sie die Option für schreibgeschützte Dateisysteme aus. log file = Dateiname
Zulässige Werte: Name der Datei [global] Default: unterschiedlich Legt den Namen und den Speicherort der Protokolldatei fest. Erlaubt alle %-Variablen. log level = Zahl
Zulässige Werte: Zahl [global] Default: 0 Gibt die verwendete Protokollierungsstufe an. Werte von 3 oder höher verlangsamen das
System deutlich. Empfohlener Wert ist 1. Synonym für debug level. logon drive = Wert
Zulässige Werte: MS-DOSLaufwerkname [global] Default: Z: Gibt das Laufwerk an, das als Home-Verzeichnis für Anmeldungen an der Domäne durch Windows NT/2000/XP-Clients verwendet wird. Siehe auch logon home. logon home = Verzeichnis
Zulässige Werte: UNC eines freigegebenen Verzeichnisses [global] Default: \\ %N \ %U Setzt das Home-Verzeichnis eines Windows 95/98/Me- oder NT/2000/XP-Benutzers. Erlaubt NET USE H:/HOME vom Befehls-Prompt, falls Samba als Anmelde-Server agiert. Hängen Sie \profile oder ein anderes Verzeichnis an den
Wert dieses Parameters an, falls Windows 95/98/ Me-Profile in einem Unterverzeichnis des HomeVerzeichnisses des Benutzers gespeichert werden. Siehe logon path für Windows NT/2000/ XP-Roaming-Profile. logon path = Verzeichnis
Zulässige Werte: UNC eines freigegebenen Verzeichnisses [global] Default: \\ %N \ %U \ profile Gibt den Pfad des Verzeichnisses an, in dem Windows NT/2000/XP-Roaming-Profile abgespeichert werden. Siehe auch logon home für Windows 95/98/Me-Roaming-Profile. logon script = Verzeichnis
Zulässige Werte: UNC einer freigegebenen Datei [global] Default: NULL Gibt den Pfadnamen (relativ zur Freigabe [netlogon]) eines MS-DOS/NT-Befehls an, der
zum Zeitpunkt der Anmeldung auf dem Client ausgeführt wird. Erlaubt alle %-Variablen. lppause command = Befehl
Zulässige Werte: Befehl Default: unterschiedlich Gibt den Befehl zum Unterbrechen eines DruckJobs an. Akzeptiert die Variablen %p (Druckername) und %j (Job-Nummer). lpq cache time = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 10 Gibt in Sekunden an, wie lange der Status der Druckerwarteschlange gespeichert werden muss. lpq command = Befehl
Zulässige Werte: Befehl Default: unterschiedlich Gibt den Befehl an, der verwendet wird, um den
Druckerstatus zu erhalten. Wird üblicherweise durch die Option printing auf einen vorgegebenen Wert initialisiert. Akzeptiert die Variable %p (Druckername). lpresume command = Befehl
Zulässige Werte: Befehl Default: unterschiedlich Gibt den Befehl an, mit dem ein pausierender Druck-Job fortgesetzt wird. Akzeptiert die Variablen %p (Druckername) und %j ( JobNummer). lprm command = Befehl
Zulässige Werte: Befehl Default: unterschiedlich Gibt den Befehl an, mit dem ein Druck-Job gelöscht wird. Wird üblicherweise durch die Option printing auf einen vorgegebenen Wert initialisiert. Akzeptiert die Variablen %p (Druckername) und %j (Job-Nummer). machine password timeout = Zahl
Zulässige Werte: Anzahl Sekunden
Default: 604800 (1 Woche) Gibt den Abstand zwischen Kennwortänderungen eines NT-Domänen-Zugangs an. magic output = Dateiname
Zulässige Werte: Name einer Datei Default: befehl.out Gibt die Ausgabedatei für die Option magic scripts an. Vorgabe ist der Befehlsname, gefolgt von der Erweiterung .out. magic script = Dateiname
Zulässige Werte: Name einer Datei Default: NULL Gibt den Namen einer Datei an, die über die Shell ausgeführt wird, wenn die Datei vom Client geschlossen wird. Dadurch können Clients Befehle auf dem Server ausführen. Die Skripten werden bei Beendigung geschlossen, falls die Rechte dies zulassen. Von der Benutzung wird abgeraten. mangle case = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Kürzt einen Namen ab, wenn er in gemischter Groß-/Kleinschreibung angegeben ist. mangled map = Zuordnungsliste
Zulässige Werte: Liste mit Zu-/VonPaaren Default: NULL Gibt eine Tabelle mit Zuordnungen an (z.B. .html zu .htm). mangled names = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Veranlasst Samba, Namen abzukürzen, die zu lang sind oder Zeichen enthalten, die vom MSDOS 8.3-Stil nicht unterstützt werden. mangled stack = Zahl
Zulässige Werte: Zahl
[global] Default: 50 Legt die Größe des Cache für abgekürzte Dateinamen fest. mangling char = Zeichen
Zulässige Werte: Zeichen Default: ~ Gibt das einheitliche Abkürzungszeichen an, das in allen abgekürzten Namen verwendet wird. mangling method = String
Zulässige Werte: hash, hash2 [global] Default: hash Gibt den Algorithmus zum Abkürzen von Dateinamen an. Die hash2-Methode ist neuer und wurde in Samba 2.2.x eingeführt. Sie erzeugt andere Dateinamen als die hash-Methode. map archive = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Ist die Option YES, setzt Samba das Ausführbarvom-Benutzer-Bit (0100) bei Unix-Dateien, falls das MS-DOS-Attribut archive gesetzt ist. Die Option create mask muss in diesem Fall das Bit 0100 enthalten. map hidden = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option YES, setzt Samba das Ausführbarvon-anderen-Bit (0001) bei Unix-Dateien, falls das MS-DOS-Attribut hidden gesetzt ist. Die Option create mask muss in diesem Fall das Bit 0001 enthalten. map system = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option YES, setzt Samba das Ausführbarvon-Gruppe-Bit (0010) bei Unix-Dateien, falls das MS-DOS-Attribut system gesetzt ist. Die Option
create mask muss in diesem Fall das Bit 0010 enthalten. map to guest = Wert
Zulässige Werte: Never, Bad User, Bad Password [global] Default: Never Ist die Option auf Bad User gesetzt, dürfen Benutzer ohne Zugang zum Samba-System sich anmelden und werden dem Gastzugang (guest) zugeordnet. Diese Option kann verwendet werden, um öffentliche Freigaben jedem zugänglich zu machen. Bei Bad Password werden Benutzer, die sich beim Eingeben ihres Kennworts verschrieben haben, nicht an ihrem eigenen Zugang, sondern als Gast angemeldet. Da dies ohne Warnung geschieht, kann der Wert Bad Password außerordentlich verwirrend sein; wir empfehlen, ihn nicht zu benutzen. Der Standardwert Never verhindert, dass Benutzer ohne eigene Zugänge sich anmelden können. max connections = Zahl
Zulässige Werte: Zahl Default: 0 (unendlich)
Legt die maximale Anzahl der Verbindungen der einzelnen Client-Systeme zu Freigaben fest. max disk size = Zahl
Zulässige Werte: Größe in MByte [global] Default: 0 (keine Beschränkung) Gibt die maximale Plattengröße/Größe des freien Platzes (in MByte) an, die an den Client zurückgegeben wird. Einige Clients oder Anwendungen kommen mit großen Plattenkapazitäten nicht zurecht. max log size = Zahl
Zulässige Werte: Größe in KByte [global] Default: 5000 Gibt die Größe (in KByte) an, bei der Samba eine neue Protokolldatei beginnt. Die aktuelle Protokolldatei wird mit der Erweiterung .old umbenannt und ersetzt damit jede bestehende Datei dieses Namens.
max mux = Zahl
Zulässige Werte: Zahl [global] Default: 50 Gibt die Anzahl der gleichzeitig möglichen SMBOperationen von Samba-Clients an. Diese Option sollte nicht geändert werden. max open files = Zahl
Zulässige Werte: Zahl [global] Default: 10000 Beschränkt die Anzahl der Dateien, die ein Samba-Prozess gleichzeitig offen halten kann. Samba erlaubt es Ihnen, diesen Wert niedriger zu machen, als vom Betriebssystem des Unix-Hosts maximal zulässig. Diese Option sollte nicht geändert werden. max print jobs = Zahl
Zulässige Werte: positives Integer
Default: 1000 Beschränkt die Anzahl der Jobs, die sich für diese Druckerfreigabe gleichzeitig in der Warteschlange befinden dürfen. Der Drucker gibt die Meldung out of space aus, falls diese Grenze erreicht wird. Siehe auch total print jobs. max protocol = Name
Zulässige Werte: CORE, COREPLUS, LANMAN1, LANMAN2, NT1 [global] Default: NT1 Ist diese Option gesetzt, ist nur das angegebene Protokoll oder ein älteres Protokoll möglich. Siehe min protocol. Sollte nicht benutzt werden. max smbd processes = Zahl
Zulässige Werte: Integer [global] Default: 0 (keine Beschränkung) Beschränkt die Anzahl der Prozesse, die
gleichzeitig auf einem Server ablaufen können. Wird verwendet, um zu vermeiden, dass ein Dienst unter einer Überlast nur eingeschränkt angeboten wird, auf die Gefahr hin, dass der Dienst ganz und gar abgewiesen wird. max ttl = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 259200 (3 Tage) Setzt die TTL (Time to Live; Lebensdauer) von NetBIOS-Namen im nmbd-WINS-Cache. Sollte nicht geändert werden. max wins ttl = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 518400 (6 Tage) Beschränkt die TTL (in Sekunden) eines NetBIOSNamens im nmbd-WINS-Cache. Sollte nicht geändert werden. Siehe auch min wins ttl. max xmit = Zahl
Zulässige Werte: Größe in Bytes [global] Default: 65535 Legt die maximale Paketgröße fest, die von Samba ausgehandelt wird. Dieser Parameter ist für langsame Verbindungen und Fehler in älteren Clients gedacht. Von Werten, die kleiner sind als 2048, wird abgeraten. message command = Befehl
Zulässige Werte: Befehl [global] Default: NULL Gibt den Befehl an, der auf dem Server ausgeführt wird, wenn eine WinPopup-Nachricht von einem Client eintrifft. Der Befehl muss mit einem & enden, damit der Aufruf sofort zurückkehrt. Akzeptiert alle %-Variablen bis auf % u (Benutzer) und unterstützt die zusätzlichen Variablen %s (Dateiname der Datei, in der die Nachricht enthalten ist), %t (Zielsystem) und %f (Absender). min passwd length = Zahl
Zulässige Werte: Integer [global] Default: 5 Synonym für min password length. min password length = Zahl
Zulässige Werte: Integer [global] Default: 5 Gibt die minimale Länge des Unix-Kennworts an, die von Samba akzeptiert wird, wenn das Kennwort eines Benutzers auf seinem System aktualisiert wird. Auch als min passwd length bezeichnet. min print space = Zahl
Zulässige Werte: Größe in KByte Default: 0 (unbegrenzt) Gibt die minimale Festplattengröße an, die erforderlich ist, bevor eine Druckanfrage akzeptiert wird.
min protocol = Name
Zulässige Werte: CORE, COREPLUS, LANMAN1, LANMAN2, NT1 [global] Default: CORE Ist die Option gesetzt, wird die Verwendung alter (weniger sicherer) Protokolle vermieden. Bei Benutzung von NT1 werden MS-DOS-Clients deaktiviert. Siehe auch lanman auth. min wins ttl = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 21600 (6 Stunden) Gibt (in Sekunden) die minimale TTL eines NetBIOS-Namens im nmbd-WINS-Cache an. Sollte nicht geändert werden. msdfs root = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Macht aus einer Freigabe ein Dfs-root. Verlangt die Konfigurationsoption --with-msdfs. Alle symbolischen Links der Form msdfs:server \share werden als Dfs-Links betrachtet. Siehe auch host msdfs. name resolve order = Liste
Zulässige Werte: lmhosts, wins, host, bcast [global] Default: lmhosts, host, wins, bcast Gibt die Lookup-Reihenfolge beim Versuch, IPAdressen aus Namen zu ermitteln, an. Der Parameter host führt einen regulären NamensLookup mit den normalen Quellen des Servers aus: /etc/hosts, DNS, NIS oder eine Kombination aus diesen. netbios aliases = Liste
Zulässige Werte: Liste mit NetBIOSNamen
[global] Default: NULL Legt zusätzliche NetBIOS-Namen an, unter denen der Samba-Server sich selbst bekanntmacht. netbios name = Wert
Zulässige Werte: lokaler Hostname Default: DNS-Name des Systems Legt den NetBIOS-Namen fest, unter dem ein Samba-Server bekannt ist, oder den primären Namen, falls NetBIOS-Aliase existieren. Siehe auch netbios aliases. netbios scope = String
Zulässige Werte: String [global] Default: NULL Gibt den NetBIOS-Bereich an, einen frühen Vorläufer von Arbeitsgruppen. Samba kommuniziert nicht mit einem System mit einem anderen Bereich. Diese Option wird nicht empfohlen.
nis homedir = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Falls YES, wird die Option homedir map verwendet, um den Server zu ermitteln, auf dem sich das Home-Verzeichnis des Benutzers befindet, und diese Information an den Client zurückzuliefern. Der Client kontaktiert dieses System dann, um eine Verbindung zur Freigabe aufzubauen. Dadurch wird vermieden, ein Verzeichnis von einem System zu mounten, das sich dort eigentlich gar nicht befindet - die Daten müssten in diesem Fall nämlich zweimal übertragen werden. Das System mit den HomeVerzeichnissen muss ein SMB-Server sein. non unix account range = Zahlenbereich
Zulässige Werte: Bereich positiver Integer-Zahlen [global] Default: NONE Gibt einen Bereich von Unix-UIDs an, die Samba
für Benutzer- und Computer-Zugänge verwenden kann, die außerhalb der /etc/passwd verwaltet werden. Die UIDs in diesem Bereich dürfen sich nicht mit denjenigen der normalen Unix-Benutzer in /etc/passwd überschneiden. Siehe auch algorithmic rid base. Neu in Samba 3.0. nt acl support = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Veranlasst den Samba-Server, die Unix-Rechte auf Windows NT-ACLs abzubilden. nt pipe support = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Erlaubt das Ausschalten NT-spezifischer PipeAufrufe. Dies ist eine Entwickler-/BenchmarkOption, die möglicherweise in der Zukunft verschwindet. Sollte nicht geändert werden. nt smb support = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Falls YES, wird die Benutzung NT-spezifischer SMBs erlaubt. Dies ist eine Entwickler-/ Benchmark-Option, die ab Samba 3.0 als veraltet angesehen wird. Sollte nicht geändert werden. nt status support = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Falls YES, wird die Benutzung NT-spezifischer Statusmeldungen erlaubt. Dies ist eine Entwickler-/Benchmark-Option, die möglicherweise in der Zukunft verschwindet. Sollte nicht geändert werden. null passwords = Boolescher Wert
Zulässige Werte: YES, NO [global]
Default: NO Falls YES, wird der Zugriff auf Zugänge erlaubt, die keine Kennwörter besitzen. Von der Benutzung wird strengstens abgeraten. obey pam restrictions = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Ist die Option gesetzt, befolgt Samba die PAMZugangs- und Sitzungsrestriktionen. Erfordert die Konfigurationsoption --with-pam. only guest = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Zwingt Benutzer einer Freigabe, sich als Gast anzumelden. Synonym für guest only. Verlangt, dass guest ok oder public den Wert YES haben. only user = Boolescher Wert
Zulässige Werte: YES, NO
Default: NO Verlangt, dass Benutzer der Freigabe in der Liste stehen, die durch die Option user angegeben ist. oplock break wait time = Zahl
Zulässige Werte: Zahl [global] Default: 0 Dies ist ein komplizierterer Tuning-Parameter, dessen Benutzung nur Experten empfohlen wird, die wissen, wie Samba Oplocks behandelt. Diese Option muss unter Umständen gesetzt werden, falls ein Windows-System nicht in der Lage ist, auf eine entsprechende Anforderung durch den Samba-Server ein Oplock zu entsperren. Auf Grund von Fehlern in einigen Windows-Systemen kann es passieren, dass sie nicht antworten, falls Samba zu schnell antwortet. In solchen Fällen kann der Vorgabewert dieser Option verlängert werden. oplock contention limit = Zahl
Zulässige Werte: Anzahl Millisekunden
Default: 2 Dies ist ein komplizierterer Tuning-Parameter, dessen Benutzung nur Experten empfohlen wird, die wissen, wie Samba Oplocks behandelt. Er veranlasst Samba, die Gewährung eines Oplocks abzulehnen, falls die Anzahl der Clients, die eine Datei für sich beanspruchen, den angegebenen Wert überschreitet. oplocks = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Falls YES, wird die lokale Speicherung von Dateien auf dem Client unterstützt, die mit Oplocks gesperrt sind. Diese Option wird empfohlen, da sie die Leistung um ungefähr 30% verbessert. Siehe auch fake oplocks und veto oplock files. os level = Zahl
Zulässige Werte: Integer [global] Default: 20 Legt die Kandidatur des Servers bei der Wahl
eines Hauptsuchdienstes fest. Wird zusammen mit den Optionen domain master oder local master verwendet. Sie können einen Wert einstellen, der höher ist als der eines konkurrierenden Betriebssystems, falls Sie wollen, dass Samba gewinnt. Windows for Workgroups und Windows 95/98/Me verwenden 1. Die Systeme Windows NT/2000/XP benutzen 16, wenn sie nicht als PDC agieren, und 32, wenn sie PDC sind. Warnung: Dadurch können unerwartet Nicht-Samba-Suchdienste außer Kraft gesetzt werden. os2 driver map = Dateiname
Zulässige Werte: Name einer Datei [global] Default: NULL Gibt eine Datei an, die Zuordnungen von Windows NT-Druckertreibernamen auf OS/2Druckertreibernamen enthält. pam password change = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO
Hat diese Option den Wert YES und wurde Samba mit --with-pam konfiguriert, ist es PAM erlaubt, Kennwortänderungen von Clients durchzuführen anstatt das Programm zu benutzen, das durch den Parameter passwd program definiert wurde. panic action = Befehl
Zulässige Werte: Befehl [global] Default: NULL Legt den Befehl fest, der ausgeführt wird, wenn Samba abstürzt. Akzeptiert alle %-Variablen. Für Samba-Entwickler und -Tester ist /usr/bin/X11/ xterm -display :0 -e gdb /samba/bin/smbd %d ein möglicher Wert. passdb backend = Liste
Zulässige Werte: smbpasswd, smbpasswd_nua, tdbsam, tdbsam_nua, plugin [global] Default: smbpasswd
Gibt Methoden an, die Samba verwendet, um Kennwörter zu speichern und zu beziehen, wenn es eine andere Methode als die Datei /etc/passwd des Unix-Systems benutzt. Siehe auch non unix account range. Neu in Samba 3.0. passwd chat = String
Zulässige Werte: Folge von Strings [global] Default: bei der Kompilierung festgelegt Gibt die String-Folgen an, die verwendet werden, um Kennwörter auf dem Server zu ändern. Unterstützt die Variablen %o (altes Kennwort) und %n (neues Kennwort) und erlaubt die EscapeZeichen \r, \n, \t und \s (Leerzeichen) in der Folge. Siehe auch unix password sync, passwd program, passwd chat debug und pam password change. passwd chat debug = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Protokolliert die gesamte Kennwortänderung,
einschließlich der übergebenen Kennwörter, mit einer Protokollstufe von 100. Nur zur Fehlersuche. Siehe auch passwd chat, pam password change und passwd program. passwd program = Befehl
Zulässige Werte: Befehl [global] Default: /bin/passwd Gibt den Befehl zum Ändern des Kennworts eines Benutzers an. Wird als root ausgeführt. Unterstützt %u (Benutzer). Siehe auch unix password sync. password level = Zahl
Zulässige Werte: Zahl [global] Default: 0 Gibt die maximale Anzahl der Großbuchstaben in Kombinationen aus, die verwendet werden, um Kennwörter abzufragen. Dies ist ein Hilfsmittel für Clients, die die Schreibweise der Kennwörter (bezüglich der Groß- und Kleinschreibung) ändern, bevor sie diese an den Samba-Server
schicken. Verursacht wiederholte Anmeldeversuche mit Kennwörtern in gemischter Schreibweise und kann dadurch die Sperrung von Zugängen auslösen. Erforderlich für Windows 95/98/Me, Klartextkennwörter und Kennwörter in gemischter Schreibweise. Versuchen Sie, diese Option zu vermeiden. password server = Liste
Zulässige Werte: Liste mit NetBIOSNamen Default: NULL Gibt eine Liste der SMB-Server an, die die Gültigkeit von Kennwörtern prüfen. Wird zusammen mit einem Windows NT/2000Kennwort-Server (PDC oder BDC) und den Konfigurationsoptionen security = server oder security = domain verwendet. Achtung: Ein Windows NT/2000-Kennwort-Server muss Logins vom Samba-Server zulassen. Auf * gesetzt, ermittelt Samba den PDC, indem es den NetBIOSNamen WORKGROUP<1C> auflöst. path = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses Default: unterschiedlich
Gibt den Pfad des Verzeichnisses an, das durch eine Dateifreigabe bereitgestellt oder von einer Druckerfreigabe verwendet wird. Wird diese Option weggelassen, wird sie automatisch in der Freigabe [homes] auf das Home-Verzeichnis des Benutzers gesetzt; ansonsten ist sie standardmäßig /tmp. Akzeptiert die Variablen %u (Benutzer) und %m (Maschine). pid directory = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: /usr/local/samba/var/locks Gibt den Pfad des Verzeichnisses an, in dem sich die PID-Dateien befinden. posix locking = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Ist die Option auf YES gesetzt, bildet Samba Dateisperren, die SMB-Clients gehören, auf POSIX-Sperren ab. Sollte nicht geändert werden.
postexec = Befehl
Zulässige Werte: Befehl Default: NULL Gibt einen Befehl an, der ausgeführt wird, nachdem der Benutzer die Verbindung zur Freigabe beendet hat. Siehe auch die Optionen preexec, root preexec und root postexec. postscript = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Zwingt einen Drucker, eine Datei als PostScript zu erkennen, indem %! als erste Zeile eingefügt wird. Funktioniert nur, wenn der Drucker tatsächlich PostScript-kompatibel ist. preexec = Befehl
Zulässige Werte: Befehl Default: NULL Gibt einen Befehl an, der ausgeführt wird, bevor der Benutzer eine Verbindung zur Freigabe
herstellt. Synonym für exec. Siehe auch die Optionen postexec, root preexec und root postexec. preexec close = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist diese Option gesetzt, erlaubt sie es dem Befehl preexec zu entscheiden, ob der Benutzer auf die Freigabe zugreifen darf. Liefert der Befehl einen Return-Code zurück, der nicht null ist, wird dem Benutzer die Verbindung verwehrt. preferred master = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: auto Falls YES, ist Samba der bevorzugte Hauptsuchdienst. Dadurch erzwingt Samba beim Start eine Suchdienstwahl. Siehe auch os level. prefered master = Boolescher Wert
Zulässige Werte: YES, NO
[global] Default: auto Synonym für preferred master. preload = Diensteliste
Zulässige Werte: Liste der Freigaben Default: NULL Gibt eine Liste der Freigaben an, die immer in den Suchlisten auftauchen. Synonym für auto services. Siehe auch load printers. preserve case = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Belässt Dateinamen in der Schreibweise, in der sie vom Client geschickt wurden. Falls NO, müssen Dateinamen die Schreibweise annehmen, die durch die Option default case festgelegt wurde. Siehe auch short preserve case. printable = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Gibt an, dass eine Freigabe eine Druckerfreigabe ist. Erforderlich für alle Drucker. Synonym für print ok. printcap name = Dateiname
Zulässige Werte: Name einer Datei [global] Default: /etc/printcap Gibt den Pfad der Druckerdefinitionsdatei an, die von der Freigabe [printers] verwendet wird. Der Standardwert ändert sich unter AIX zu /etc/ qconfig und unter System V zu lpstat. Auch als printcap bezeichnet. print command = Befehl
Zulässige Werte: Befehl Default: unterschiedlich Gibt den Befehl an, mit dem eine im SpoolVerzeichnis befindliche Datei an den Drucker geschickt wird. Wird üblicherweise auf einen der
Option printing entsprechenden Standardwert initialisiert. Diese Option akzeptiert die Variablen % p (Druckername), %s (Spool-Datei) und %f (SpoolDatei als relativer Pfad). Der Befehl muss die Spool-Datei löschen. printer = Name
Zulässige Werte: Druckername Default: lp Setzt den Namen des von der Freigabe verwendeten Unix-Druckers. Auch als printer name bezeichnet. printer admin = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL Gibt Benutzer an, die einen Drucker mit Hilfe der Administrationsschnittstelle von einem WindowsSystem aus administrieren dürfen. Der Benutzer root besitzt immer dieses Recht. printer driver = Name
Zulässige Werte: der genaue Druckertreiber-String, der von
Windows benutzt wird Default: NULL Gibt den String an, der an Windows übergeben wird, wenn nach dem Treiber gefragt wird, der dazu dient, Dateien für eine Druckerfreigabe vorzubereiten. Bei diesem Wert muss auf genaue Groß-/Kleinschreibung geachtet werden. Teil des Drucksystems vor 2.2. Veraltet. printer driver file = Dateiname
Zulässige Werte: Name einer Datei [global] Default: /usr/local/samba/printers/printers.def Gibt den Ablageort für die Datei msprint.def an. Wird von Windows 95/98/Me benutzt. Teil des Drucksystems vor 2.2. Veraltet. printer driver location = Verzeichnis
Zulässige Werte: UNC eines freigegebenen Verzeichnisses Default: \\ server\ PRINTER$ Gibt den Ablageort des Treibers eines
bestimmten Druckers an. Der Wert entspricht dem Pfadnamen der Freigabe, auf der die Druckertreiberdateien abgespeichert sind. Teil des Druck- systems vor 2.2. Veraltet. printer name = Name
Zulässige Werte: Name Default: NULL Synonym für printer. printing = Wert
Zulässige Werte: bsd, sysv, hpux, aix, qnx, plp, softq, lprng, cups Default: bsd Legt ein anderes Drucksystem als das von Ihnen kompilierte fest. Es werden Anfangswerte für print command , lpq command und lprm command gesetzt. print ok = Boolescher Wert
Zulässige Werte: YES, NO Default: NO
Synonym für printable. private directory = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: /usr/local/samba/private Gibt das Verzeichnis zum Ablegen sicherheitsrelevanter Dateien wie smbpasswd und secrets.tdb an. Neu in Samba 3.0. protocol = Name
Zulässige Werte: NT1, LANMAN2, LANMAN1, COREPLUS, CORE [global] Default: NT1 Synonym für max protocol. public = Boolescher Wert
Zulässige Werte: YES, NO
Default: NO Falls YES, werden für diese Freigabe keine Kennwörter benötigt. Auch als guest ok bezeichnet. queuepause command = Befehl
Zulässige Werte: vollständiger Pfad zum Skript Default: unterschiedlich Gibt den Befehl zum Unterbrechen einer Druckerwarteschlange an. Wird üblicherweise durch die Option printing auf einen Standardwert initialisiert. queueresume command = Befehl
Zulässige Werte: vollständiger Pfad zum Skript Default: unterschiedlich Gibt den Befehl zum Fortführen einer Druckerwarteschlange an. Wird üblicherweise durch die Option printing auf einen Standardwert initialisiert.
read bmpx = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option auf YES gesetzt, wird die Meldung »Read Block Multiplex« unterstützt. Sollte nicht geändert werden. read list = Liste
Zulässige Werte: Liste mit Benutzerund/oder Gruppennamen Default: NULL Gibt eine Liste mit Benutzern an, die eine schreibbare Freigabe nur lesen dürfen. read only = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Legt eine Freigabe als schreibgeschützt fest. Gegenstück von writeable und write ok. read raw = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Erlaubt es Clients, Daten mit einer Paketgröße von 64 KByte zu lesen. Empfohlen. read size = Zahl
Zulässige Werte: positives Integer [global] Default: 16384 Lässt zu, dass Lese- und Schreibvorgänge auf Festplatten sich mit Lese- und Schreibvorgängen im Netzwerk überschneiden. Dient der Leistungssteigerung. Der Wert der Option sollte nicht größer als der Vorgabewert sein. realm = String
Zulässige Werte: Kerberos-RealmName [global]
Default: NONE Gibt den Realm-Namen für die Kerberos 5Authentifizierung an. Verlangt die Konfigurationsoption --with-krb5. Neu in Samba 3.0. remote announce = Liste
Zulässige Werte: Liste entfernter Adressen [global] Default: NULL Fügt Arbeitsgruppen in die Liste ein, auf der der Samba-Server sich selbst bekannt gibt. Wird als IP-Adresse und optionale Arbeitsgruppe festgelegt (zum Beispiel 192.168.220.215/ SIMPLE), wobei mehrere Einträge durch Leerzeichen getrennt werden. Bei den Adressen kann es sich um die spezielle Adresse des Hauptsuchdienstes in einem Subnetz oder in gerichteten Broadcasts (d.h. ###.###. ###.255) handeln. Der Server erscheint dann in den Suchlisten dieser Arbeitsgruppen. WINS ist nicht erforderlich. remote browse sync = Liste
Zulässige Werte: IP-Adressen
[global] Default: NULL Führt eine Synchronisierung der Suchlisten mit anderen Samba-Servern aus, die als lokale Hauptsuchdienste agieren. Bei den Adressen kann es sich um bestimmte Adressen oder um gerichtete Broadcasts (d.h. ###.###.###.255) handeln. Im zweiten Fall wird Samba veranlasst, den lokalen Hauptsuchdienst in diesem Subnetz zu suchen. restrict anonymous = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Verweigert Benutzern den Zugriff, die keinen Benutzernamen angeben. Diese Option ist standardmäßig deaktiviert, denn wenn der Samba-Server als PDC einer Domäne agiert, kann diese Option einen Client daran hindern, seinen Zugang erneut anzumelden, wenn sich jemand Neues anmeldet. Die Verwendung dieser Option wird nur empfohlen, wenn alle Clients Windows NT/2000/XP-Systeme sind. root = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: NULL Synonym für root directory. root dir = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: NULL Synonym für root directory. root directory = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: /
Gibt ein Verzeichnis für chroot( ) an, bevor die Daemons gestartet werden. Verhindert jeden Zugriff auf Bereiche außerhalb dieses Verzeichnisbaums. Beachten Sie auch die Konfigurationsoption wide links. Auch als root und root dir bezeichnet. root postexec = Befehl
Zulässige Werte: Befehl Default: NULL Gibt einen Befehl an, der als root ausgeführt wird, nachdem die Verbindung zur Freigabe abgebrochen wurde. Beachten Sie auch die Konfigurationsoptionen preexec, postexec und root preexec. Wird nach dem Befehl postexec des Benutzers ausgeführt. Sollte vorsichtig eingesetzt werden. root preexec = Befehl
Zulässige Werte: Befehl Default: NULL Gibt einen Befehl an, der als root ausgeführt wird, bevor eine Verbindung zur Freigabe hergestellt wird. Beachten Sie auch die Konfigurationsoptionen preexec, postexec und root postexec. Wird vor dem Befehl preexec des
Benutzer ausgeführt. Sollte vorsichtig eingesetzt werden. root preexec close = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option gesetzt, kann der Befehl root preexec entscheiden, ob der Benutzer auf die Freigabe zugreifen darf. Liefert der Befehl einen Return-Code zurück, der ungleich null ist, wird dem Benutzer der Zugriff verwehrt. security = Wert
Zulässige Werte: share, user, server, domain [global] Default: user Legt die Authentifizierungsmethode des Clients fest. Bei security = share werden Dienste durch Kennwörter geschützt, das heißt, sie stehen jedem zur Verfügung, der das Kennwort kennt. Bei security = user besitzen die Benutzer Zugänge und Kennwörter und müssen sich am Server authentifizieren, bevor sie auf Dienste
zugreifen dürfen. Bei security = server besitzen die Benutzer Zugänge und Kennwörter wie bei security = user. Ein separates System authentifiziert sie für Samba. Bei security = domain wird eine Windows NT-DomänenAuthentifizierung mittels eines Windows NT/2000- oder eines anderen Samba-Servers implementiert, die dann die Zugänge der Benutzer validieren. Beachten Sie auch die Konfigurationsoptionen password server und encrypted passwords. security mask = Wert
Zulässige Werte: oktaler Wert von 0 bis 0777 Default: 0777 Legt fest, welche Berechtigungs-Bits geändert werden dürfen, wenn ein Benutzer auf einem Windows NT/2000/XP-System die Unix-Rechte von Dateien auf dem Samba-Server mit Hilfe des ACL-Bearbeitungsdialogs auf dem WindowsSystem bearbeitet. Alle Bits, die in der Maske gesetzt sind, dürfen vom Benutzer geändert werden. Alle Bits, die nicht gesetzt sind, bleiben auch bei der Datei unverändert, auch wenn der Benutzer versucht, sie zu ändern. Verlangt nt acl support = YES. Beachten Sie, dass die Abbildung der DOS-Attribute system, hidden und archive nicht sehr intuitiv ist.
server string = String
Zulässige Werte: String [global] Default: Samba %v Gibt den Namen an, der in den Suchlisten dem Namen des Samba-Servers entspricht. Akzeptiert die Variablen %v (Samba-Versionsnummer) und % h (Hostname). set directory = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Erlaubt es dem DEC Pathworks-Client, den Befehl set dir zu verwenden. share modes = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Weist Samba an, Dateisperren im Windows-Stil (deny-Modus) zu unterstützen. Nicht ändern.
short preserve case = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Ist diese Option auf YES gesetzt, bleiben verkürzte Dateinamen im 8.3-Stil in der Schreibweise, in der sie vom Client geschickt wurden. Falls NO, wird die Schreibweise erzwungen, die durch die Option default case angegeben wurde. Siehe auch preserve case. show add printer wizard = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Diese Option teilt Clients mit, dass der Assistent zum Hinzufügen eines Druckers verwendet werden kann, um von Windows NT/2000/XPClients aus einen Samba-Drucker anzulegen. Siehe auch add printer command, delete printer command und printer admin. shutdown script = Befehl
Zulässige Werte: Befehl
[global] Default: NONE Gibt einen Befehl an, der das Herunterfahren eines Systems initiiert. Der Befehl wird unter der UID des verbundenen Benutzers ausgeführt. Die Optionen %m (Nachricht), %t (Verzögerung), %r (Reboot) und %f (Force) werden unterstützt. Siehe auch abort shutdown script. Neu in Samba 3.0. smb passwd file = Dateiname
Zulässige Werte: Name einer Datei [global] Default: /usr/local/samba/private/smbpasswd Setzt den bei der Kompilierung festgelegten Pfad zur verschlüsselten Kennwortdatei außer Kraft. Siehe auch encrypted passwords und private dir. socket address = Wert
Zulässige Werte: IP-Adresse [global]
Default: NULL Gibt die Adresse an, unter der auf Verbindungen gewartet wird. Standardmäßig wird an allen Adressen gewartet. socket options = Liste
Zulässige Werte: Socket-Optionsliste [global] Default: TCP_NODELAY Legt betriebssystemspezifische Socket-Optionen fest. SO_KEEPALIVE veranlasst TCP, Clients stündlich dahingehend zu prüfen, ob sie noch erreichbar sind. TCP_NODELAY sendet sogar kleine Pakete, um die Verzögerung niedrig zu halten. Wenn das Betriebssystem sie unterstützt, sollten beide eingesetzt werden. source environment = Dateiname
Zulässige Werte: Name einer Datei [global] Default: NULL Veranlasst Samba, beim Start eine Liste mit Umgebungsvariablen aus einer Datei einzulesen.
Das kann nützlich sein, wenn Samba in einer Cluster-Umgebung eingerichtet wird. Der Dateiname kann mit einem »|«-Zeichen (Pipe) beginnen. In diesem Fall führt Samba die Datei als Befehl aus, um die Variablen zu beziehen. Die Datei muss root gehören und darf nicht von allen (»world«) schreibbar sein. Beginnt der Dateiname mit einem »|«-Zeichen, muss er auf einen Befehl verweisen, der weder von allen schreibbar ist noch sich in einem Verzeichnis befindet, das von allen schreibbar ist. Die Daten müssen in Form von Zeilen wie SAMBA_NETBIOS_NAME=meinhostname vorliegen. Dieser Wert steht dann in den smb. conf-Dateien als %$SAMBA_NETBIOS_NAME zur Verfügung. ssl = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Veranlasst Samba, für den Datenaustausch mit einigen oder allen Hosts SSL zu benutzen. Erfordert die Konfigurationsoption --with-ssl. Seit Samba 3.0 veraltet. ssl CA certDir = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: /usr/local/ssl/certs Gibt ein Verzeichnis an, das eine Datei für jede Certification Authority (CA) enthält, der der Samba-Server vertraut. Dadurch kann Samba Client-Zertifikate verifizieren. Teil der SSLUnterstützung. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl CA certFile = Dateiname
Zulässige Werte: Name einer Datei [global] Default: /usr/local/ssl/certs/trustedCAs.pem Gibt eine Datei an, die Informationen für jede CA enthält, der der Samba-Server vertraut. Dadurch kann Samba Client-Zertifikate verifizieren. Teil der SSL-Unterstützung. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl ciphers = Liste
Zulässige Werte: Liste mit Codes [global] Default: NULL Gibt an, welche Codes während der SSLAushandlung angeboten werden sollen. Wird nicht empfohlen. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl client cert = Dateiname
Zulässige Werte: Name einer Datei [global] Default: /usr/local/ssl/certs/smbclient.pem Gibt eine Datei an, die das SSL-Zertifikat des Servers enthält. Dieses wird durch smbclient verwendet, falls in dieser Umgebung Zertifikate erforderlich sind. Verlangt die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl client key = Dateiname
Zulässige Werte: Name einer Datei
[global] Default: /usr/local/ssl/private/smbclient.pem Gibt eine Datei an, die den privaten SSLSchlüssel des Servers enthält, der von smbclient verwendet wird. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl compatibility = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Legt fest, ob SSLeay aus Gründen der Fehlerkompatibilität mit anderen SSLImplementierungen konfiguriert werden muss. Wird nicht empfohlen. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl hosts = Host-Liste
Zulässige Werte: Liste mit Hosts oder Netzwerken [global]
Default: NULL Erfordert, dass mit den aufgeführten Hosts SSL benutzt wird. Wenn die Option ssl gesetzt ist, verlangt der Server standardmäßig mit allen Hosts SSL. Erfordert die Konfigurationsoption -with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl hosts resign = Host-Liste
Zulässige Werte: Liste mit Hosts oder Netzwerken [global] Default: NULL Unterdrückt die Verwendung von SSL mit den aufgeführten Hosts. Wenn die Option ssl gesetzt ist, verlangt der Server standardmäßig mit allen Hosts SSL. Erfordert die Konfigurationsoption -with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl require clientcert = Boolescher Wert
Zulässige Werte: YES, NO [global]
Default: NO Verlangt von den Clients die Benutzung von Zertifikaten, wenn SSL zur Anwendung kommt. Diese Option wird empfohlen, falls SSL verwendet wird. Erfordert die Konfigurationsoption --withssl. Wird seit Samba 3.0 als veraltet angesehen. ssl require servercert = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Wenn SSL verwendet wird, verlangt smbclient von den Servern die Benutzung von Zertifikaten. Diese Option wird bei Anwendung von SSL empfohlen. Erfordert die Konfigura-tionsoption -with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl server cert = Dateiname
Zulässige Werte: Name einer Datei [global] Default: NULL
Gibt eine Datei an, die das SSL-Zertifikat des Servers enthält. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl server key = Dateiname
Zulässige Werte: Name einer Datei [global] Default: NULL Gibt den Namen einer Datei an, die den privaten SSL-Schlüssel des Servers enthält. Wurde keine Datei angegeben und wird SSL benutzt, sieht der Server seinen Schlüssel in seinem ServerZertifikat nach. Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. ssl version = String
Zulässige Werte: "ssl2", "ssl3", "ssl2or3", "tls1" [global] Default: "ssl2or3" Definiert, welche Versionen des SSL-Protokolls
der Server benutzen kann: nur Version 2 (»ssl2«), nur Version 3 (»ssl3«), Version 2 oder 3 dynamisch ausgehandelt (»ssl2or3«) oder Transport Layer Security (»tls1«). Erfordert die Konfigurationsoption --with-ssl. Wird seit Samba 3.0 als veraltet angesehen. stat cache = boolean
Zulässige Werte: YES, NO [global] Default: YES Veranlasst den Samba-Server Client-Namen im Cache abzulegen. Dadurch beschleunigt sich die Namensauflösung. Sollte nicht geändert werden. stat cache size = Zahl
Zulässige Werte: Zahl [global] Default: 50 Bestimmt die Anzahl der Clients, die zur schnelleren Auflösung im Cache abgespeichert werden. Sollte nicht geändert werden. status = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Ist die Option auf YES gesetzt, werden Verbindungen in eine Datei (oder in gemeinsam genutzten Speicher) protokolliert. smbstatus kann auf diese Daten zugreifen. Wird seit Samba 3.0 als veraltet angesehen. strict allocate = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option auf YES gesetzt, werden beim Erzeugen oder Vergrößern von Dateien alle Plattenblöcke alloziert; das heißt, es erfolgt nicht die normale knappe Datei-Allozierung, die bei Unix üblich ist. Dies bremst zwar den Server aus, entspricht aber auch einem Verhalten, das dem von Windows entspricht und dafür sorgt, dass Samba »Out of Quota«-Meldungen korrekt ausgibt. strict locking = Boolescher Wert
Zulässige Werte: YES, NO
Default: NO Ist die Option auf YES gesetzt, wird bei jedem Zugriff auf das Vorhandensein von Sperren geprüft, nicht nur auf Anforderung und beim Öffnen. Nicht empfohlen. strict sync = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option auf YES gesetzt, schreibt Samba Daten auf die Festplatte, wenn ein Client das Sync-Bit in einem Paket setzt. Bei NO schreibt Samba Daten auf die Festplatte, wenn die Puffer gefüllt sind. Standardmäßig NO, da der Windows 98-Explorer das Bit (fälschlicherweise) in allen Paketen setzt. strip dot = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Entfernt die abschließenden Punkte aus Dateinamen. Funktioniert nicht in Samba 2.2; ver-
wenden Sie stattdessen mangled map. sync always = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Ist die Option auf YES gesetzt, ruft Samba nach jedem Schreibvorgang die Funktion fsync (3) auf. Vermeiden Sie diese Option außer bei der Fehlersuche bei abstürzenden Servern. syslog = Zahl
Zulässige Werte: Zahl [global] Default: 1 Legt die Stufe der SambaProtokollierungsnachrichten fest, die an syslog gesandt werden. Höhere Werte erzeugen eine ausführlichere Ausgabe. In der Datei syslog.conf muss die entsprechende Protokollierung aktiviert sein. syslog only = Boolescher Wert
Zulässige Werte: YES, NO
[global] Default: NO Ist die Option auf YES gesetzt, werden Protokollierungsnachrichten nur an syslog anstatt an die Standard-Samba-Protokolldateien gesandt. template homedir = Pfad
Zulässige Werte: vollständiger Pfad eines Verzeichnisses [global] Default: /home/%D/%U Gibt das Home-Verzeichnis für Unix-LoginSitzungen für Benutzer an, die sich über winbind authentifiziert haben. %D wird durch den Domainnamen des Benutzers ersetzt, %U durch den Benutzernamen. template shell = Dateiname
Zulässige Werte: vollständiger Pfad der Shell [global]
Default: /bin/false Gibt die Shell für Unix-Login-Sitzungen für Benutzer an, die sich über winbind authentifiziert haben. Der Standardwert verhindert Benutzeranmeldungen von Windows-Domänen. time offset = Zahl
Zulässige Werte: Anzahl Minuten [global] Default: 0 Gibt an, wie viele Minuten bei der Zeitzonenberechnung des Systems addiert werden. Wird angegeben, um einen Fehler der Clients bei der Verwendung der Sommerzeit auszugleichen. Nicht empfohlen. time server = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Ist die Option auf YES gesetzt, stellt nmbd sich als Anbieter des SMB-Time-Service für Clients zur Verfügung. Diese Option beeinflusst lediglich, ob
der Time-Service bekannt gegeben wird. Sie aktiviert oder deaktiviert den Time-Service nicht. timestamp logs = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Synonym für debug timestamp. total print jobs = Zahl
Zulässige Werte: Zahl [global] Default: 0 (keine Beschränkung) Beschränkt die Gesamtanzahl der aktuellen Druck-Jobs auf dem Server. Siehe auch max print jobs. unix extensions = Boolescher Wert
Zulässige Werte: YES, NO [global]
Default: NO Ist die Option auf YES gesetzt, werden CIFS-UnixErweiterungen unterstützt, wodurch sich eine bessere Dateisystem-Unterstützung für UnixClients ergibt. Wird in Samba 3.0, wo immer Unterstützung angeboten wird, als veraltet angesehen. unix password sync = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Ist die Option auf YES gesetzt, wird versucht, das Unix-Kennwort des Benutzers immer auch dann zu ändern, wenn er sein SMB-Kennwort ändert. Soll die Synchronisierung von Unix- und MicrosoftKennwortdatenbanken erleichtern. Siehe auch password program und passwd chat. update encrypted = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO
Aktualisiert die Datei mit den verschlüsselten Kennwörtern, sobald sich ein Benutzer mit einem unverschlüsselten Kennwort anmeldet. Soll den Übergang von unverschlüsselten zu verschlüsselten Kennwörtern erleichtern. use client driver = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Wird eingesetzt, um Access Denied; Unable to connect-Meldungen zu vermeiden, wenn von Windows NT/2000/XP-Clients aus zu einem Samba-Drucker verbunden wird. Nur notwendig, wenn der Client einen lokalen Druckertreiber für den Samba-Drucker besitzt. use mmap = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: unterschiedlich Teilt Samba mit, ob der Systemaufruf mmap( ) auf den Samba-Hosts richtig funktioniert. Standardmäßig ist die Option automatisch richtig
gesetzt. Nicht ändern. use rhosts = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Ist die Option auf YES gesetzt, werden die ~/. rhosts-Dateien der Benutzer dazu verwendet, Systeme zu identifizieren, von denen sich die Benutzer ohne Angabe eines Kennworts anmelden können. Von der Verwendung wird abgeraten. Wird seit Samba 3.0 als veraltet angesehen. use sendfile = Boolescher Wert
Zulässige Werte: YES, NO Default: NO Falls YES, führt Samba Datenübertragungen für ausschließlich mit Oplocks gesperrte Dateien über den Systemaufruf sendfile( ) aus. Dadurch wird eine deutliche Leistungssteigerung erreicht. Diese Option steht zur Verfügung, falls Samba mit der Option --with-sendfile-support konfiguriert wurde. Dies ist eine experimentelle Option, die in Samba 2.2.5 eingeführt wurde.
user = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL Synonym für username. username = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL Gibt eine Liste mit Benutzern an, die durchprobiert werden, wenn Sicherheitsmaßnahmen auf Freigabeebene wirksam sind. Auch als user oder users bezeichnet. Von der Verwendung wird abgeraten. Benutzen Sie vom Client aus stattdessen NET USE \\server\share %user. username level = Zahl
Zulässige Werte: Zahl [global] Default: 0
Gibt die Anzahl der Kombinationen aus Großbuchstaben an, die zum Ermitteln von UnixBenutzernamen eingesetzt werden können. Dient dazu, mit Windows-Benutzernamen klarzukommen, die nur in einer Schreibweise (Großbuchstaben) vorkommen. Von der Benutzung wird abgeraten. username map = Dateiname
Zulässige Werte: Name einer Datei [global] Default: NULL Benennt eine Datei mit Unix-zu-WindowsNamenspaaren. Dient dazu, unterschiedliche Schreibweisen von Zugangsnamen und WindowsBenutzernamen, die länger als acht Zeichen sind, aufeinander abzubilden. users = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL Synonym für username. utmp = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Diese Option steht zur Verfügung, wenn Samba mit der Option --with-utmp konfiguriert wurde. Ist sie gesetzt, legt Samba utmp/utmpxDatensätze an, sobald eine Verbindung zu einem Samba-Server hergestellt wird. Sites können diese Option einsetzen, um alle Verbindungen zu einer Samba-Freigabe als System-Login aufzuzeichnen. utmp directory = Verzeichnis
Zulässige Werte: Name eines Verzeichnisses [global] Default: NULL Diese Option steht zur Verfügung, wenn Samba mit der Option --with-utmp konfiguriert wurde. Sind diese Option und utmp gesetzt, sucht Samba im angegebenen Verzeichnis und nicht im vorgegebenen Systemverzeichnis nach utmp/ utmpx-Dateien. valid chars = Liste
Zulässige Werte: Liste numerischer Werte Default: NULL Fügt einem Zeichensatz Sonderzeichen hinzu. Siehe auch client code page. Wird seit Samba 3.0 als veraltet angesehen. valid users = Benutzerliste
Zulässige Werte: Benutzerliste Default: NULL (erlaubt jeden) Gibt eine Liste mit Benutzern an, die eine Verbindung zu einer Freigabe herstellen dürfen. Siehe auch invalid users. veto files = Durch Schrägstriche getrennte Liste
Zulässige Werte: durch Schrägstriche getrennte Liste mit Dateinamen Default: NULL Gibt eine Liste mit Dateien an, die der Client nicht sieht, wenn er den Inhalt eines Verzeichnisses
auflistet. Siehe auch delete veto files und hide files. veto oplock files = Durch Schrägstriche getrennte Liste
Zulässige Werte: durch Schrägstriche getrennte Liste mit Dateinamen Default: NULL Gibt eine Liste mit Dateien an, die nicht mittels Oplocks gesperrt (und auf Clients zwischengespeichert) werden sollen. Siehe auch oplocks und fake oplocks. vfs object = Dateiname
Zulässige Werte: vollständiger Pfad auf die Shared Library Default: NULL Gibt die Shared Library für die Benutzung durch das Virtual File System (VFS) von Samba an. Erfordert die Konfigurationsoption --with-vfs. vfs options = String
Zulässige Werte: durch Leerzeichen getrennte Liste mit Optionen Default: NULL Gibt die Parameter für das VFS an. Erfordert die Konfigurationsoption --with-vfs. Siehe vfs object. volume = String
Zulässige Werte: Freigabename Default: NULL Legt Datenträgernamen einer Verzeichnisfreigabe fest. Besonders nützlich bei freigegebenen CDROMs. wide links = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Ist die Option gesetzt, verfolgt Samba symbolische Links aus der Verzeichnisfreigabe heraus. Beachten Sie auch die Optionen root dir und follow symlinks. winbind cache time = Zahl
Zulässige Werte: Anzahl Sekunden [global] Default: 15 Gibt an, wie lange der winbindd-Daemon Benutzer- und Gruppeninformationen im Cache speichert. winbind enum users = Boolescher Wert
Zulässige Werte: YES/NO [global] Default: YES Ist die Option auf NO gesetzt, wird die Aufzählung der Benutzer durch winbind unterdrückt. Von der Verwendung wird abgeraten. winbind enum groups = Boolescher Wert
Zulässige Werte: YES/NO [global] Default: YES
Ist die Option auf NO gesetzt, wird die Aufzählung der Gruppen durch winbind unterdrückt. Von der Verwendung wird abgeraten. winbind gid = Zahlenbereich
Zulässige Werte: Integer-Integer [global] Default: NULL Gibt den Bereich der Gruppen-IDs an, die winbind für Benutzer von Windows NT-Domänen verwendet, die eine Verbindung zu Samba herstellen. winbind separator = Zeichen
Zulässige Werte: ASCII-Zeichen [global] Default: \ Gibt das Zeichen an, das winbind verwendet, um Domänen- und Benutzernamen zu trennen. winbind uid = Zahlenbereich
Zulässige Werte: Integer-Integer
[global] Default: NULL Gibt den Bereich der Benutzer-IDs an, die winbind für Benutzer von Windows NT-Domänen verwendet, die eine Verbindung zu Samba herstellen. wins hook = Befehl
Zulässige Werte: vollständiger Pfad zum Skript [global] Default: NULL Gibt einen Befehl an, der immer dann ausgeführt wird, wenn der WINS-Server seine Datenbank aktualisiert. Erlaubt die Synchronisierung von WINS mit DNS oder anderen Diensten. Dem Befehl wird eines der Argumente add, delete oder refresh übergeben, gefolgt vom NetBIOSNamen, dem Namenstyp (zwei Hexadezimalzahlen), der TTL in Sekunden und den IP-Adressen, die mit dem NetBIOS-Namen korrespondieren. Verlangt wins service = YES. wins proxy = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: NO Ist die Option auf YES gesetzt, führt nmbd Anfragen zur Namensauflösung an WINS-Server stellvertretend für alte Clients durch, die Broadcasts verwenden. Der WINS-Server befindet sich typischerweise in einem anderen Subnetz. wins server = Wert
Zulässige Werte: Hostname oder IPAdresse [global] Default: NULL Legt den DNS-Namen oder die IP-Adresse des WINS-Servers fest. wins support = Boolescher Wert
Zulässige Werte: YES, NO [global]
Default: NO Ist die Option auf YES gesetzt, wird der WINSDienst aktiviert. Die Option wins server muss nicht gesetzt sein, falls wins support = YES ist. workgroup = Name
Zulässige Werte: Arbeitsgruppenname [global] Default: bei der Kompilierung festgelegt Legt die Arbeitsgruppe oder Domäne fest, zu der der Samba-Server gehört. Setzt den bei der Kompilierung festgelegten Standardwert von WORKGROUP außer Kraft. Es wird sehr empfohlen, einen anderen Namen als WORKGROUP zu wählen. writable = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Gegenstück von read only; writeable und write ok sind Synonyme.
writeable = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Gegenstück von read only; writable und write ok sind Synonyme. write cache size = Zahl
Zulässige Werte: Dezimalwert von Bytes Default: 0 (deaktiviert) Belegt einen Schreibpuffer der angegebenen Größe, in dem Samba Daten sammelt, bevor es diese auf die Festplatte schreibt. Diese Option kann verwendet werden, um sicherzustellen, dass jeder Schreibvorgang die optimale Größe für ein bestimmtes Dateisystem besitzt. Sie wird typischerweise zusammen mit RAID-Systemen eingesetzt, die eine bevorzugte Schreibgröße haben, sowie mit Systemen, die einen großen Speicher und langsame Platten besitzen. write list = Benutzerliste
Zulässige Werte: Benutzerliste
Default: NULL Gibt eine Liste mit Benutzern an, die Lese-/ Schreibzugriff auf eine schreibgeschützte Freigabe erhalten. Siehe auch read list. write ok = Boolescher Wert
Zulässige Werte: YES, NO Default: YES Synonym für writable. write raw = Boolescher Wert
Zulässige Werte: YES, NO [global] Default: YES Erlaubt schnelle TCP-Schreibzugriffe mit 64KByte-Puffern. Empfohlen.
Glossar der Arten der Konfigurationswerte Befehl Ein Unix-Skript oder ein kompiliertes
Programm mit einer absoluten Pfadangabe für das Programm selbst und seine Parameter. Benutzerliste Eine Liste mit Benutzernamen und/oder Gruppennamen. @gruppen_name schließt alle ein, die in der NIS-Gruppe gruppe_name sind, falls eine existiert, oder ansonsten alle, die in der Unix-Gruppe gruppen_name sind. Außerdem ist +gruppen_name eine UnixGruppe, &gruppen_name eine NIS-Gruppe. &+ und +& veranlassen ein geordnetes Durchsuchen sowohl der Unix- als auch der NIS-Gruppen. Boolescher Wert Einer von zwei Werten, entweder YES oder NO. Dateiname Eine absolute Pfadangabe auf eine Datei, zum Beispiel: /etc/printcap Dienst-(Freigabe-)Liste Eine Liste mit Dienst-(Freigabe-)Namen, ohne die umschließenden Klammern. Durch Schrägstriche getrennte Liste Eine Liste mit Dateinamen, die durch »/«Zeichen getrennt sind, wodurch Leerzeichen eingebettet werden können. Zum Beispiel: /.*/Meine Dokumente/*.doc/
Host-Liste Eine Liste mit Hosts. Erlaubt IP-Adressen, Adressmasken, Domainnamen, ALL und
EXCEPT. Name Ein einzelner Name eines bestimmten Objekts, wie in der Beschreibung der Option angegeben. Remote-Liste Eine Liste mit Subnetz-Broadcast-Adresse/ Arbeitsgruppe-Paaren, zum Beispiel: 192.168.2.255/SERVERS 192.168.4.255/STAFF
Schnittstellenliste Eine Liste mit Schnittstellen, entweder im Format Adresse/Netzmaske oder Adresse/nBits, zum Beispiel: 192.168.2.10/255.255.255.0, 192.168.2.10/24
String Eine Zeile beliebigen Texts. Verzeichnis Eine absolute Pfadangabe auf ein Verzeichnis, zum Beispiel: /usr/local/samba/lib
Wert Ein Wert beliebigen Typs, wie in der Beschreibung der Option festgelegt.
Zahl Ein positives Integer. Zahlenbereich Zwei Zahlen, getrennt durch einen Bindestrich, die einen Minimal- und einen Maximalwert angeben. Zum Beispiel: 100-250
Zeichen Ein einzelnes ASCII-Zeichen. Zuordnungsliste Eine Liste mit Dateinamen-Zuordnungen wie etwa (*.html *.htm).
Variablen der Konfigurationsdatei Tabelle B-1 führt die Variablen der SambaKonfigurationsdatei auf.
Tabelle B-1 Variablen der Konfigurationsdatei Name
Bedeutung
%a
Architektur des Clients (Samba, WfWg, WinNT, Win95 oder UNKNOWN)
%d
Prozess-ID des aktuellen ServerProzesses
%D
Windows NT-Domäne des Benutzers
%f
Drucker-Spool-Datei als relativer Pfad (nur für das Drucken)
%f
Benutzer, von dem eine Nachricht geschickt wurde (nur für Nachrichten)
%G
Primärer Gruppenname von %U (angeforderter Benutzername)
%g
Primärer Gruppenname von %u (tatsächlicher Benutzername)
%H
Home-Verzeichnis von %u (tatsächlicher Benutzername)
%h
(Internet-)Hostname des SambaServers
%I
IP-Adresse des Clients
%j
Nummer des Druck-Jobs (nur für das Drucken)
%L
NetBIOS-Name des Samba-Servers (virtuelle Server haben mehrere Namen)
%M
(Internet-)Hostname des Clients
%m
NetBIOS-Name des Clients
%N
Name des Servers mit dem NISHome-Verzeichnis (ohne NIS identisch mit %L)
%n
Neues Kennwort (nur für Kennwortänderung)
%o
Altes Kennwort (nur für Kennwortänderung)
%P
root-Verzeichnis der aktuellen Freigabe (tatsächlich)
%p
root-Verzeichnis der aktuellen Freigabe (in einer NIS-homedir-Map)
%p
Druckdateiname (nur für das Drucken)
%R
Verwendete Protokollstufe (CORE, COREPLUS, LANMAN1, LANMAN2 oder NT1)
%S
Name der aktuellen Freigabe
%s
Name der Datei, in der sich die Nachricht befindet (nur für Nachrichten)
%s
Dateiname der Drucker-Spool-Datei (nur für das Drucken)
%T
Aktuelles Datum und Uhrzeit
%t
Zielsystem (nur für Nachrichten)
%U
Angeforderter Benutzername für aktuelle Freigabe
%u
Benutzername der aktuellen Freigabe
%v
Samba-Version
%$name Wert der Umgebungsvariablen name
Anhang C Zusammenfassung der SambaDaemons und -Befehle Dieser Anhang enthält eine Referenzliste der Kommandozeilen-Optionen sowie andere Informationen, die Ihnen bei der Benutzung der Programme helfen, die mit der Samba-Distribution geliefert werden.
Samba-Daemons Die folgenden Abschnitte liefern Ihnen Informationen über die Kommandozeilen-Parameter für smbd, nmbd und winbindd.
smbd Das smbd-Programm stellt Sambas Datei- und Druckerdienste zur Verfügung. Dafür verwendet es einen TCP/IP-Strom und einen Daemon pro Client. Es wird von der Datei /usr/local/ samba/lib/smb.conf, der Standardkonfigurationsdatei, gesteuert, die durch Kommandozeilen-Optionen außer Kraft gesetzt werden kann. Die Konfigurationsdatei wird einmal pro Minute automatisch neu ausgewertet. Hat sie sich geändert, werden die meisten neuen Optionen sofort wirksam. Sie können Samba zwingen, die Konfigurationsdatei auf der Stelle neu zu laden, indem Sie smbd ein SIGHUP-Signal senden. Das Neuladen der Konfigurationsdatei hat keinen Einfluss auf Clients, die bereits mit dem Samba-Server verbunden sind. Damit ein Client auf die neue Konfiguration reagiert, müsste entweder er die Verbindung abbrechen und dann neu aufbauen, oder der
Server selbst müsste neu gestartet werden, um damit alle Clients zum Neuaufbau der Verbindung zu zwingen. Weitere Signale Um einen smbd-Prozess zu beenden, schicken Sie ihm das Signal SIGTERM (15). Dieses erlaubt dem Prozess ein sanftes Beenden. Rabiater wirkt das Signal SIGKILL (9). Bei den Samba-Versionen vor 2.2 konnte die Protokollierungsstufe mit Hilfe der Signale SIGUSR1 oder SIGUSR2 erhöht oder verringert werden. Dies wird nicht mehr unterstützt. Verwenden Sie stattdessen smbcontrol. Befehlszusammenfassung smbd [Optionen]
Optionen -a Veranlasst, dass bei jeder neuen Verbindung zum Samba-Server die Protokollierungsnachrichten an die Protokolldatei angehängt werden. Diese Option ist das Gegenteil von -o. Es handelt sich hierbei um die Standardeinstellung. -D Führt das smbd-Programm als Daemon aus. Dies ist die empfohlene Methode, smbd einzusetzen. Außerdem handelt es sich um die Standardaktion, wenn smbd von einer interaktiven Kommandozeile aus ausgeführt wird. smbd kann außerdem vom inetd gestartet werden. -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich reicht von 0 bis 10. Der Wert auf der Kommandozeile setzt den Wert außer Kraft, der in der Datei smb.conf angegeben ist. Bei Protokollierungsstufe 0 werden nur
die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen hauptsächlich der Fehlersuche und verlangsamen smbd merklich. -h Gibt für den Befehl smbd Hinweise zur Benutzung aus. -i Führt smbd interaktiv und nicht als Daemon aus. Diese Option wird verwendet, um den normalen Daemon-Modus außer Kraft zu setzen, wenn smbd von der Kommandozeile aus aufgerufen wird. -l Protokollierungsverzeichnis Schickt die Protokollierungsnachrichten an eine andere Stelle als die, die in das Programm kompiliert oder in der Datei smb.conf angegeben wurde. Vorgabe ist oft / usr/local/samba/ var/, /usr/samba/var/ oder /var/ log/. Die Protokolldatei wird in das angegebene Verzeichnis geschrieben und log.smbd genannt. Falls das Verzeichnis nicht existiert, wird der bei der Kompilierung angegebene Standardwert verwendet. -O Socket-Optionen Legt die TCP/IP-Socket-Optionen fest, wobei die gleichen Parameter wie bei der Konfigurationsoption socket options verwendet werden. Wird oft zum Steigern der Leistung und für Testzwecke verwendet. -o Veranlasst das Überschreiben der Protokolldateien beim Öffnen (Gegenteil von -a). Falls Sie diese Option verwenden, müssen Sie sich nicht damit befassen, die richtigen Protokolleinträge zu suchen, wenn Sie eine Reihe von Tests durchführen, bei denen Sie die Protokolldatei jedes Mal kontrollieren. -p Port-Nummer Legt die TCP/IP-Port-Nummer fest, von der der Server Anfragen akzeptiert. Alle Microsoft-Clients kontaktieren den Standard-Port 139, mit Ausnahme von Windows 2000/XP, das ohne die NetBIOSProtokollschicht Port 445 für SMB verwenden kann. -P Veranlasst smbd, im »passiven« Modus zu starten. In
diesem Modus lauscht der Daemon nur und verursacht keinen Verkehr auf dem Netzwerk. Diese Option ist nur für die Fehlersuche durch Entwickler sinnvoll. -s Konfigurationsdatei Gibt den Ablageort der Samba-Konfigurationsdatei an. Die Datei wird zwar standardmäßig unter /usr/local/ samba/lib/smb.conf gespeichert, Sie können diesen Wert jedoch von der Kommandozeile aus überschreiben. Wird üblicherweise für die Fehlersuche verwendet. -v Gibt die aktuelle Version von Samba aus.
nmbd Das Programm nmbd ist Sambas NetBIOS-Namensdienstund Such-Daemon. Es antwortet auf NBT-NamensdienstBroadcast-Anfragen (NetBIOS over TCP/IP; auch als NetBT bezeichnet) von SMB-Clients und optional auf WINS-Anfragen (Windows Internet Name Service von Microsoft). Bei beiden handelt es sich um Abfragen zur Abbildung von Namen auf Adressen, die von SMB-Clients benötigt werden. Die Broadcast-Version verwendet UDPBroadcast und funktioniert nur im lokalen Subnetz, während WINS TCP benutzt, das über Netzwerkgrenzen hinaus weitergeleitet werden kann. Beim Betrieb als WINS-Server legt nmbd eine aktuelle Datenbank mit Namen und Adressen in der Datei /usr/local/samba/var/ locks/wins.dat ab. Ein aktiver nmbd-Daemon antwortet außerdem auf Suchprotokollanfragen, die von der WindowsNetzwerkumgebung verwendet werden. Dieses Protokoll stellt eine dynamisch aktualisierte Liste mit Servern und den von ihnen angebotenen Datei- und Druckdiensten bereit. Wie bei WINS wurde dies in der Vergangenheit mit UDP-Broadcasts im lokalen Subnetz erledigt. Das neuere Konzept mit lokalen Hauptsuchdiensten verwendet TCPVerbindungen zu einem Server. Arbeitet nmbd als lokaler Hauptsuchdienst, speichert er die Suchdatenbank in der
Datei /usr/local/samba/var/locks/browse.dat. Manche Clients (vor allem ältere) können das WINSProtokoll nicht verwenden. Um diese Clients zu unterstützen, kann nmbd als WINS-Proxy agieren, der Broadcast-Anfragen von den Nicht-WINS-Clients annimmt, in deren Namen einen WINS-Server kontaktiert und die Antworten des WINS-Servers an sie zurückliefert. Signale Ebenso wie smbd reagiert das Programm nmbd auf verschiedene Unix-Signale. Wenn Sie nmbd ein SIGHUPSignal senden, wird das Programm veranlasst, die Namen, die es kennt, in die Datei /usr/local/samba/var/locks/ namelist.debug auszugeben. Um einen nmbd-Prozess sanft zu beenden, senden Sie ihm das Signal SIGTERM (15); die unsanfte Variante funktioniert mit dem Signal SIGKILL (9). Bei Samba-Versionen vor 2.2 konnte die Protokollierungsstufe mittels SIGUSR1 oder SIGUSR2 erhöht oder verringert werden. Dies wird nicht mehr unterstützt. Verwenden Sie stattdessen smbcontrol. Befehlszusammenfassung nmbd [Optionen] Optionen -a Veranlasst, dass bei jeder neuen Verbindung zum Samba-Server die Protokollierungsnachrichten an die Protokolldatei angehängt werden. Diese Option ist das Gegenteil von -o. Es handelt sich hierbei um die Standardeinstellung. -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich reicht von 0 bis 10. Der Wert auf der Kommandozeile setzt den Wert außer Kraft, der in der Datei smb.conf
angegeben ist. Bei Protokollierungsstufe 0 werden nur die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen hauptsächlich der Fehlersuche und verlangsamen nmbd merklich. -D Führt das nmbd-Programm als Daemon aus. Dies ist die empfohlene Methode, nmbd einzusetzen. Außerdem handelt es sich um die Standardaktion, wenn nmbd von einer interaktiven Kommandozeile aus ausgeführt wird. nmbd kann außerdem vom inetd gestartet werden. -h Gibt für den Befehl nmbd Hinweise zur Benutzung aus. -H lmhosts-Datei Gibt den Ablageort der lmhosts-Datei für die Namensauflösung an. Diese Datei wird nur verwendet, um Namen für den lokalen Server aufzulösen. Sie dient nicht dazu, Anfragen entfernter Systeme zu beantworten. Der bei der Kompilierung festgelegte Standardwert ist üblicherweise /usr/local/samba/lib/ lmhosts, /usr/samba/lib/lmhosts oder /etc/lmhosts. -i Führt nmbd interaktiv und nicht als Daemon aus. Diese Option wird verwendet, um den normalen Daemon-Modus außer Kraft zu setzen, wenn nmbd von der Kommandozeile aus aufgerufen wird. -l Protokolldatei Schickt die Protokollierungsnachrichten an eine andere Stelle als die, die in das Programm kompiliert oder in der Datei smb.conf angegeben wurde. Vorgabe ist oft / usr/local/samba/var/log.nmbd, /usr/samba/var/log. nmbd oder /var/log /log.nmbd. -n NetBIOS-Name Erlaubt es Ihnen, den NetBIOS-Namen zu überschreiben, unter dem der Daemon sich selbst bekanntmacht. Durch die Angabe dieser Option auf der Kommandozeile wird die Option netbios name in der Samba-Konfigurationsdatei überschrieben. -O Socket-Optionen
Legt die TCP/IP-Socket-Optionen fest, wobei die gleichen Parameter wie bei der Konfigurationsoption socket options verwendet werden. Wird oft zum Steigern der Leistung und für Testzwecke verwendet. -o Veranlasst das Überschreiben der Protokolldateien beim Öffnen (Gegenteil von -a). Falls Sie diese Option verwenden, müssen Sie sich nicht damit befassen, die richtigen Protokolleinträge zu suchen, wenn Sie eine Reihe von Tests durchführen, bei denen Sie die Protokolldatei jedes Mal kontrollieren. -p Port-Nummer Legt die Nummer des UDP-Ports fest, von dem der Server Anfragen akzeptiert. Momentan verwenden alle Microsoft-Clients ausschließlich den Standard-Port 137. -s Konfigurationsdatei Gibt den Ablageort der Samba-Konfigurationsdatei an. Die Datei wird zwar standardmäßig unter /usr/local/ samba/lib/smb.conf gespeichert, Sie können diesen Wert jedoch von der Kommandozeile aus überschreiben. Wird üblicherweise für die Fehlersuche verwendet. -v Gibt die aktuelle Version von Samba aus.
winbindd Der winbindd-Daemon ist Bestandteil des winbindDienstes. Er dient dazu, Unix-Systemen zu ermöglichen, Benutzer- und Gruppeninformationen von einem Windows NT/2000-Server zu beziehen. Winbind bildet die relativen IDs (RIDs) von Windows auf die Unix-UIDs und -GIDs ab und erlaubt die Benutzung von Zugängen, die auf dem Windows-Server gespeichert sind, für die UnixAuthentifizierung. Der Zweck dieses Dienstes besteht darin, die Integration von Microsoft- und Unix-Netzwerken zu erleichtern, wenn ein bereits existierender WindowsDomänen-Controller dazu eingerichtet wird, Benutzerund Computer-Zugänge zu bedienen.
Der Daemon wird von den Benutzern über den Name Service Switch und PAM angesprochen. Der Name Service Switch ruft eine Bibliothek auf (/lib/libnss_winbind.so), die den Daemon aufruft, der wiederum mittels Microsoft RPC den Windows NT/2000-Server aufruft. Das PAMModul für winbind kann den Daemon ebenfalls aufrufen. Dadurch wird es Benutzern, deren Zugänge auf dem Windows-Server gespeichert sind, erlaubt, sich am UnixSystem anzumelden und eine interaktive Shell, FTP oder irgendein anderes Programm, das Benutzer durch PAM authentifiziert, auszuführen. Das winbind-Subsystem ist momentan nur für das Betriebssystem Linux und einige andere Systeme verfügbar, die Shared Libraries, nsswitch und PAM benutzen. Befehlszusammenfassung winbindd [Optionen] Optionen -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich reicht von 0 bis 10. Der Wert auf der Kommandozeile setzt den Wert außer Kraft, der in der Datei smb.conf angegeben ist. Bei Protokollierungsstufe 0 werden nur die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen hauptsächlich der Fehlersuche. -i Führt winbindd interaktiv aus. Diese Option soll die Standardeinstellung außer Kraft setzen, bei der winbindd als Daemon ausgeführt wird.
Programme der Samba-Distribution
Dieser Abschnitt führt die Kommandozeilen-Optionen und Unterbefehle auf, die von den Nicht-Daemon-Programmen in der Samba-Distribution bereitgestellt werden.
findsmb Dieses Perl-Skript liefert Informationen über Systeme im Subnetz, die auf SMB-Namensanfragen antworten. Diese Informationen enthalten die IP-Adresse, den NetBIOSNamen, die Arbeitsgruppe/Domäne sowie das Betriebssystem der einzelnen Systeme. Befehlszusammenfassung findsmb [Subnetz-Broadcast-Adresse] Ist die Broadcast-Adresse eines anderen Subnetzes angegeben, werden SMB-Server in diesem Subnetz ermittelt. Wurde keine Subnetz-Broadcast-Adresse angegeben, sucht findsmb im lokalen Subnetz. Die Ausgabe von findsmb sieht folgendermaßen aus: $ findsmb *=DMB +=LMB IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION --------------------------------------------------------------------172.16.1.1 TOLTEC *[METRAN] [Unix] [Samba 2.2.6] 172.16.1.3 MIXTEC +[METRAN] [Unix] [Samba 2.2.6] 172.16.1.4 ZAPOTEC [METRAN] [Windows 5.0] [Windows 2000 LAN Manager] 172.16.1.5 HUASTEC [ METRAN ] 172.16.1.6 MAYA [ METRAN ] 172.16.1.7 OLMEC [METRAN] [Windows 5.1] [Windows 2000 LAN Manager] 172.16.1.10 UTE [ METRAN ] 172.16.1.13 DINE [METRAN] [Windows NT 4.0] [NT LAN Manager 4.0] Das System, bei dem vor dem Arbeitsgruppennamen ein Asterisk (*) steht, ist der Domänen-Hauptsuchdienst der
Arbeitsgruppe/Domäne. Das System mit dem Pluszeichen (+) vor dem Arbeitsgruppennamen ist der lokale Hauptsuchdienst. Der Befehl findsmb wurde während der Entwicklung von Samba 2.2 eingeführt und wird seit der Samba-Version 2.2.5 standardmäßig installiert.
make_smbcodepage Dieses Programm ist Teil der Internationalisierungsfunktionen von Samba 2.2 und wird seit Samba 3.0, das automatisch Unicode unterstützt, als veraltet angesehen. Das Programm make_smbcodepage erstellt aus einer Codepage-Definition im Textformat eine binäre Codepage-Datei. Es kann auch die entgegengesetzte Operation ausführen, also eine binäre Codepage-Datei in eine Textversion umsetzen. Beispiele für Codepage-Dateien im Textformat finden Sie in der Samba-Distribution im Verzeichnis source/codepages. Nach der Installation von Samba finden Sie Beispiele für binäre Codepage-Dateien im Verzeichnis /usr/local/ samba/ lib/codepages. Befehlszusammenfassung make_smbcodepage c|d Codepage-Nummer Eingabedatei Ausgabedatei Zum ersten Argument: Benutzen Sie c, um eine Codepage zu kompilieren, und d, um eine Codepage-Datei zu dekompilieren. Das Argument Codepage-Nummer gibt die Nummer der verarbeiteten Codepage an (z.B. 850). Eingabedatei und Ausgabedatei sind die Codepages im Text- und Binärformat, wobei die Art der Datei von der ausgeführten Operation (Kompilieren oder Dekompilieren) abhängt.
make_unicodemap
Dieses Programm ist Teil der Internationalisierungsfunktionen von Samba 2.2 und wird seit Samba 3.0, das automatisch Unicode unterstützt, als veraltet angesehen. Der Befehl make_unicodemap kompiliert binäre Unicode-Maps aus Textdateien, so dass Samba Nicht-ASCII-Zeichen in Datei- und Verzeichnisnamen über die Unicode-Alphabete darstellen kann. Beispiele für Eingabezuordnungsdateien finden Sie im Verzeichnis source/codepages in der SambaQuelldistribution. Befehlszusammenfassung make_unicodemap Codepage-Nummer Eingabedatei Ausgabedatei Die Eingabedatei ist eine ASCII-Map, die Ausgabedatei eine Binärdatei, die von Samba geladen werden kann. Die Codepage-Nummer ist die Nummer der DOS-Codepage (z. B. 850) für die Map.
net Der Befehl net, der neu in Samba 3.0 ist, bezeichnet ein Programm mit einer Syntax ähnlich der des MS-DOS/ Windows-Befehls gleichen Namens. Er wird verwendet, um verschiedene administrative Funktionen im Zusammenhang mit dem Windows-Netzwerkbetrieb zu erledigen, die entweder lokal oder auf einem entfernten System ausgeführt werden können. Befehlszusammenfassung net [Methode] Funktion [sonstige_Optionen] [Zieloptionen] Das Argument Funktion besteht aus einem oder mehreren durch Leerzeichen getrennten Wörtern. In der WindowsTerminologie wird es manchmal als eine Funktion mit Optionen bezeichnet. Wir führen hier alle Funktionen in
ihrer vollständigen Form einschließlich mehrfacher Wörter auf. Standardmäßig wird die Aktion auf dem lokalen System ausgeführt. Das Argument Zieloptionen kann verwendet werden, um ein entferntes System (entweder über den Hostnamen oder die IP-Adresse), eine Domäne oder eine Arbeitsgruppe festzulegen. Je nach der verwendeten Funktion ist das Argument Methode optional, erforderlich oder nicht erlaubt. Es gibt eine von drei Methoden an, die Operation, die durch den restlichen Befehl angegeben ist, auszuführen. Es kann ads (Active Directory), rpc (Microsofts DCE/RPC) oder rap (Microsofts Original-SMB-RPC; Remote Procedure Call) sein. Um festzustellen, welche Methoden (falls überhaupt) mit einer Funktion verwendet werden können, benutzen Sie die Befehle net help ads, net help rap und net help rpc. Diese Befehle geben die Funktionen für die einzelnen Methoden aus. Sonstige Optionen -d Protokollierungsstufe - -debug=Protokollierungsstufe Gibt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) an. Diese kann sich im Bereich von 0 bis 10 bewegen. -l - -long Legt den Auflistungsmodus »lang« fest. Für Funktionen, die Listen mit Informationen ausgeben. -n Name - -myname=Name Legt den NetBIOS-Namen für den Client fest. -p Port - -port=Port Gibt die zu verwendende Port-Nummer an. -s Dateiname
- -conf=Dateiname Gibt den Namen der Samba-Konfigurationsdatei an und setzt dabei den bei der Kompilierung festgelegten Standardwert außer Kraft. -U Benutzername[%Kennwort] - -user=Benutzername[%Kennwort] Gibt den Benutzernamen sowie optional ein Kennwort für Funktionen an, die eine Authentifizierung erfordern. -W Name - -myworkgroup=Name Legt den Namen der Arbeitsgruppe des Clients fest, dabei wird die Definition des Parameters workgroup in der Konfigurationsdatei von Samba außer Kraft gesetzt. Zieloptionen -S Hostname Legt das entfernte System über einen Hostnamen oder einen NetBIOS-Namen fest. -I IP-Adresse Legt das entfernte System über seine IP-Adresse fest. -w Arbeitsgruppe Legt den Namen der Ziel-Domäne oder -Arbeitsgruppe fest. Funktionen abortshutdown Siehe Funktion rpc abortshutdown. ads info Gibt Informationen über den Active Directory-Server aus. Die Methode (ads) muss angegeben werden, um diese Funktion von der Funktion rpc info abzugrenzen. ads join OU Fügt das lokale System in den Active Directory-Realm
(organizational unit; organisatorische Einheit) ein, der durch OU angegeben ist. Die Methode (ads) muss festgelegt werden, um diese Funktion von der Funktion rpc join abzugrenzen. ads leave Entfernt das lokale System aus dem Active DirectoryRealm. ads password benutzername@REALM Uadmin_benutzername@REALM%admin_kennwort Ändert das Active Directory-Kennwort für den Benutzer, der durch benutzername@REALM angegeben ist. Die Authentifizierungsinformationen für den administrativen Zugang werden durch die Option -U festgelegt. Der Active Directory-Realm muss in Großbuchstaben angegeben werden. ads printer info [Drucker] [Server] Gibt Informationen über den angegebenen Drucker auf dem angegebenen Server aus. Das Argument Drucker ist standardmäßig ein Asterisk (*), womit alle Drucker gemeint sind. Der Standardwert für das Argument Server lautet localhost. ads printer publish Druckername Veröffentlicht den angegebenen Drucker im Active Directory. ads printer remove Druckername Entfernt den angegebenen Drucker aus dem Active Directory. ads search Ausdruck Attribut Führt eine schnelle Active Directory-Suche durch, bei der der Standard-LDAP-Suchausdruck und die Attribute verwendet werden, die durch die Argumente Ausdruck bzw. Attribut festgelegt wurden. ads status Gibt Einzelheiten des Active Directory-ComputerZugangs des Systems aus. change localhost pass Ändert das Active Directory-Kennwort für den vertrauenswürdigen Computer-Zugang des lokalen
Systems. domain Gibt die Domänen oder Arbeitsgruppen im Netzwerk aus. file Listet offene Dateien auf dem Server auf. file close Datei-id Schließt die angegebene Datei. file info Datei-id Gibt Informationen über die angegebene Datei - die offen sein muss - aus. file user Benutzername Listet alle Dateien auf, die auf dem Server von dem Benutzer geöffnet wurden, der durch Benutzername angegeben ist. group add Gruppenname Fügt die angegebene Gruppe hinzu. Diese Funktion akzeptiert die Option -C Kommentar (die auch als - comment=string gesetzt werden kann), um den beschreibenden Kommentar für die Gruppe anzugeben. group delete Gruppenname Löscht die angegebene Gruppe. groupmember add Gruppenname Benutzername Fügt den durch Benutzername angegebenen Benutzer in die Gruppe Gruppenname ein. groupmember delete Gruppenname Benutzername Löscht den durch Benutzername angegebenen Benutzer aus der Gruppe Gruppenname. groupmember list Gruppenname Listet die Benutzer auf, die Mitglieder der angegebenen Gruppe sind. help Gibt eine Hilfenachricht für den Befehl net aus. help Methode Gibt eine Hilfenachricht für Methode aus, wobei Methode ads, rap oder rpc sein kann. Diese Nachricht führt die Funktionen auf, die die Methode benutzen
können, sowie eine kurze Beschreibung. help Funktion Gibt eine Hilfenachricht für die angegebene Funktion aus, die aus mehr als einem Wort bestehen kann. info Dieser Funktion muss eine Methode vorangestellt werden. Siehe auch die Funktionen ads info und rpc info. join Fügt den Computer in eine Windows NT-Domäne oder einen Active Directory-Realm ein. Wurde das Argument Methode nicht angegeben, wird geprüft, ob Active Directory verwendet wird. Ist dies der Fall, wird ads join ausgeführt, ansonsten wird rpc join ausgeführt. Siehe auch die Funktionen ads join und rpc join. leave Dieser Funktion muss eine Methode vorangestellt werden. Siehe auch die Funktion ads leave. lookup dc [Domäne] Gibt die IP-Adressen der Domänen-Controller der angegebenen Domäne aus. Der voreingestellte Wert für die Domäne ist der Wert des Parameters workgroup in der Samba-Konfigurationsdatei. lookup host Hostname [Typ] Gibt die IP-Adresse des angegebenen Hosts aus. lookup kdc [Realm] Gibt die IP-Adresse des Kerberos-DomänenControllers des angegebenen Realm aus. Wurde Realm nicht benannt, wird standardmäßig der Wert des Parameters realm in der Samba-Konfigurationsdatei angenommen. lookup ldap [Domäne] Gibt die IP-Adresse des LDAP-Servers der angegebenen Domäne aus. Wurde Domäne nicht benannt, wird standardmäßig der Wert des Parameters workgroup in der SambaKonfigurationsdatei angenommen.
lookup master [Domäne] Gibt die IP-Adresse des Hauptsuchdienstes der angegebenen Domäne oder Arbeitsgruppe aus. Wurde Domäne nicht benannt, wird standardmäßig der Wert des Parameters workgroup in der SambaKonfigurationsdatei angenommen. password Benutzername altes_Kennwort neues_Kennwort Ändert das Kennwort des durch das Argument Benutzername festgelegten Benutzers. Das alte und das neue Kennwort des Benutzers wird im Klartext als Teil des Befehls angegeben. Seien Sie aus Gründen der Sicherheit vorsichtig beim Einsatz dieser Funktion. Siehe auch die Funktion ads password. printer info Siehe die Funktion ads printer info. printer publish Siehe die Funktion ads printer publish. printer remove Siehe die Funktion ads printer remove. printq Gibt Informationen (einschließlich der Job-IDs) über Druckerwarteschlangen auf dem Server aus. printq delete Warteschlangenname Löscht die angegebene Druckerwarteschlange. Die Option -j Job-id (auch möglich als --jobid=Job-id ) kann verwendet werden, um die Job-ID der Warteschlange anzugeben. rpc abortshutdown Bricht das Herunterfahren eines entfernten Servers ab. rpc info Gibt Informationen über die Domäne des Servers aus. Die Methode (rpc) muss angegeben werden, um diese Funktion von der Funktion ads info abzugrenzen. rpc join Fügt einen Computer in eine Windows NT-Domäne ein. Ist die Option -U Benutzername%Kennwort enthalten, werden der angegebene Benutzername sowie das Kennwort als administrativer Zugang verwendet, der
für die Authentifizierung an einem PDC erforderlich ist. Ist die Option -U nicht vorhanden, kann diese Funktion nur dazu eingesetzt werden, den Computer in die Domäne aufzunehmen, nachdem der ComputerZugang mit Hilfe des Server Managers erzeugt wurde. Die Methode (rpc) muss angegeben werden, um diese Funktion von der Funktion ads join abzugrenzen. rpc shutdown Fährt einen Server herunter. Diese Funktion akzeptiert die sonstigen Optionen -r, -f, -t und -c. Die Option r (auch möglich als - -reboot) fordert, dass das System nach dem Herunterfahren neu startet. Die Option -f (auch - -force) erzwingt das Herunterfahren. Die Option -t Timeout (auch - timeout=Zahl) gibt in Sekunden an, wie lange vor dem Herunterfahren gewartet werden soll, und die Option -c Kommentar (auch - -comment=String) ermöglicht es, eine Nachricht für den Benutzer des Clients anzugeben. Unter Windows erscheint der Kommentar im Nachrichtenbereich der Dialogbox, die beim Herunterfahren des Systems zu sehen ist. rpc trustdom add Domänenname Fügt einen Zugang für die Vertrauensstellung (Trust Relationship) mit der angegebenen Windows NTDomäne hinzu. rpc trustdom establish Domänenname Etabliert eine Vertrauensstellung (Trust Relationship) mit der angegebenen Windows NT-Domäne. rpc trustdom revoke Domänenname Widerruft die Vertrauensstellung (Trust Relationship) mit der angegebenen Windows NT-Domäne. search Siehe die Funktion ads search. server Listet die Server in der Domäne oder Arbeitsgruppe auf. Bei dieser handelt es sich standardmäßig um den Wert des Parameters workgroup in der SambaKonfigurationsdatei.
session Listet Clients mit offenen Sitzungen am Server auf. session delete NetBIOS-Name Schließt die Sitzungen des angegebenen Clients am Server. Ein Synonym ist session close. session close Ein Synonym für session delete. share Listet die Freigaben auf, die der Server anbietet. Wenn das Zielsystem ein Windows 95/98/Me-Server ist, ist es möglicherweise notwendig, die Methode rap anzugeben, damit diese Funktion richtig funktioniert. share add Freigabename=Server-Pfad Legt auf dem Ziel-Server eine Freigabe an. Der Name der Freigabe und der freizugebende Ordner werden durch das Argument Freigabename=Server-Pfad angegeben, wobei Server-Pfad den WindowsVerzeichnisnamen angibt, bei dem Leerzeichen und sonstige eventuell vorhandene Sonderzeichen in Anführungszeichen stehen und die Backslashes geschützt sind (z.B. "data=C:\\Documents and Settings\\jay\\Desktop\\data"). Die Option -C Kommentar (auch - -comment=String) kann verwendet werden, um eine Beschreibung für die Freigabe zu definieren. Die Option -M Zahl (auch - maxusers=Zahl) ermöglicht die Festlegung der maximalen Anzahl der Benutzer, die eine Verbindung zur Freigabe herstellen dürfen. Damit diese Funktion richtig arbeitet, muss unter Umständen die Methode (rap oder rpc) angegeben werden. Das normale Ordnersymbol im Windows-Explorer wird erst dann zum Symbol für einen »freigegebenen Ordner«, wenn die Anzeige aktualisiert wird. share delete Freigabename Löscht eine Freigabe vom Ziel-Server. Das Argument Freigabename ist einfach der Name der Freigabe auf dem Ziel-Server, keine UNC. Die Methode (rap oder rpc) muss unter Umständen mit angegeben werden, damit diese Funktion richtig arbeitet. Das Symbol für
einen »freigegebenen Ordner« im Windows-Explorer wird erst dann wieder zum normalen Ordnersymbol, wenn die Anzeige aktualisiert wird. shutdown Siehe die Funktion rpc shutdown. status Siehe die Funktion ads status. time Gibt die Systemzeit - im Format des Unix-Befehls date - auf dem Zielsystem aus. time set Stellt die Hardware-Uhr des lokalen Systems. Dabei wird die vom Betriebssystem bezogene Zeit zugrunde gelegt. time system Setzt die Zeit auf dem lokalen System. Dabei wird die vom entfernten System bezogene Zeit zu Grunde gelegt. time zone Gibt die auf dem System verwendete Zeitzone (in Stunden von GMT) aus. trustdom add Siehe die Funktion rpc trustdom add. trustdom establish Siehe die Funktion rpc trustdom establish. trustdom revoke Siehe die Funktion rpc trustdom revoke. user Listet die Benutzerzugänge auf. Als Methode kann ads, rap oder rpc angegeben werden. user add Benutzername [Kennwort] Legt einen Benutzerzugang für den durch Benutzername angegebenen Benutzer an. Mit der Option -c Kommentar (auch - -comment=String) kann ein Kommentar für den Zugang festgelegt werden. Die Option -F Benutzer-Flags kann verwendet werden, um für den Zugang Flags (im numerischen Format)
einzustellen. Als Methode kann ads, rap oder rpc angegeben werden. user delete Benutzername Löscht den Zugang des angegebenen Benutzers. Als Methode kann ads, rap oder rpc festgelegt werden. user info Benutzername Listet die Domänen-Gruppen auf, zu denen der angegebene Benutzer gehört. Als Methode kann ads, rap oder rpc festgelegt werden.
nmblookup Das Programm nmblookup ist ein Client-Programm, das den Kommandozeilen-Zugriff auf den NetBIOSNamensdienst erlaubt, um NetBIOS-Computernamen in IP-Adressen aufzulösen. Das Programm schickt dazu seine Anfragen in Form von Broadcast-Nachrichten in das lokale Subnetz, bis eine Maschine mit dem angegebenen Namen antwortet. Sie können sich dies als ein Windows-Analogon von nslookup oder dig vorstellen. Dies ist hilfreich beim Nachschauen normaler Computernamen sowie von Namen für besondere Zwecke wie _ _MSBROWSE_ _ . Falls Sie eine bestimmte Art von NetBIOS-Namen abfragen wollen, fügen Sie den NetBIOS-Typ am Ende des Namens im Format Netbios-Name# hinzu. Befehlszusammenfassung nmblookup [Optionen] Netbios-Name Optionen -A Interpretiert Netbios-Name als IP-Adresse und führt eine Abfrage des Knotenstatus darauf ab. -B Broadcast-Adresse Schickt eine Abfrage an die angegebene BroadcastAdresse. Vorgabe ist, die Abfrage an die Broadcast-
Adresse der primären Netzwerkschnittstelle zu schicken. -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich reicht von 0 bis 10. Bei Protokollierungsstufe 0 werden nur die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen hauptsächlich zur Fehlersuche in nmblookup durch die Entwickler und verlangsamen das Programm merklich. -f Gibt die Flags in den Paket-Headern aus. -h Gibt Hinweise für die Benutzung des Programms über die Kommandozeile aus. -i Bereich Legt eine NetBIOS-Bereichs-ID fest. Der NetBIOSBereich ist ein selten verwendeter Vorläufer der Arbeitsgruppen. -M Sucht nach einem lokalen Hauptsuchdienst, indem Netbios-Name<1d> nachgesehen wird. Wird NetbiosName als Bindestrich (-) angegeben, wird der spezielle Name _ _MSBROWSE_ _ nachgesehen. -R Aktiviert das Rekursions-Bit im Paket. Dadurch wird das antwortende System veranlasst, einen WINSLookup zu versuchen und die Adresse und anderen Informationen zurückzuliefern, die der WINS-Server gespeichert hat. -r Verwendet den root-Port 137. Diese Option gibt es, um einen Fehler in Windows 95 zu umgehen. Unter Umständen muss der Benutzer Superuser sein, um diese Option verwenden zu können. -S Führt eine Abfrage des Knotenstatus aus, sobald die Namensabfrage eine IP-Adresse ergeben hat. Es werden alle Ressourcentypen zurückgeliefert, die das
System kennt, einschließlich der numerischen Attribute. Zum Beispiel: $ nmblookup -S toltec querying toltec on 172.16.1.255 172.16.1.1 toltec<00> Looking up status of 172.16.1.1 TOLTEC <00> - M TOLTEC <03> - M TOLTEC <20> - M .._ _MSBROWSE_ _. <01> - M METRAN <00> - M METRAN <1b> - M METRAN <1c> - M METRAN <1d> - M METRAN <1e> - M -s Konfigurationsdatei Gibt den Ablageort der Samba-Konfigurationsdatei an. Die Datei wird zwar standardmäßig in /usr/local/ samba/lib/smb.conf gespeichert, Sie können diesen Wert jedoch hier auf der Kommandozeile außer Kraft setzen. Wird normalerweise für die Fehlersuche verwendet. -T Übersetzt IP-Adressen in aufgelöste Namen. -U Unicast-Adresse Führt an der angegebenen Adresse eine UnicastAbfrage durch. Wird zusammen mit -R verwendet, um WINS-Server abzufragen. Beachten Sie, dass nmblookup keine Option zum Einstellen der Arbeitsgruppe besitzt. Sie können dieses Problem umgehen, indem Sie workgroup = Arbeitsgruppenname in eine Datei schreiben und dies mit der Option -s an nmblookup übergeben.
pdbedit Dieses Programm, das neu in Samba 3.0 ist, kann
verwendet werden, um Zugänge zu verwalten, die in einer SAM-Datenbank vorgehalten werden. Die Implementierung der Datenbank kann einer der von Samba unterstützten Typen sein, einschließlich der Datei smbpasswd, LDAP, NIS+ und der tdbDatenbankbibliothek. Um dieses Werkzeug benutzen zu können, muss der Benutzer Superuser sein. Befehlszusammenfassung pdbedit [Optionen] Optionen -a Fügt den durch die Option -u angegebenen Benutzer in die SAM-Datenbank ein. Der Befehl gibt einen Prompt aus, um das Kennwort des Benutzers eintippen zu können. -d Laufwerkbuchstabe Gibt den Windows-Laufwerkbuchstaben an, der mit dem Home-Verzeichnis des Benutzers verknüpft wird. Der Laufwerkbuchstabe muss als Buchstabe, gefolgt von einem Doppelpunkt, festgelegt werden - z.B. H:. -D Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich reicht von 0 bis 10. Bei Protokollierungsstufe 0 werden nur die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen hauptsächlich der Fehlersuche. -e pwdb-Backend Exportiert die Datenbank mit den Benutzerzugängen in ein anderes Format, das an dem angegebenen Ort gespeichert wird. Wird zur Migration von einem Typ Zugangsdatenbank zu einem anderen verwendet. Das Argument pwdb-Backend ist im Format eines Datenbanktyps angegeben, gefolgt von einem Doppelpunkt und dem Ablageort der Datenbank. Um
beispielsweise eine existierende Zugangsdatenbank in eine smbpasswd-Datenbank in der Datei /usr/local/ samba/private/smbpw zu exportieren, würde pwdbBackend als smbpasswd: /usr/local/samba/private/ smbpw festgelegt werden. Zulässige Datenbanktypen sind smbpasswd, smbpasswd nua, tdbsam, tdbsam nua, ldapsam, ldapsam_nua und plugin. -f vollständiger_Name Gibt den vollständigen Namen des mit der Option -u bezeichneten Benutzers an. -h unc Gibt den Pfad des Home-Verzeichnisses (als UNC) des mit der Option -u bezeichneten Benutzers an. -i pwdb-Backend Gibt ein Backend für die Kennwortdatenbank an, von dem Zugangsinformationen bezogen werden sollen. Damit wird der Wert außer Kraft gesetzt, der durch den Parameter passdb backend in der SambaKonfigurationsdatei festgelegt wurde. Dies ist, zusammen mit der Option -e, hilfreich bei der Migration von Benutzerzugängen von einem Typ Zugangsdatenbank zu einem anderen. Bei der Option e können Sie nachlesen, wie das Argument pwdbBackend anzugeben ist. -l Listet die Benutzerzugänge in der Datenbank auf. Siehe auch die Option -v. -m Zeigt an, dass es sich bei dem Zugang um einen Computerzugang und nicht um einen Benutzerzugang handelt. Wird nur zusammen mit der Option -a verwendet, wenn ein Zugang erzeugt wird. In diesem Fall gibt die Option -u keinen Benutzernamen, sondern einen Computernamen an. -p unc Legt das Verzeichnis fest, in dem das Profil des Benutzers abgelegt ist. Das Verzeichnis wird als UNC angegeben. -s unc
Gibt die UNC des Anmeldeskripts des Benutzers an. -u Benutzername Gibt den Benutzernamen des Zugangs an, der angelegt (mit der Option -a), gelöscht (mit der Option -x) oder geändert werden soll. -v Aktiviert den ausführlichen Modus beim Auflisten von Zugängen mit der Option -l. Die Zugangsfelder werden ausgegeben. -w Aktiviert den smbpasswd-Modus, wenn mit der Option l eine Liste ausgegeben wird. Dabei werden die Informationen im gleichen Format ausgegeben, in dem sie auch in einer smbpasswd-Datei stehen würden. -x Löscht den Benutzer (der mit der Option -u angegeben ist) aus der Zugangsdatenbank.
rpcclient Dies ist ein Programm zum Aufrufen administrativer Befehle, die mittels Microsoft RPCs implementiert sind. Es ermöglicht den Zugriff auf die RPCs, die die grafischen Administrationswerkzeuge von Windows für die Systemverwaltung einsetzen. Der Befehl rpcclient wird vor allem von erfahrenen Benutzern verwendet, die die RPCs verstehen. Weitere Informationen darüber finden Sie im Microsoft Platform Software Development Kit (SDK), das Sie von der Microsoft-Website unter http://www.microsoft. de herunterladen können. Sie können einen einzelnen rpcclient-Befehl entweder ausführen, indem Sie die Option -c Befehlsstring verwenden, oder interaktiv durch Eingabe von rpcclient. Anschließend werden Sie nach entsprechenden Befehlen gefragt. Befehlszusammenfassung
rpcclient Server [Optionen] Optionen -A Dateiname Gibt eine Datei an, aus der die Authentifizierungswerte gelesen werden, die in der Verbindung zum Einsatz kommen. Das Format der Datei sieht folgendermaßen aus: username = Wert password = Wert domain = Wert Diese Option soll verhindern, dass nach dem Kennwort gefragt wird oder dass das Kennwort in irgendwelchen Skripten im Klartext auftaucht. Die Rechte auf dieser Datei sollten sehr restriktiv sein (zum Beispiel 0600), um unerwünschten Benutzern den Zugriff zu verwehren. -c Befehlsstring Führt eine Reihe von Befehlen aus, die durch Semikolons getrennt sind. Die Befehle sind im folgenden Abschnitt aufgeführt. -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich reicht von 0 bis 10. Der Wert auf der Kommandozeile setzt den Wert außer Kraft, der in der Datei smb.conf angegeben ist. Bei Protokollierungsstufe 0 werden nur die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen hauptsächlich der Fehlersuche und verlangsamen das Programm merklich. -h Gibt eine Zusammenfassung der Optionen aus. -l Protokollbasisname Gibt den Dateinamen für Protokoll/Debugging-Dateien an. An die Dateinamen wird die Erweiterung .client angehängt.
-N Fragt nicht nach einem Kennwort. Diese Option wird verwendet, wenn Samba mit Sicherheit auf Freigabeebene konfiguriert wurde und auf einen Dienst zugegriffen wird, der kein Kennwort verlangt. -s Dateiname Gibt den Ablageort der Samba-Konfigurationsdatei an, der üblicherweise standardmäßig /usr/local/samba/lib/ smb.conf lautet. -U Benutzername[%Kennwort] Legt den zu verwendenden SMB-Benutzernamen oder den Benutzernamen und das Kennwort fest. Seien Sie vorsichtig, wenn Sie das Kennwort mit %Kennwort angeben; dies stellt ein großes Sicherheitsrisiko dar. Ist %Kennwort nicht angegeben, wird der Benutzer nach einem Kennwort gefragt, das dann bei der Eingabe nicht auf dem Bildschirm wiedergegeben wird. Normalerweise wird der Benutzer durch die Umgebungsvariablen USER oder LOGNAME gesetzt. Die Option -U an sich bedeutet, dass der Gastzugang benutzt wird. Siehe auch -A. -W Domäne Gibt die Domäne an und überschreibt damit den Parameter workgroup der Samba-Konfigurationsdatei. Handelt es sich bei der Domäne um den NetBIOSNamen des Servers, wird der Client veranlasst, sich über die lokale SAM-Datenbank des Servers anzumelden und nicht über die SAM der Domäne.
rpcclient-Befehle Abgesehen von einigen allgemeinen Befehlen lassen sich die rpclient-Befehle in drei Gruppen einordnen: LSARPC, SAMR und SPOOLSS. Die Funktionsnamen, die in einigen der Befehle erwähnt werden, sind im Microsoft Platform SDK dokumentiert. Allgemeine Befehle
debuglevel Protokollierungsstufe Setzt die Protokollierungsstufe auf den angegebenen Wert. Ohne Argument wird die aktuelle Protokollierungsstufe ausgegeben. help Gibt eine Hilfe zu den Befehlen aus. quit Beendet rpcclient. Ein Synonym ist exit. LSARPC-Befehle (Local Security Authority Remote Procedure Calls) enumprivs Gibt die Arten der Rechte aus, die dieser Domäne bekannt sind. enumtrust Gibt die Domänen aus, die von dieser Domäne als vertrauenswürdig angesehen werden. getdispname Priv-Name Gibt Informationen über das mit Priv-Name bezeichnete Recht aus. lookupsids Name Sucht einen Namen, der einer Sicherheits-ID (SID) entspricht. lookupnames sid Sucht die SID für einen oder mehrere Namen. lsaquery Fragt das LSA-Objekt ab. lsaenumsid Gibt die SIDs für die lokale LSA aus. lsaquerysecobj Gibt Informationen über Sicherheitsobjekte der LSA aus. SAMR-Befehle (Security Access Manager RPC)
createdomuser Benutzername Legt einen neuen Benutzer in der Domäne an. deletedomuser Benutzername Entfernt einen Benutzer aus der Domäne. enumalsgroups Typ Listet Alias-Gruppen in der Domäne sowie deren Gruppen-RIDs auf. Das Argument Typ kann entweder builtin lauten, um in Windows integrierte Gruppen wie Administratoren und Power Users auszugeben, oder domain, um Gruppen in der Domäne aufzuführen. Beachten Sie auch den Befehl queryuseraliases. enumdomgroups Listet die Gruppen in der Domäne zusammen mit ihren Gruppen-RIDs auf. queryaliasmem Benutzer-rid Gibt Informationen aus, die die Alias-Mitgliedschaft betreffen. Beachten Sie auch den Befehl queryuseraliases. querydispinfo Gibt die Zugangsdatenbank aus. Zu den ausgegebenen Informationen gehören die RID, der Benutzername und der vollständige Name jedes Benutzers. Die RID wird in hexadezimaler Schreibweise ausgegeben und kann in dieser Form für Befehle verwendet werden, die eine RID als Argument erwarten. querydominfo Gibt Informationen aus, die die Domäne betreffen. Dazu gehören der Name der Domäne sowie die Anzahl der Benutzer, Gruppen und Aliase. querygroup Gruppen-rid Bei gegebener Gruppen-RID werden der Gruppenname, die Beschreibung, die Anzahl der Mitglieder und die Gruppenbeschreibung ausgegeben. queryuser Benutzer-rid Bei gegebener Benutzer-RID werden der entsprechende Benutzername, der vollständige Name sowie weitere Informationen ausgegeben, die den Benutzer betreffen.
queryuseraliases Typ Benutzer-rid Gibt Aliase des Benutzers aus. Das Argument Typ kann entweder builtin oder domain lauten. Aliase werden im Zusammenhang mit dem WindowsMessaging-Dienst verwendet. Sie verhalten sich wie Benutzernamen, können aber einem Computer anstatt einem Benutzer zugewiesen werden. Dies erlaubt es, Nachrichten, die für einen Benutzer gedacht sind, an einen Computer zu senden, an dem der Benutzer entweder nicht oder unter einem anderen Benutzernamen angemeldet ist. queryusergroups Benutzer-rid Gibt Informationen über alle Gruppen aus, in denen der Benutzer Mitglied ist. querygroupmem Gruppen-rid Gibt die RID und die Attribute der einzelnen Mitglieder der Gruppe aus. samlookupnames Typ Benutzername Sieht den Benutzernamen in der SAM-Datenbank nach und gibt die damit verknüpfte RID aus. Das Argument Typ kann entweder builtin lauten, um die in Windows integrierten Benutzernamen nachzusehen, oder domain, um Namen in der Domäne nachzusehen. samlookuprids Typ rid Sieht die rid in der SAM-Datenbank nach und gibt deren damit verknüpfte Gruppe oder den Benutzernamen aus. Das Argument Typ kann entweder builtin lauten, um die in Windows integrierten Benutzernamen nachzusehen, oder domain, um Namen in der Domäne nachzusehen. Das Argument RID kann in hexadezimaler Schreibweise (0xDDD) oder dezimal angegeben werden. samquerysecobj Gibt Informationen über Sicherheitsobjekte (wie etwa ACLs) in der SAM-Datenbank aus. SPOOLSS-Befehle (Windows NT/2000/XP-Druckdienste)
adddriver Arch Konfig-Datei Fügt auf dem Server einen Druckertreiber hinzu. Die Treiberdateien müssen in dem Verzeichnis, das durch getdriverdir zurückgeliefert wird, bereits existieren. Das Argument Arch kann für Windows 95/98/Me Windows 4.0 lauten oder Windows NT x86, Windows NT PowerPC, Windows Alpha_AXP und Windows NT R4000. Andere Werte werden möglicherweise in der Zukunft eingeführt. Die Konfig-Datei sollte Folgendes enthalten: Long Printer Name:\ Driver File Name:\ Data File Name:\ Config File Name:\ Help File Name:\ NULL:\ Default Data Type:\ gefolgt von einer durch Kommata getrennten Liste mit Dateien. Leere Felder müssen den String NULL enthalten. addprinter Druckername Freigabename Treibername Port Legt auf dem entfernten Server einen Drucker als Freigabename an. Der Druckertreiber muss auf dem Server bereits mit adddriver installiert worden sein. Bei dem Port muss es sich um einen gültigen, durch enumports zurückgelieferten Port-Namen handeln. deldriver Treibername Löscht (für alle Architekturen) einen Druckertreiber aus der Liste der Druckertreiber auf dem Server. enumports [Level] Gibt Informationen bezüglich der Drucker-Ports auf dem Server aus. Das Argument Level kann 1 oder 2 sein. Level 1 ist der Standardwert und gibt nur Port Name zurück. Level 2 liefert Port Name, Monitor Name, Description und Port Type. enumdrivers [Level] Listet alle Druckertreiber auf dem System auf. Das Argument Level gibt an, welche Informationen
geliefert werden. Level 1 ist der Standardwert und gibt Driver Name(s) aus. Level 2 liefert Version, Driver Name, Architecture, Driver Path, Data File und Config File. Level 3 gibt den Inhalt von Level 2 aus sowie Help File, eine oder mehrere abhängige Dateien (Dependent Files), Monitor Name und Default Data Type. enumprinters [Level] Listet alle installierten Drucker auf, unabhängig davon, ob sie freigegeben sind. Das Argument Level gibt an, welche Informationen geliefert werden. Level 1 ist der Standardwert und gibt Flags, Name, Description und Comment aus. Level 2 liefert Server Name, Printer Name, Share Name, Port Name, Driver Name, Comment, Location, Separator File, Print Processor, Data Type, Parameters, Attributes, Priority, Default Priority, Start Time, Until Time, Status, Current Jobs, Average PPM (Seiten pro Minute) und Security Descriptor. getdriver [Level] Druckername Gibt für den angegebenen Drucker die Informationen über den Druckertreiber aus. Das Argument Level gibt an, welche Informationen geliefert werden. Level 1 ist der Vorgabewert und gibt Driver Name aus. Level 2 liefert Version, Driver Name, Architecture, Driver Path, Data File und Config File. Level 3 gibt den Inhalt von Level 2 aus sowie Help File, eine oder mehrere abhängige Dateien (Dependent Files), Monitor Name und Default Data Type. getdriverdir Arch Bezieht für die angegebene Architektur den Freigabenamen und das Verzeichnis zum Ablegen der Druckertreiberdateien. Mögliche Werte für Arch sind "Windows 4.0" für Windows 95/98/Me, "Windows NT x86" für Windows NT auf Intel, "Windows NT PowerPC" für Windows NT auf PowerPC, "Windows Alpha AXP" für Windows NT auf Alpha und "Windows NT R4000" für Windows NT auf MIPS. Die Anführungszeichen müssen bei dem Befehl mit angegeben werden.
getprinter Druckername Gibt Informationen über den aktuellen Drucker aus. Das Argument Level legt fest, welche Informationen zurückgeliefert werden. openprinter Druckername Versucht, einen bestimmten Drucker zu öffnen und zu schließen, und berichtet, ob der Versuch erfolgreich war. setdriver Druckername Treibername Aktualisiert bedingungslos den Druckertreiber, der von einem installierten Drucker benutzt wird. Sowohl Drucker als auch Druckertreiber müssen bereits korrekt auf dem Druck-Server installiert sein. setprinter Druckername Kommentar Weist einem Drucker einen Kommentar zu.
smbcacls Dieses Programm bietet die Möglichkeit, Windows NTACLs auf Dateien und Verzeichnissen, die vom SambaServer freigegeben wurden, zu modifizieren. Befehlszusammenfassung smbcacls //Server/Freigabe Dateiname [Optionen] Optionen -A acls Fügt der Datei oder dem Verzeichnis eine oder mehrere ACLs hinzu. Alle bereits für die Datei oder das Verzeichnis existierenden ACLs bleiben unverändert. -M acls Modifiziert die Maske der angegebenen ACLs. Einzelheiten dazu finden Sie im folgenden Abschnitt »ACLs festlegen«. -D acls Löscht die angegebenen ACLs.
-S acls Setzt die angegebenen ACLs. Dabei werden alle ACLs, die zuvor auf der Datei oder dem Verzeichnis gesetzt waren, gelöscht. Die ACLs müssen wenigstens eine Revision, den Typ, den Eigentümer und die Gruppe enthalten. -U Benutzername Setzt den Benutzernamen, der verwendet wird, um eine Verbindung zum angegebenen Dienst herzustellen. Der Benutzer wird nach einem Kennwort gefragt, es sei denn, das Argument lautete Benutzername%Kennwort. (Das Angeben des Kennworts auf der Kommandozeile stellt ein Sicherheitsrisiko dar.) Wurde -U Domäne\ \Benutzername angegeben, wird die bezeichnete Domäne oder Arbeitsgruppe an Stelle derjenigen verwendet, die in der Datei smb.conf festgelegt wurde. -C Benutzername Ändert den Eigentümer der Datei oder des Verzeichnisses. Dies ist eine Kurzform von -M OWNER: Benutzername. Das Argument Benutzername kann als Benutzername oder als SID in der Form S-1-N-N-D-DD-R festgelegt werden. -G Gruppenname Ändert die Gruppe der Datei oder des Verzeichnisses. Dies ist eine Kurzform von -M GROUP:Gruppenname. Das Argument Gruppenname kann als Gruppenname oder als SID in der Form S-1-N-N-D-D-D-R festgelegt werden. -n Veranlasst, dass alle ACL-Informationen im numerischen Format und nicht in lesbaren Strings angezeigt werden. -h Gibt eine Hilfenachricht aus. ACLs festlegen
Bei den gerade gezeigten Optionen wird zum Festlegen von ACLs immer das gleiche Format verwendet. Eine ACL besteht aus einem oder mehreren ACEs (Access Control Entries; Zugriffssteuerungseinträge), die entweder durch Kommata oder durch geschützte Newline-Zeichen getrennt werden. Folgende Elemente können ACE sein: REVISION:Revisionsnummer OWNER:Benutzername_oder_SID GROUP:Gruppenname_oder_SID ACL:Name_oder_SID:Typ/Flags/Maske Die Revisionsnummer sollte immer 1 sein. Die Einträge OWNER und GROUP können verwendet werden, um den Eigentümer und die Gruppe der Datei oder des Verzeichnisses zu setzen. Die Namen können in Textform vorliegen oder als SIDs in der Form S-1-N-N-D-D-D-R geschrieben werden. Der ACL-Eintrag legt fest, welche Zugriffsrechte auf die Datei oder das Verzeichnis angewandt werden. Das Feld Name_oder_SID gibt an, für welchen Benutzer oder welche Gruppe die Rechte gelten. Dieses Feld kann in Textform oder als SID geschrieben werden. Mit einem ACE kann der Zugriff erlaubt oder auch verwehrt werden. Das Typ-Feld wird auf 1 gesetzt, um ein Zugriffsrecht zu gewähren, und auf 0, um einen Zugriff zu verbieten. Das Maske-Feld gibt den Namen des Rechts an und kann einen der folgenden Werte annehmen: R Lesezugriff W Schreibzugriff X Ausführungsrecht D Recht zu löschen P Ändern der Rechte auf dem Objekt O Eigentümerschaft übernehmen
Außerdem können die folgenden kombinierten Rechte festgelegt werden: READ Äquivalent zu RX-Rechten CHANGE Äquivalent zu RWXD-Rechten FULL Äquivalent zu RWXDPO-Rechten Das Flags-Feld dient dazu festzulegen, wie Objekte in Verzeichnissen ihre vorgegebenen Rechte von ihren übergeordneten Verzeichnissen erben. Für Dateien ist Flags normalerweise auf 0 gesetzt, für Verzeichnisse üblicherweise auf 9 oder 2.
smbclient Das Programm smbclient ist das »Schweizer Offiziersmesser« der Samba-Suite. Ursprünglich als Testwerkzeug entwickelt, wurde es zu einer KommandoShell, die in der Lage ist, als allgemein einsetzbarer UnixClient zu agieren. Der Befehlssatz des Programms ist dem von ftp sehr ähnlich. Folgende Funktionen werden angeboten: interaktive Dateiübertragung, ähnlich ftp interaktives Drucken auf freigegebenen SMB-Druckern interaktive Archivierung im tar-Format Verschicken von Nachrichten im SMB-Netzwerk Archivierung im tar-Format per Stapelverarbeitung (Batch-Modus) Abfrage »Welche Dienste bieten Sie an?« Fehlersuche Befehlszusammenfassung smbclient //Server/Freigabe [Kennwort] [Optionen] Es ist möglich, smbclient - für den Einsatz in Skripten -
nicht-interaktiv auszuführen. Dazu geben Sie die Option c zusammen mit einer Liste von auszuführenden Befehlen an. Ansonsten läuft smbclient im interaktiven Modus und fordert auf folgende Weise die Eingabe von Befehlen: smb:\> Der Backslash im Prompt wird durch das aktuelle Verzeichnis ersetzt, wenn Sie mit dem Befehl cd von smbclient das Arbeitsverzeichnis wechseln. Optionen -A Auth-Datei Gibt eine Datei an, aus der der Benutzername und das Kennwort für diese Verbindung gelesen werden. Die Datei weist folgendes Format auf: username = Wert password = Wert domain = Wert Diese Option soll verhindern, dass nach dem Kennwort gefragt wird oder dass dies im Klartext in Skripten auftaucht. Die Rechte auf der Datei sollten sehr restriktiv sein (zum Beispiel 0600), um einen Zugriff durch unerwünschte Benutzer zu vermeiden. -b Puffergröße Legt die Größe des beim Übertragen von Dateien verwendeten Puffers fest. Standardmäßig beträgt die Größe 65.520 Bytes, sie kann als Tuning-Maßnahme verändert werden. Im Allgemeinen sollte der Puffer recht groß sein oder zumindest so eingestellt werden, dass er der Puffergröße auf dem entfernten System entspricht. Er kann verkleinert werden, um Fehler bei Windows zu umgehen: Manche Windows 98-Systeme funktionieren am besten bei einer Puffergröße von 1.200. -B IP-Adr Legt die Broadcast-Adresse fest. -c Befehlsstring Übergibt einen Befehlsstring an den Befehls-
Interpreter von smbclient. Das Argument besteht aus einer durch Semikolons getrennten Liste von Befehlen, die auszuführen sind. -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Der gültige Bereich bewegt sich zwischen 0 und 10, mit A für alle. Setzt den Wert aus der Datei smb.conf außer Kraft. Bei Protokollierungsstufe 0 werden nur die wichtigsten Nachrichten aufgezeichnet, Stufe 1 ist normal, die Stufen 3 und höher dienen der Fehlersuche und verlangsamen smbclient merklich. -D Init-Verz Veranlasst smbclient beim Start, sein Arbeitsverzeichnis zu Init-Verz auf dem entfernten Host zu wechseln. -E Schickt die Ausgabe von Befehlen nicht nach stdout, sondern nach stderr. -h Gibt Informationen für die Benutzung von smbclient aus. -I IP-Adresse Legt die IP-Adresse des Servers fest, mit dem der Client eine Verbindung aufnehmen soll. -i Bereich Legt eine NetBIOS-Bereichs-ID fest. -l Protokolldatei Schickt Protokollierungsmeldungen an Protokolldatei und nicht an die Datei, die in der SambaKonfigurationsdatei oder bei der Kompilierung festgelegt wurde. -L Server Listet Dienste (Freigaben) auf, die vom Server angeboten werden. Diese Option bietet eine schnelle Möglichkeit, einen SMB-Server zu testen, um festzustellen, ob er funktioniert. Gibt es ein Problem mit dem Namensdienst, geben Sie mit der Option -I
den Server an. -M NetBIOS-Name Erlaubt Ihnen, mit Hilfe des Windows-MessagingProtokolls Nachrichten zu verschicken. Sobald eine Verbindung hergestellt wurde, können Sie Ihre Nachricht eingeben. Zum Beenden drücken Sie Strg-D. Über die Optionen -U und -I können Sie den »Von«und »An«-Teil der Nachricht steuern. -N Unterdrückt die Abfrage des Kennworts. Sinnvoll, wenn Sicherheit auf Freigabeebene eingesetzt wird und auf einen Dienst zugegriffen werden soll, der kein Kennwort besitzt. -n NetBIOS-Name Erlaubt es Ihnen, den NetBIOS-Namen zu überschreiben, unter dem smbclient sich selbst bekanntmacht. -O Socket-Optionen Legt die TCP/IP-Socket-Optionen fest. Dabei werden die gleichen Parameter verwendet wie bei der Konfigurationsoption socket options. Wird oft zur Leistungssteigerung und für Tests verwendet. -p Port-Nummer Legt die Port-Nummer fest, an der smbclient die Verbindung herstellt. -R Auswertungsreihenfolge Legt die Auswertungsreihenfolge der Name-Server fest. Diese Option ist ähnlich der Konfigurationsoption resolve order und akzeptiert einen oder mehrere der Parameter lmhosts, host, wins und bcast in beliebiger Reihenfolge. Bei Angabe von mehr als einem Parameter wird das Argument als durch Leerzeichen getrennte Liste festgelegt. Diese Option kann dazu verwendet werden, den Namensdienst zu testen, indem nur der zu testende Namensdienst angegeben wird. -s Dateiname Gibt den Ablageort der Samba-Konfigurationsdatei an.
Dient der Fehlersuche. -t Terminal-Code Gibt den Terminal-Code für asiatische Sprachen an. -T Befehlsstring tar-Datei Führt den tar-Treiber aus, der gtar-kompatibel ist. Die tar-Datei, in die geschrieben oder aus der gelesen wird, wird durch tar-Datei angegeben. Die beiden Hauptbefehle sind c (create; erstellen) und x (extract; auspacken). Diesen Befehlen können weitere Befehle folgen: a Setzt das Archiv-Attribut bei Dateien zurück, nachdem diese gespeichert wurden. Siehe auch die Option g. b Größe Legt in 512-Byte-Einheiten die Blockgröße zum Schreiben der tar-Datei fest. g Sichert nur Dateien, bei denen das Archiv-Bit gesetzt ist. Siehe auch die Option a. I Dateiname Schließt Dateien und Verzeichnisse ein. Dies ist die Standardeinstellung, die Angabe dieser Option ist daher redundant. Um einen Mustervergleich auszuführen, siehe auch die Option r. N Dateiname Sichert nur Dateien, die neuer als Datei sind. q Unterdrückt eine Diagnose. r Wertet reguläre Ausdrücke aus. Dies kann zusammen mit der Option I oder E eingesetzt werden, um Dateien ein- oder auszuschließen. X Dateiname Schließt Dateien und Verzeichnisse aus. -U Benutzername Legt den Benutzernamen und optional das Kennwort
fest, die bei einer Verbindung zu einer Freigabe für die Authentifizierung verwendet werden. -W Arbeitsgruppe Legt die Arbeitsgruppe/Domäne fest, in der smbclient vorgibt, Mitglied zu sein. smbclient-Befehle help [smbclient-Befehl] Wird kein Befehl festgelegt, wird eine Liste der verfügbaren Befehle ausgegeben. Gibt es hingegen einen Befehl als Argument, dann wird dafür eine kurze Hilfenachricht angezeigt. ! [Shell-Befehl] Ohne Angabe eines Befehls wird eine Unix-Shell gestartet. Wird ein Befehl angegeben, wird dieser Befehl in einer Unix-Shell ausgeführt. altname Dateiname Veranlasst smbclient, vom Server für die angegebene Datei den alten Dateinamen im 8.3-Format anzufordern und auszugeben. cancel Druck-Job-id [...] Veranlasst smbclient, beim Server das Abbrechen eines oder mehrerer Druck-Jobs anzufordern. Um welche Druck-Jobs es sich handelt, wird durch die numerischen Job-IDs festgelegt, die als Argument vorgegeben werden. Beachten Sie dazu auch den Befehl queue, der Druck-Job-IDs ausgibt. chmod Dateiname oktaler-Modus Fordert beim Server an, dass die Unix-Dateirechte auf der Datei Dateiname auf oktaler-Modus geändert werden. Die Rechte werden numerisch im oktalen Format angegeben. Dies funktioniert nur, wenn der Server Unix-CIFS-Erweiterungen unterstützt. chown Dateiname UID GID Fordert beim Server an, dass der Eigentümer und die Gruppe der durch Dateiname festgelegten Datei auf die in den Argumenten angegebenen numerischen
Werte UID und GID geändert werden. Dies funktioniert nur, wenn der Server Unix-CIFS-Erweiterungen unterstützt. cd [Verzeichnis] Ohne Argument wird das aktuelle Arbeitsverzeichnis auf dem entfernten System ausgegeben. Wird ein Verzeichnisname als Argument geliefert, wird auf dem entfernten System in das angegebene Verzeichnis gewechselt. del Dateiname Fordert beim Server das Löschen einer oder mehrerer Dateien aus dem aktuellen Arbeitsverzeichnis. Die entsprechenden Dateien werden durch das Argument festgelegt. Das Argument kann ein Globbing-Muster mit den Zeichen * und ? enthalten. dir [Dateiname] Ohne Argumente wird eine Liste der Dateien und Verzeichnisse im Arbeitsverzeichnis des Servers ausgegeben. Wird ein Argument angegeben, werden nur Dateien und Verzeichnisse angezeigt, deren Namen dem Argument entsprechen. Das Argument kann ein Globbing-Muster mit den Zeichen * und ? enthalten. exit Beendet das smbclient-Programm nach dem Schließen der SMB-Verbindung zum Server. get entfernte_Datei [lokale_Datei] Kopiert die durch entfernte_Datei angegebene Datei vom Server auf das lokale System. Wird kein Argument lokale_Datei festgelegt, nennt smbclient die lokale Datei genauso wie die Datei auf dem entfernten Server. Ist dagegen das Argument lokale_Datei vorhanden, wird dieses als Name der lokalen Kopie verwendet. Siehe auch den Befehl lowercase. help [Befehl] Ein Synonym für den Befehl ?. lcd [Verzeichnis] Ohne Argument wird der Name des Arbeitsverzeichnisses von smbclient auf dem lokalen
System ausgegeben. Wird ein Verzeichnisname als Argument festgelegt, wechselt smbclient in das angegebene Verzeichnis. link Link-Name Dateiname Fordert beim Server die Erzeugung eines harten Links auf Dateiname an. Dieser Link erhält die Bezeichnung Link-Name. Der Befehl funktioniert nur, wenn der Server Unix-CIFS-Erweiterungen unterstützt. lowercase Aktiviert (oder deaktiviert) die Umwandlung in Kleinbuchstaben. Ist diese Option gesetzt, werden die Namen von Dateien, die mit den Befehlen get und mget vom Server kopiert werden, in Kleinbuchstaben umgewandelt. Dies wird vor allem für den Zugriff auf Server verwendet, die Dateinamen ausschließlich in Großbuchstaben ausgeben. ls [Dateiname] Ein Synonym für dir. mask [Globbing-Muster] Legt das Globbing-Muster fest, das im Zusammenhang mit den Befehlen mget und mput verwendet wird, wenn die Rekursion aktiviert ist. (Ist die Rekursion deaktiviert, hat diese Einstellung keine Auswirkungen.) Sowohl mget als auch mput akzeptieren ein Globbing-Muster als Argumente; allerdings gelten diese Muster nur für das aktuelle Verzeichnis. Dieser Befehl gibt das Muster an, das für alle Unterverzeichnisse verwendet wird, die rekursiv durchlaufen werden. Das Muster bleibt wirksam, bis es durch einen weiteren mask-Befehl geändert wird. Um die Einstellung auf ihren ursprünglichen Standardwert zurückzusetzen, geben Sie als Globbing-Muster ein Asterisk (*) an. Damit werden alle Dateien angesprochen. Siehe auch die Befehle mget, mput und recurse. mdir Verzeichnis Ein Synonym für den Befehl mkdir. mget Muster Ist die Rekursion deaktiviert, werden Dateien aus dem
aktuellen Arbeitsverzeichnis auf dem Server auf das lokale System kopiert, die dem Datei-Globbing-Muster entsprechen, das durch das Argument vorgegeben wurde. Wurde die Rekursion dagegen aktiviert, wird das Argument Muster dazu verwendet, Verzeichnisse im aktuellen Arbeitsverzeichnis anzusprechen. Das Muster, das durch den Befehl mask vorgegeben wurde, dient in diesem Fall dazu, Dateien innerhalb der einzelnen Verzeichnisse und aller Unterverzeichnisse anzusprechen. Siehe auch die Befehle lowercase, mask und recurse. print Dateiname Druckt die angegebene Datei. Dies macht es erforderlich, dass smbclient eine Verbindung zu einer Druckfreigabe besitzt. Siehe auch den Befehl printmode. printmode Modus Legt den Modus fest, der durch den Befehl print verwendet wird. Der Modus kann entweder text sein, zum Drucken von Textdateien (wie etwa die ASCIIDateien, die üblicherweise unter Unix zu finden sind), oder graphics zum Drucken von Binärdateien. prompt Aktiviert (deaktiviert) den Abfrage-Modus. Ist die Abfrage aktiviert (das ist die Voreinstellung), fragen die Befehle mget und mput den Benutzer interaktiv bei jeder Datei nach der Erlaubnis, diese Datei zu übertragen. Der Benutzer kann auf diese Abfrage entweder mit y (yes) oder n (no), gefolgt von einem Zeilenumbruch, antworten. Ist die Abfrage deaktiviert, werden alle Dateien ohne Nachfrage übertragen. put lokale_Datei [entfernte_Datei] Kopiert die durch lokale_Datei angegebene Datei vom lokalen auf das entfernte System. Wurde kein Argument entfernte_Datei festgelegt, nennt smbclient die entfernte Datei genauso wie die Datei auf dem lokalen System. Wurde das Argument entfernte_Datei angegeben, wird dies als Name der entfernten Kopie verwendet. Siehe auch den Befehl lowercase.
queue Gibt Informationen über die Druckwarteschlange auf dem Server aus. Dazu ist erforderlich, dass smbclient eine Verbindung zu einer Druckfreigabe besitzt. quit Ein Synonym für exit. rd Verzeichnis Ein Synonym für rmdir. recurse Aktiviert (deaktiviert) den Rekursionsmodus, der die Befehle mget und mput beeinflusst. Ist die Rekursion deaktiviert (das ist die Voreinstellung), kopieren die Befehle mget und mput nur Dateien aus dem aktuellen Arbeitsverzeichnis, die dem als Argument angegebenen Datei-Globbing-Muster entsprechen. Das durch den Befehl mask festgelegte Muster wird ignoriert. Ist die Rekursion aktiviert, durchlaufen die Befehle mget und mput rekursiv alle Verzeichnisse, die dem im Argument angegebenen Muster entsprechen. Das durch den Befehl mask festgelegte Muster wird in diesem Fall dazu verwendet, Dateien in diesen Verzeichnissen auszuwählen. rm Dateiname Ein Synonym für del. rmdir Verzeichnis Fordert an, dass der Server das angegebene Verzeichnis löscht. setmode Dateiname Attribute Fordert beim Server das Zuweisen der angegebenen MS-DOS-Dateiattribute zur festgelegten Datei an. Das Argument Attribute weist folgendes Format auf: ein führendes Plus- (+) oder Minuszeichen (-), um das oder die Attribute zu setzen bzw. zu entfernen, gefolgt von einem oder mehreren der Zeichen r (read), s (system), h (hidden) oder a (archive). symlink Link-Name Dateiname Fordert beim Server das Erzeugen eines symbolischen Links namens Link-Name auf Dateiname. Dieser Befehl funktioniert nur, wenn der Server Unix-CIFS-
Erweiterungen unterstützt. Der Server erzeugt keinen Link auf eine Datei, die sich nicht in der Freigabe befindet, mit der smbclient verbunden ist. tar Befehl Führt eine Archivierungsoperation aus, bei der das tarFormat verwendet wird. Dies ist die interaktive Form der Kommandozeilen-Operation -T. Das Argument Befehl wird auf die gleiche Weise angegeben. Siehe auch den Befehl tarmode. blocksize Größe Legt in Einheiten von 512 Bytes die Blockgröße für Dateien fest, die durch den Befehl tar geschrieben werden. tarmode Modus ... Gibt an, wie der Befehl tar seine Archivierung durchführt. Dies schließt auch die Frage ein, wie das Archiv-Attribut auf Dateien behandelt wird. Es können mehrere der folgenden Modus-Argumente angegeben werden: full Alle Dateien werden archiviert, unabhängig davon, ob deren archive-Attribut gesetzt ist. Dies ist die Voreinstellung. inc Nur Dateien, bei denen das archive-Attribut gesetzt ist, werden in die Sicherung aufgenommen. reset Das archive-Attribut wird durch tar zurückgesetzt, nachdem die Datei in das Archiv aufgenommen wurde. noreset Das archive-Attribut bleibt unverändert. Dies ist die Voreinstellung. system Dateien, bei denen das system-Attribut gesetzt ist, werden in das Archiv aufgenommen. Dies ist die Voreinstellung. nosystem
Dateien, bei denen das system-Attribut gesetzt ist, werden nicht in das Archiv aufgenommen. hidden Dateien, bei denen das hidden-Attribut gesetzt ist, werden in das Archiv aufgenommen. Dies ist die Voreinstellung. nohidden Dateien, bei denen das hidden-Attribut gesetzt ist, werden nicht in das Archiv aufgenommen. verbose Beim Einfügen von Dateien in das Archiv (das heißt beim Erzeugen des Archivs) oder beim Lesen von Dateien aus dem Archiv (das heißt beim Extrahieren des Archivs) wird der Name jeder einzelnen Datei ausgegeben. Dies ist die Voreinstellung. noverbose Der ausführliche (verbose) Modus wird deaktiviert, tar führt seine Arbeit ohne weitere Ausgaben aus. quiet Ein Antonym für den verbose-Modus. Wenn quiet aktiviert ist, ist verbose deaktiviert und umgekehrt.
smbcontrol Der Befehl smbcontrol schickt Steuerungsnachrichten an laufende smbd- oder nmbd-Prozesse. Befehlszusammenfassung smbcontrol -i [Optionen] oder: smbcontrol [Optionen] Prozess Nachrichtentyp [Parameter] Optionen
-i Führt smbcontrol interaktiv aus, wobei Befehle ausgeführt werden, bis eine Leerzeile oder »q« eingelesen wird. Der Benutzer muss Superuser-Rechte besitzen. -s Dateiname Gibt den Ablageort der Samba-Konfigurationsdatei an. -d Protokollierungsstufe Legt die Protokollierungsstufe (manchmal auch als Debug Level bezeichnet) fest. Die Protokollierungsstufe kann sich im Bereich von 0 bis 10 bewegen. Unabhängig davon, ob smbcontrol-Befehle interaktiv oder auf der Kommandozeile aufgerufen werden, weisen sie das gleiche Format auf. Jeder Befehl besteht aus bis zu drei Teilen: Prozess Gibt den Prozess oder die Gruppe von Prozessen an, an die eine Nachricht geschickt werden soll. Hat Prozess den Wert smbd, empfangen alle smbdProzesse die Nachricht. Lautet Prozess nmbd, empfängt nur der Haupt-nmbd-Prozess (der durch die SambaDatei nmbd.pid identifiziert wird) die Nachricht. Ist Prozess die numerische PID eines laufenden Prozesses im System, empfängt dieser Prozess die Nachricht. Nachrichtentyp Gibt den Typ der verschickten Nachricht an. Nähere Informationen finden Sie im folgenden Abschnitt »smbcontrol-Nachrichtentypen«. Parameter Legt zusätzliche Parameter fest, die von manchen Nachrichten verlangt werden. smbcontrol-Nachrichtentypen close-share Freigabename Schließt die Verbindung zu einer oder mehreren Freigaben. Ist Freigabename als Asterisk (*)
angegeben, werden die Verbindungen zu allen Freigaben geschlossen. Um eine einzige Verbindung zu schließen, wird als Freigabename der Name der Freigabe vorgegeben, der in der SambaKonfigurationsdatei steht, allerdings ohne die umschließenden Klammern. Warnung: Es erfolgt keine Rückmeldung, wenn bei der Festlegung von Freigabename ein Fehler aufgetreten ist. debug Protokollierungsstufe Legt die Protokollierungsstufe fest. Der gleichnamige Parameter kann sich im Bereich von 0 bis 10 bewegen. debuglevel Gibt die aktuelle Protokollierungsstufe aus. force-election Kann nur im Zusammenhang mit nmbd verwendet werden. Weist diesen an, eine Wahl eines Hauptsuchdienstes zu erzwingen. ping Anzahl Schickt eine Anzahl von »pings« und meldet, wenn sie angekommen sind oder einen Timeout verursacht haben. Wird zum Testen einer Anbindung verwendet. profile Modus Steuert die Sammlung der Profiling-Statistiken. Wenn ein Modus aktiviert ist, werden Profiling-Statistiken gesammelt. Ist Modus deaktiviert, werden keine Statistiken gesammelt. Wird Modus mit dem Wert count angegeben, werden nur Mengenangaben gesammelt (und keine Zeitangaben). Hat Modus den Wert flush, wird der Datensatz gelöscht (initialisiert). profilelevel Gibt das aktuelle Profiling-Level aus. printer-notify Druckername Schickt für den angegebenen Drucker eine Benachrichtigungsmeldung an Windows NT/2000/XP. Diese Meldung kann nur an smbd gesandt werden. Warnung: Es erfolgt keine Rückmeldung, wenn der Parameter Druckername falsch angegeben wurde.
smbgroupedit Dieser Befehl, der neu in Samba 3.0 ist, richtet Zuordnungen von Unix-Gruppen auf Windows NT/2000/XPGruppen ein und erlaubt es außerdem einer Unix-Gruppe, zu einer Domänen-Gruppe zu werden. Dieser Befehl muss vom Superuser ausgeführt werden. Befehlszusammenfassung smbgroupedit [Optionen] Optionen -a Unix-Gruppenname Legt für die angegebene Unix-Gruppe eine Zuordnung fest. Die Option -n wird zusammen mit dieser Option verwendet, um die Windows NT-Gruppe anzugeben, der die Unix-Gruppe zugeordnet wird. -c SID Ändert die Zuordnungen zwischen einer Windows NTGruppe und einer Unix-Gruppe. Die Windows NTGruppe wird mit dieser Option als SID angegeben, die Unix-Gruppe wird mit Hilfe der Option -u festgelegt. -d Beschreibung Legt einen Kommentar für die Zuordnung fest, der zusammen mit dieser gespeichert wird. -l Im Zusammenhang mit der Option -v liefert diese Option eine lange Liste. Das ist die Voreinstellung. Unter den ausgegebenen Informationen finden Sie den Namen der Windows NT-Gruppe, deren SID, die entsprechende Unix-Gruppe (falls eine Zuordnung definiert wurde), den Gruppentyp, den Kommentar und die Rechte der Gruppe. -n Windows-Gruppenname Gibt den Namen der Windows NT-Gruppe an. Wird zusammen mit der Option -a verwendet.
-p Recht Wird zusammen mit der Option -a verwendet, um ein Windows NT-Recht anzugeben, das der Unix-Gruppe verliehen werden soll. -s Im Zusammenhang mit der Option -v liefert diese Option eine kurze Liste. Unter den ausgegebenen Informationen finden Sie nur den Namen der Windows NT-Gruppe, deren SID und - falls eine Zuordnung definiert wurde - die entsprechende Unix-Gruppe. Diese Option ist sinnvoll, wenn die SID einer Gruppe zur Benutzung mit der Option -c ermittelt werden soll. -t TYP Weist der Gruppe einen Windows-Gruppentyp zu. TYP ist ein einzelnes Zeichen und kann b (built-in; integriert), d (Domäne) oder l (lokal) sein. -u Unix-Gruppenname Gibt den Namen der Unix-Gruppe an, die der Windows NT-Gruppe zugeordnet werden soll. Wird zusammen mit der Option -c verwendet. -v Gibt eine Liste der Gruppen in der Windows NTDomäne aus, in der der Samba-Server arbeitet. Siehe auch die Optionen -l und -s. -x Unix-Gruppenname Löscht die Zuordnung für die angegebene Unix-Gruppe.
smbmnt Dies ist ein einfaches Hilfsprogramm zum Aufsetzen (Mounten) von smbfs-Dateisystemen. Es wird von smbmount verwendet, um im Namen eines normalen Benutzers den privilegierten Teil der Mount-Operation zu erledigen. Im Allgemeinen sollten Benutzer diesen Befehl nicht direkt ausführen. Befehlszusammenfassung
smbmnt Mount-Punkt [Optionen] Optionen -r Mountet das Dateisystem schreibgeschützt. -u uid Gibt die UID an, die für den Eigentümer der Dateien verwendet werden soll. -g gid Gibt die GID an, die für die Gruppe der Dateien verwendet werden soll. -f Maske Legt die oktale Dateimaske fest. -d Maske Legt die oktale Verzeichnismaske fest. -o Optionen Gibt die Liste der Optionen an, die an das smbfs-Modul übergeben werden. Um es Benutzern zu erlauben, SMB-Freigaben ohne die Hilfe eines Administrators zu mounten, setzen Sie beim smbmnt-Programm das Recht »setze Benutzer-ID«. Beachten Sie jedoch, dass dies zu Sicherheitsproblemen führen kann.
smbmount Dieses Programm mountet ein smbfs-Dateisystem an einem Mount-Punkt im Unix-Dateisystem. Typischerweise wird es als mount.smb von mount aufgerufen, kann aber auch direkt von Benutzern ausgeführt werden. Nach dem Mounten des smbfs-Dateisystems läuft smbmount weiterhin als Daemon, solange das Dateisystem gemountet ist. Es protokolliert Ereignisse in der Datei log. smbmount. Diese befindet sich im gleichen Verzeichnis wie die anderen Samba-Protokolldateien (per Voreinstellung ist dies normalerweise /usr/local/samba/ var). Die Protokollierungsstufe wird durch den Parameter
debug level in der Samba-Konfigurationsdatei gesteuert. Befehlszusammenfassung smbmount Dienst Mount-Punkt [-o Optionen] Das Argument Dienst legt die zu mountende SMBFreigabe in Form einer UNC fest. Das Argument MountPunkt gibt das als Mount-Punkt zu verwendende Verzeichnis an. Die Optionen von smbmount werden als durch Kommata getrennte Liste von Schlüssel=WertPaaren geliefert. Die dokumentierten Optionen sehen Sie nachfolgend, andere Optionen können übergeben werden, falls der Kernel sie unterstützt. Optionen username=Name Gibt den Benutzernamen an, unter dem eine Verbindung hergestellt wird. Ist diese Option nicht vorhanden, wird die Umgebungsvariable USER ausprobiert. Der Name kann als Benutzername% Kennwort, Benutzer/Arbeitsgruppe oder Benutzer/ Arbeitsgruppe%Kennwort angegeben werden. password=String Legt das SMB-Kennwort fest. Wird mit dieser Option, mit der Option username oder der Option credentials kein Kennwort festgelegt, wird die Umgebungsvariable PASSWD verwendet. Existiert diese ebenfalls nicht, fragt smbmount interaktiv nach einem Kennwort. credentials=Dateiname Gibt eine Datei an, die einen Benutzernamen und ein Kennwort enthält. Die Datei weist folgendes Format auf: username = Wert password = Wert uid=Zahl Legt die Unix-Benutzer-ID fest, die als Eigentümer aller Dateien im gemounteten Dateisystem verwendet
werden soll. Sie kann als Benutzername oder als numerische UID angegeben werden. Standardmäßig wird die UID des Benutzers eingesetzt, der smbmount ausführt. gid=Zahl Legt die Unix-Gruppen-ID fest, die als Gruppe für alle Dateien im gemounteten Dateisystem verwendet werden soll. Sie kann als Gruppenname oder als numerische GID angegeben werden. Standardmäßig wird die GID des Benutzers eingesetzt, der smbmount ausführt. port=Zahl Gibt die TCP-Port-Nummer an. Diese lautet 139, was von den meisten Windows-Versionen verlangt wird. fmask=oktale_Maske Legt die Unix-Rechte aller Dateien im gemounteten Dateisystem fest. Standardmäßig wird die aktuelle Maske des Benutzers angenommen. dmask=oktale_Maske Legt die Unix-Rechte aller Verzeichnisse im gemounteten Dateisystem fest. Standardmäßig wird der aktuelle Wert von umask angenommen. debug=Protokollierungsstufe Legt die Protokollierungsstufe fest. ip=Host Gibt den Hostnamen oder die IP-Adresse des ZielHosts an. netbiosname=Name Gibt den Namen des Computers an, zu dem eine Verbindung hergestellt werden soll. Standardmäßig ist dies der Hostname des lokalen Systems. workgroup=Name Legt die Arbeitsgruppe oder Domäne fest. sockopt=Socket-Optionen Legt die TCP-Socket-Optionen fest. scope=Zahl Legt den NetBIOS-Bereich fest.
guest Erwartet kein Kennwort und fragt auch nicht danach. ro Mountet die Freigabe schreibgeschützt. rw Mountet die Freigabe lese- und schreibbar. iocharset=Zeichensatz Legt den von der Linux-Maschine für die Codepage-aufZeichensatz-Übersetzung verwendeten Zeichensatz fest. Siehe auch die Option codepage. codepage=Codepage Legt die DOS-Codepage fest. Siehe auch die Option iocharset. ttl=Millisekunden Gibt in Millisekunden die TTL (Time to Live; Lebensdauer) für Einträge im Verzeichnis-Cache an. Ein höherer Wert liefert eine bessere Leistung für große Verzeichnisse und/oder langsame Verbindungen. Voreinstellung ist 1000 ms. Versuchen Sie es mit 10000 ms (10 Sekunden) als Anfangswert, falls Verzeichnisoperationen sichtlich langsam ablaufen.
smbpasswd Das Programm smbpasswd bietet die allgemeine Funktionalität zum Verwalten verschlüsselter Kennwörter. Wie es arbeitet, hängt davon ab, ob es vom Superuser oder von einem normalen Benutzer ausgeführt wird. Vom Superuser kann smbpasswd dazu verwendet werden, die Samba-Datei smbpasswd zu verwalten. Es kann Benutzer anlegen oder löschen, die Kennwörter der Benutzer ändern oder andere Attribute modifizieren, die einem Benutzer gehören, der in der Datei smbpasswd vorgehalten wird. Wird es von normalen Benutzern ausgeführt, kann smbpasswd nur dazu eingesetzt werden, deren verschlüsselte Kennwörter zu ändern. In diesem Betriebsmodus agiert smbpasswd als Client für den smbd-
Daemon. Das Programm bricht ab, falls smbd nicht läuft, falls die Parameter hosts allow oder hosts deny in der Samba-Konfigurationsdatei Verbindungen von Local-host (IP-Adresse 127.0.0.1) nicht zulassen oder falls die Option encrypted passwords auf no gesetzt ist. Für smbpasswd ist es auch möglich, das Kennwort eines Benutzers zu ändern, wenn dieses auf einem entfernten System, einschließlich eines Windows NT-Domänen-Controllers, verwaltet wird. Befehlszusammenfassung Beim Aufruf durch den Superuser: smbpasswd [Optionen] [Benutzername] [Kennwort] In diesem Fall wird der Benutzername des Benutzers, dessen smbpasswd-Eintrag geändert werden soll, als zweites Argument angegeben. Ansonsten: smbpasswd [Optionen] [Kennwort] Optionen für Superuser -a Benutzername Fügt der Datei mit den verschlüsselten Kennwörtern einen Benutzer hinzu. Der Benutzer muss bereits in der Kennwortdatei des Systems (/etc/passwd ) vorhanden sein. Existiert der Benutzer bereits in der Datei smbpasswd, ändert die Option -a das vorhandene Kennwort. -d Benutzername Deaktiviert einen Benutzer in der Datei mit den verschlüsselten Kennwörtern. Der Eintrag des Benutzers in der Datei bleibt vorhanden, wird allerdings mit einem Flag gekennzeichnet, um eine Authentifizierung des Benutzers zu verhindern. -e Benutzername Aktiviert einen deaktivierten Benutzer in der Datei mit den verschlüsselten Kennwörtern. Dies setzt den
Effekt der Option -d außer Kraft. -j Domäne Fügt den Samba-Server als Domänen-Member-Server in eine Windows NT-Domäne ein. Das Argument Domäne ist der NetBIOS-Name der Windows NTDomäne, der der Server beitritt. Siehe auch die Optionen -r und -U. -m Gibt an, dass es sich bei einem Zugang um einen Computer-Zugang in einer Windows NT-Domäne und nicht um einen Benutzerzugang handelt. -n Legt als Kennwort des Benutzers ein leeres Kennwort an. Damit der Benutzer sich authentifizieren kann, muss der Parameter null passwords = yes im Abschnitt [global] der Samba-Konfigurationsdatei existieren. -R Auswertungsreihenfolge Legt die Auswertungsreihenfolge der Name-Server fest. Diese Option ist ähnlich der Konfigurationsoption resolve order und kann einen oder mehrere der vier Parameter lmhosts, host, wins und bcast (in beliebiger Reihenfolge) entgegennehmen. Wird mehr als ein Parameter angegeben, werden die Parameter durch jeweils ein Leerzeichen voneinander getrennt. -w Kennwort Wird verwendet, wenn Samba mit der Konfigurationsoption --with-ldapsam kompiliert wurde. Legt das Kennwort fest, das zusammen mit dem Wert des Parameters ldap admin dn der SambaKonfigurationsdatei verwendet wird. -x Benutzername Löscht einen Benutzer aus der Datei smbpasswd. Bei dieser Operation werden alle Informationen, die mit dem Eintrag verknüpft sind, unwiederbringlich entfernt. Siehe die Option -d, um einen Zugang zu deaktivieren, ohne den Eintrag des Benutzers in der Datei zu löschen.
Andere Optionen -c Dateiname Gibt die Samba-Konfigurationsdatei an und setzt den bei der Kompilierung festgelegten Vorgabewert außer Kraft. -D Protokollierungsstufe Legt die Protokollierungsstufe (auch als Debug Level bezeichnet) fest. Diese kann sich im Bereich von 0 bis 10 bewegen. Protokollierungsstufe 0 zeichnet nur die wichtigsten Meldungen auf, Stufe 1 ist normal, die Stufen 3 und höher dienen vorrangig der Fehlersuche und verlangsamen das Programm merklich. -h Gibt Informationen zur Benutzung auf der Kommandozeile aus. -L Veranlasst smbpasswd, im lokalen Modus zu laufen, in dem normale Benutzer die sonst dem Superuser vorbehaltenen Optionen verwenden dürfen. Dazu ist es erforderlich, dass die Datei smbpasswd für den Benutzer les- und schreibbar ist. Diese Option dient Testzwecken. -r NetBIOS-Name Gibt an, auf welcher Maschine sich das Kennwort ändern soll. Wird ein Kennwort für eine Windows NTDomäne geändert, muss das entfernte System, das durch NetBIOS-Name angegeben wird, der PDC der Domäne sein. Der Benutzername des Benutzers auf dem lokalen System wird standardmäßig verwendet. Siehe auch die Option -U für den Fall, dass der SambaBenutzername des Benutzers sich von seinem lokalen Benutzernamen unterscheidet. -R Auswertungsreihenfolge Legt die Auswertungsreihenfolge der Name-Server fest. Diese Option ist ähnlich der Konfigurationsoption resolve order und kann einen oder mehrere der vier Parameter lmhosts, host, wins und bcast (in beliebiger Reihenfolge) entgegennehmen. Wird mehr
als ein Parameter angegeben, werden die Parameter durch jeweils ein Leerzeichen voneinander getrennt. -s Benutzername Veranlasst smbpasswd, von /dev/tty nicht nach Kennwörtern zu fragen, sondern stattdessen das alte und das neue Kennwort an der Standardeingabe einzulesen. Das ist nützlich, wenn smbpasswd durch ein Skript aufgerufen wird. -S Fragt den Domänen-Controller der Domäne ab, wie durch den Parameter workgroup in der SambaKonfigurationsdatei festgelegt, und bezieht die SID der Domäne. Diese wird dann als SID für das lokale System verwendet. Durch Kombination dieser Option mit der Option -r kann ein spezieller PDC gewählt werden. In diesem Fall wird die SID seiner Domäne verwendet. Diese Option dient dem Migrieren von Domänen-Zugängen von einem Windows NT-PDC auf einen Samba-PDC. -U Benutzername[%Kennwort] Ändert auf dem entfernten System das Kennwort für Benutzername. Damit sollen Fälle behandelt werden, in denen der entfernte und der lokale Benutzername unterschiedlich sind. Diese Option verlangt außerdem den Einsatz der Option -r. Wird oft im Zusammenhang mit -j verwendet, um den Benutzernamen des Administrators auf dem primären Domänen-Controller bereitzustellen, damit dieser Computer-Konten anlegen kann.
smbsh Das Programm smbsh erlaubt den Zugriff auf SMBFreigaben von einem Unix-System aus. Wenn smbsh läuft, ist für dynamisch verbundene Shell-Befehle ein zusätzlicher Verzeichnisbaum namens /smb verfügbar. Die erste Ebene der Verzeichnisse unter /smb repräsentiert die verfügbaren Arbeitsgruppen, die nächste Ebene der Unterverzeichnisse die SMB-Server in den
einzelnen Arbeitsgruppen und die dritte Ebene der Unterverzeichnisse die Festplatten- und Druckerfreigaben der einzelnen Server. Samba muss mit der Option --with-smbwrappers kompiliert werden, um smbsh zu aktivieren. Optionen -d Protokollierungsstufe Legt die Protokollierungsstufe (auch als Debug Level bezeichnet) fest. Diese kann sich im Bereich von 0 (Voreinstellung) bis 10 bewegen. Protokollierungsstufe 0 zeichnet nur die wichtigsten Meldungen auf, Stufe 1 ist normal, die Stufen 3 und höher dienen vorrangig der Fehlersuche und verlangsamen smbsh merklich. -l Dateiname Legt den Namen der Protokollierungsdatei fest. Standardmäßig werden Meldungen an stderr geschickt. -L Verzeichnis Legt den Ablageort der Shared Libraries von smbsh fest. Dabei wird der bei der Kompilierung vorgegebene Wert außer Kraft gesetzt. -P Präfix Legt den Namen des root-Verzeichnisses für das SMBDateisystem fest. Vorgabe ist /smb. -R Auswertungsreihenfolge Legt die Auswertungsreihenfolge der Name-Server fest. Diese Option ist ähnlich der Konfigurationsoption resolve order und kann einen oder mehrere der vier Parameter lmhosts, host, wins und bcast (in beliebiger Reihenfolge) entgegennehmen. Wird mehr als ein Parameter angegeben, werden die Parameter durch jeweils ein Leerzeichen voneinander getrennt. -U Benutzername Gibt den Benutzernamen und optional das Kennwort zur Authentifizierung der Verbindung zum SMB-Server an. Das Kennwort kann im Format Benutzername% Kennwort gegeben werden. Fehlen Benutzername und/
oder Kennwort, fragt smbsh interaktiv danach. -W Arbeitsgruppe Gibt die NetBIOS-Arbeitsgruppe oder Domäne an, zu der der Client eine Verbindung herstellt. Dies setzt den Parameter workgroup in der SambaKonfigurationsdatei außer Kraft und ist manchmal nötig, um eine Verbindung zu einigen Servern herstellen zu können.
smbspool Das Programm smbspool stellt eine CUPS-kompatible Schnittstelle zum Samba-Drucksystem zur Verfügung, indem eine Möglichkeit geboten wird, mit Hilfe des durch CUPS-Drucker festgelegten Kommandozeilen-Formats einen Druck-Job an einen SMB-Drucker zu schicken. smbspool ist zwar so gestaltet, dass es am besten mit CUPS-Druckern funktioniert, es kann aber auch dazu verwendet werden, Druck-Jobs an Nicht-CUPS-SambaDrucker zu schicken. Befehlszusammenfassung smbspool Job Benutzer Titel Kopien Optionen Dateiname Die hier gezeigten Argumente für smbspool sind identisch mit den im CUPS-Drucksystem verwendeten. Allerdings werden einige der Argumente momentan ignoriert, weil sie nicht dem Samba-Drucksystem entsprechen. Diese Argumente müssen im Befehl vorhanden sein; sie können mit »Dummy«-Werten ausgefüllt werden. Das Argument Job bezieht sich auf die Job-Nummer und wird momentan ignoriert. Das Argument Benutzer bezeichnet den Namen des Benutzers, der den Druck-Job abgeschickt hat, und wird ebenfalls ignoriert. Titel ist der Name des Druck-Jobs und muss angegeben werden. Dieses Argument wird als Name der entfernten Druckdatei verwendet. Das Argument Kopien gibt die Anzahl der Kopien an, die gedruckt werden sollen. Diese Zahl wird
nur verwendet, wenn das (optionale) Argument Dateiname vorhanden ist. Ansonsten wird nur eine Kopie gedruckt. Das Argument Optionen zum Festlegen von Druckoptionen wird ignoriert. Das Argument Dateiname dient zum Angeben des Namens der zu druckenden Datei. Fehlt diese Option, wird auf die Standardeingabe zurückgegriffen. Der Drucker, an den der Job gesandt wird, wird in der Umgebungsvariablen DEVICE_URI festgelegt. Der Druckername wird als Geräte-URI (Universal Resource Indicator) angegeben, der eines der folgenden Formate aufweisen kann: smb://Server/Drucker smb://Arbeitsgruppe/Server/Drucker smb://Benutzername:Kennwort@Server/Drucker smb://Benutzername:Kennwort@Arbeitsgruppe/ Server/Drucker
smbstatus Dieses Programm listet die aktuellen Verbindungen an einem Samba-Server auf. Optionen -b Veranlasst smbstatus, eine kurze Ausgabe zu erzeugen. Dazu gehören die Version von Samba sowie Informationen über angemeldete Benutzer. -d Liefert eine ausführliche Ausgabe. Dazu gehören eine Liste der Dienste, eine Liste der gesperrten Dateien und Statistiken über die Speicherauslastung. Dies ist die Standardeinstellung. -L Gibt nur die Liste der aktuellen Dateisperren aus. -p Gibt nur eine Liste der smbd-Prozess-IDs aus.
-P Gibt nur den Inhalt des Profiling-Speicherbereichs aus. Erfordert, dass Samba mit der Möglichkeit des Profiling kompiliert wurde. -S Gibt nur eine Liste der Freigaben und ihrer Verbindungen aus. -s Dateiname Gibt die Samba-Konfigurationsdatei an, die beim Verarbeiten dieses Befehls verwendet werden soll. -u Benutzername Beschränkt den Bericht auf die Aktivität eines einzelnen Benutzers.
smbtar Das Programm smbtar ist ein Shell-Skript-Wrapper, der auf smbclient aufsetzt und Archivierungsoperationen im tar-Format vornimmt. Von der Funktionalität her ist dieses Programm dem Unix-Programm tar sehr ähnlich. Befehlszusammenfassung smbtar [Optionen] Optionen -a Setzt das Archiv-Bit bei Dateien zurück, nachdem diese gesichert wurden. Voreinstellung ist, das ArchivAttribut unverändert zu lassen. -b Blockgröße Legt in 512-Byte-Einheiten die Blockgröße zum Lesen oder Schreiben der Archivdatei fest. Standardwert ist 20, wodurch sich eine Blockgröße von 10.240 Bytes ergibt. -d Verzeichnis Wechselt auf dem entfernten System in das
Arbeitsverzeichnis Verzeichnis, bevor mit dem Sichern oder Wiederherstellen begonnen wird. -i Inkrementeller Modus. Es werden nur Dateien gesichert, bei denen das DOS-Archiv-Bit gesetzt ist. Das Archiv-Bit wird nach dem Lesen der Dateien zurückgesetzt (gelöscht). -l Protokollierungsstufe Legt die Protokollierungsstufe fest. Dies entspricht der Option -d von smbclient und anderen SambaProgrammen. -N Dateiname Sichert nur Dateien, die neuer sind als Dateiname. Für inkrementelle Backups. -p Kennwort Gibt das Kennwort an, das für den Zugriff auf eine Freigabe verwendet wird. Eine Alternative zum Einsatz des Formats Benutzername%Kennwort mit der Option u. -r Stellt Dateien aus dem tar-Archiv wieder her. -s Server Gibt den SMB-Server an. Siehe auch die Option -x. -t Dateiname Gibt die Datei oder das Unix-Gerät an, die bzw. das als Archivierungsmedium verwendet werden soll. Vorgabe ist tar.out oder der Wert der Umgebungsvariablen TAPE, falls diese gesetzt wurde. -u Benutzername Gibt den Benutzerzugang an, der beim Verbinden mit einer Freigabe verwendet werden soll. Sie können im Format Benutzername%Kennwort auch ein Kennwort angeben. Standardmäßig ist der Benutzername der Unix-Benutzername des Benutzers. -v Arbeitet im ausführlichen (verbose) Modus. Es werden Fehlermeldungen und zusätzliche Informationen ausgegeben, die für die Fehlersuche und Überwachung
verwendet werden können. Die Sicherungs- und Wiederherstellungsoperationen führen jede Datei auf, wenn sie verarbeitet wird. -x Freigabe Gibt den Namen der Freigabe auf dem Server an, auf die Sie zugreifen wollen. Vorgabe ist backup. Siehe auch die Option -s. -X Dateiliste Weist smbtar an, die angegebenen Dateien von der Sicherung oder Wiederherstellung auszunehmen.
smbumount Der Befehl smbumount existiert, um es einem normalen Benutzer (der also nicht root oder Superuser ist) zu erlauben, ein smbfs-Dateisystem abzusetzen (abzumounten), das der Benutzer zuvor mittels smbmount gemountet hat. Befehlszusammenfassung smbumount Mount-Punkt Damit normale Benutzer den Befehl ausführen können, muss für smbumount suid root sein.
testparm Das Programm testparm prüft eine SambaKonfigurationsdatei auf offensichtliche Fehler. Befehlszusammenfassung testparm [Optionen] [Dateiname] [Hostname IPAdresse] Wurde die Konfigurationsdatei nicht mit Hilfe des Arguments Dateiname angegeben, handelt es sich standardmäßig um /usr/local/samba/lib/smb.conf. Sind
der Hostname und die IP-Adresse eines Systems enthalten, wird eine zusätzliche Prüfung durchgeführt, um sicherzustellen, dass diesem System erlaubt ist, jeden Dienst anzusprechen, der in der Konfigurationsdatei definiert ist. Dazu werden der Hostname und die IPAdresse mit den Definitionen der Parameter hosts allow und hosts deny verglichen. Optionen -h Gibt Benutzungsinformationen für das Programm aus. -L Server-Name Setzt die Konfigurationsvariable %L auf den angegebenen Server-Namen. -s Deaktiviert das Standardverhalten, bei dem auf das Drücken der Enter-Taste gewartet wird, bevor die Liste der Konfigurationsoptionen für den Server ausgegeben wird.
testprns Dies ist ein sehr einfaches Programm, das prüft, ob ein angegebener Drucker in der Printcap-Datei des Systems existiert. Befehlszusammenfassung testprns Druckername [Printcap-Name] Wenn Printcap-Name nicht angegeben ist, versucht Samba, die in der Samba-Konfigurationsdatei mit dem Parameter printcap name festgelegte Datei zu verwenden. Ist dort ebenfalls keine Datei angegeben, versucht Samba /etc/printcap.
wbinfo
Dieses Programm bezieht Informationen vom winbinddDaemon und gibt diese aus. Der winbindd-Daemon muss seinerseits laufen, damit wbinfo funktioniert. Befehlszusammenfassung wbinfo [Optionen] Optionen -u Gibt alle Benutzernamen aus, die aus der Windows NTDomäne Unix-Benutzern zugeordnet worden sind. Benutzer in allen vertrauenswürdigen Domänen werden ebenfalls aufgeführt. -g Gibt alle Gruppennamen aus, die aus der Windows NTDomäne Unix-Gruppen zugeordnet worden sind. Gruppen in allen vertrauenswürdigen Domänen werden ebenfalls aufgeführt. -h NetBIOS-Name Fragt den WINS-Server ab und gibt die IP-Adresse des angegebenen Systems aus. -n Name Gibt die SID aus, die dem angegebenen Namen entspricht. Das Argument kann als DOMÄNE/Name (oder mit einem anderen Zeichen als dem Schrägstrich - wie durch das winbind-Trennzeichen definiert) angegeben werden, um sowohl die Domäne als auch den Namen festzulegen. Werden die Domäne und das Trennzeichen weggelassen, wird der Wert des Parameters workgroup aus der SambaKonfigurationsdatei als Name der Domäne verwendet. -s SID Gibt den Namen aus, der einer SID zugeordnet ist. Die SID wird im Format S-1-N-N-D-D-D-R angegeben. -U UID Gibt die SID aus, die einer Unix-UID zugeordnet ist,
falls in der aktuellen Domäne eine existiert. -G gid Gibt die SID aus, die einer Unix-Gruppen-ID zugeordnet ist, falls in der aktuellen Domäne eine existiert. -S SID Gibt die Unix-UID aus, die winbind der angegebenen SID zugeordnet hat, falls eine existiert. -Y SID Gibt die Unix-Gruppen-ID aus, die winbind der angegebenen SID zugeordnet hat, falls eine existiert. -t Testet, ob der vertrauenswürdige Workstation-Zugang für den Samba-Server gültig ist. -m Gibt eine Liste der Windows NT-Domänen aus, denen vom Windows-Server vertraut wird. Dies schließt nicht die Domäne des PDC ein. -r Benutzername Gibt die Liste der Unix-Gruppen-IDs aus, zu denen der Benutzer gehört. Dies funktioniert nur, wenn der Zugang des Benutzers auf einem Domänen-Controller verwaltet wird. -a Benutzername%Kennwort Prüft, ob ein Benutzer sich durch winbindd mit dem angegebenen Benutzernamen und Kennwort authentifizieren kann. -A Benutzername%Kennwort Speichert den Benutzernamen und das Kennwort, die von winbindd während einer Sitzung mit dem Domänen-Controller verwendet werden; gedacht für den Einsatz in einer Windows 2000-Domäne.
Anhang D Samba mit CVS herunterladen In Kapitel 2 haben wir Ihnen gezeigt, wie Sie die neueste stabile Version von Samba herunterladen können, die von den Samba-Entwicklern veröffentlicht wurde. In den meisten Fällen (beispielsweise praktisch immer, wenn Sie einen Produktions-Server einrichten wollen) wird diese Vorgehensweise für Sie ausreichend sein. Möglicherweise wollen Sie jedoch für Forschungsund Testzwecke oder weil Sie interessiert, was die Samba-Entwickler als Nächstes präsentieren werden, eine Version von Samba einsetzen, die die neuesten Bug-Fixes und Funktionen enthält. Das Samba-Team legt die neuesten Updates des Samba-Quellcodes in einem CVS-Repository (Concurrent Versions System) ab. CVS ist ein frei erhältliches Werkzeug zur Konfigurationsverwaltung und wird unter der GNU General Public License vertrieben. Sie können die aktuelle Kopie von http://www.cvshome.com/ herunterladen. Das Samba-Team beschreibt unter http://www.samba.org/samba/cvs.html verschiedene Möglichkeiten, auf sein CVSRepository zuzugreifen.
Der CVS-Code enthält zwar die neuesten Funktionen und Merkmale, er enthält aber auch die neuesten Fehler und lässt sich manchmal nicht einmal richtig kompilieren! Falls Sie eine weniger »brandneue« Ausgabe bevorzugen, schauen Sie einmal in die Alpha- und PreVerzeichnisse auf dem SambaFTP-Server. Das AlphaVerzeichnis enthält AlphaReleases, das Pre-Verzeichnis enthält die (üblicherweise stabileren) PrereleaseVersionen. (Siehe Kapitel 2 für Informationen über das Herunterladen mittels FTP.) Alpha-Releases hinken hinter dem neuesten CVS-Code zwar ein wenig hinterher, sind aber weniger fehlerbehaftet und lassen sich auf den verbreiteteren Unix-Versionen normalerweise ordentlich kompilieren. Eine der besten Gegebenheiten im Zusammenhang mit CVS ist seine Fähigkeit, mit entfernten Logins umzugehen. Das bedeutet, dass man aus dem ganzen Internet für jedes
Projekt, das ein CVS-Repository benutzt, unterschiedliche Quelldateien herunterladen und aktualisieren kann. So ist das auch bei Samba. Sobald Sie CVS auf Ihrem System installiert haben, müssen Sie sich mit dem folgenden Befehl zunächst einmal am Samba-Quell-Server anmelden: $ cvs -d :pserver:[email protected]:/ cvsroot login
Wenn Sie nach einem Kennwort gefragt werden, geben Sie cvs ein. Sie werden am CVS-Server unter pserver.samba.org angemeldet. Sobald die Verbindung besteht, können Sie mit dem folgenden Befehl den neuesten Quellbaum herunterladen:1 $ cvs -z5 -d :pserver:pserver@pserver. samba.org:/cvsroot co samba
Dies lädt die gesamte Samba-Distribution (Datei für Datei) in ein Verzeichnis namens samba herunter, das in Ihrem aktuellen Verzeichnis erzeugt wurde. Das Verzeichnis samba weist die gleiche Struktur auf wie die SambaQuelldistribution, die in Kapitel 2 beschrieben wurde, allerdings enthält es im ganzen Quellbaum zusätzliche Verzeichnisse namens CVS. Diese Verzeichnisse werden von CVS benutzt, um Informationen über die einzelnen Dateien im Quellbaum zu speichern sowie
darüber, wie diese zu aktualisieren sind. Nachdem der Download abgeschlossen ist, können Sie den Anweisungen aus Kapitel 2 für die Konfiguration, das Kompilieren und die Installation Ihres neuen Samba-Release folgen. Die Samba-Entwickler aktualisieren den SambaQuellcode üblicherweise ein- oder mehrmals am Tag. Immer wenn Sie wieder auf den Stand der neuesten Änderungen kommen wollen, wechseln Sie einfach mit cd in das Verzeichnis samba und führen diesen Befehl aus: $ cvs update -d -P
Danach müssen Sie Ihre Installation neu konfigurieren, kompilieren und installieren, um sie zu aktualisieren, wie in Kapitel 2 gezeigt. 1Die
Option -z sorgt dafür, dass die Übertragung im Komprimierungsformat GNUgzip ausgeführt wird. Damit dies funktioniert, muss das Programm gzip auf Ihrem System installiert sein. Falls Sie gzip nicht haben, lassen Sie die Option -z weg.
Anhang E Konfigurationsoptionen Wie wir in Kapitel 2 erklärt haben, wird vor dem Kompilieren des Samba-Quellcodes das Programm configure ausgeführt, um den Vorgang der Kompilierung an die lokale Architektur anzupassen. In diesem Stadium ist es möglich, Optionen festzulegen, um Sambas Verhalten näher zu bestimmen und Funktionen ein- oder auszuschließen. Hier sehen Sie an einem Beispiel, wie die Konfigurationsoptionen angegeben werden: # ./configure --with-smbmount --withconfigdir=/etc/samba --with-manpageslangs=ja
Dieses Beispiel konfiguriert die SambaInstallation derart, dass SMB-Dateisysteme gemountet werden, in /etc/samba nach der Samba-Konfigurationsdatei gesucht wird (anstatt an der voreingestellten Stelle unter /usr/local/ samba/lib) und Manpages in japanischer Sprache installiert werden. Wir haben diese drei Konfigurationsoptionen ausgewählt, weil sie den Einsatz der drei Arten von Optionen illustrieren, die es bis Samba 3.0 gibt. Bei der Option --withsmbmount handelt es sich um eine Boolesche Option, die den Wert yes oder no annehmen
kann. Alle Booleschen Optionen sind standardmäßig auf no gesetzt. Um eine Option einzuschalten, muss sie lediglich angegeben werden. Falls Sie es eindeutiger haben wollen, können Sie auch --with-smbmount=yes schreiben. Um eine Option explizit auszuschalten, haben Sie neben --with-merkmal=no auch die Möglichkeit, --without-merkmal anzugeben. Im Fall der beiden anderen gezeigten Optionen muss hinter dem Gleichheitszeichen (=) ein Argument angegeben werden. Einige der Optionen werden dazu verwendet, die Verzeichnisse festzulegen, die Samba für verschiedene Zwecke einsetzt. In der letzten Gruppe gibt es nur eine Option, bei der etwas anderes als ein Verzeichnis als Optionsargument angegeben wird. Die unterstützten Konfigurationsoptionen variieren von Release zu Release. Beispielsweise verschwanden von Samba 2.2.x zu Samba 3.0 viele Optionen, einige wurden hinzugefügt. Mit dem folgenden Befehl erhalten Sie eine Liste der Konfigurationsoptionen für Ihre Ausgabe von Samba: # ./configure --help
Tabelle E-1 zeigt die Konfigurationsoptionen von Samba.
Tabelle E-1 Konfigurationsoptionen Konfigurationsoption
Beschreibung
--with-acl-support
Unterstützung von Windows NT/2000/XP-ACLs
--with-afs
Unterstützung für das Andrew Filesystem (AFS)
--with-automount
Unterstützung für den NFS Automounter
--withAblageort der Codepagecodepagedir=Verzeichnis Dateien --withconfigdir=Verzeichnis
Ablageort der Konfigurationsdateien
--with-dce-dfs
Unterstützung für DCE/DFS
--with-fhs
Verwendung der FHSentsprechenden Ablageorte für Dateien
--with-included-popt
Verwendung von Sambas popt( )
--withkrb4=Basisverzeichnis
Unterstützung für Kerberos 4
--withkrb5=Basisverzeichnis
Unterstützung für Kerberos 5 (Microsoft ADS)
--with-ldapsam
Unterstützung für LDAP SAM
--withlibiconv=Verzeichnis
Festlegung der iconvBibliothek
--with-libsmbclient
Kompiliert die smbclientBibliothek
--withlockdir=Verzeichnis
Ablageort der Sperrdateien
--withAblageort der logfilebase=Verzeichnis Protokolldateien --with-manpageslangs=Sprache
Festlegung der Sprache für die Manpages
--with-msdfs
Unterstützung für Microsoft Dfs
--with-nisplus-home
Unterstützung für NIS+Home-Verzeichnisse
--with-nisplussam
Unterstützung für NIS+ SAM
--with-pam
Unterstützung für PAMRestriktionen
--with-pam_smbpass
Kompiliert PAM-Modul pam_smbpass.so
--withpiddir=Verzeichnis
Ablageort der PID-Dateien
--withprivatedir=Verzeichnis
Ablageort der smbpasswdDatei
--with-profiling-data
Unterstützung für das Sammeln von ProfilingInformationen
--with-quotas
Unterstützung für PlattenQuotas
--withreadline=Verzeichnis
Festlegung der readlineBibliothek
--with-sendfilesupport
Unterstützung für sendfile ( )-Systemaufruf
--with-smbmount
Unterstützung für smbmount und smbfs
--with-smbwrapper
Kompiliert die smbwrapper-Bibliothek zur Unterstützung von smbsh
--with-spinlocks
Verwendung von spinlocks an Stelle von fcntl-Sperren
--with-ssl
Unterstützung für SSL
--withsslinc=Verzeichnis
Ablageort der SSL-IncludeDateien
--withssllib=Verzeichnis
Ablageort der SSLBibliotheken
--withswatdir=Verzeichnis
Ablageort der SWATDateien
--with-syslog
Unterstützung für Nachrichtenprotokollierung mittels syslog
--with-tdbsam
Unterstützung von TDBDatenbankdateien für SAM
--with-utmp
Unterstützung für utmpDatei-Accounting
--with-winbind
Kompiliert winbind
--with-acl-support Fügt Unterstützung für Windows NT/2000/XPACLs (Access Control Lists) hinzu. Damit dies funktioniert, benötigen Sie im HostBetriebssystem POSIX ACL-Unterstützung. Einzelheiten in Kapitel 8. --with-afs Fügt Unterstützung für das Andrew Filesystem (AFS) hinzu, um Benutzer zu authentifizieren, die über das AFS auf Dateien zugreifen. --with-automount Fügt Unterstützung für den Automounter hinzu, eine Funktion, die oft im Zusammenhang mit NFS verwendet wird. Dadurch können NFS-Freigaben beim ersten Versuch des Zugriffs auf sie automatisch gemountet werden. Sie werden diese Funktion vermutlich aktivieren, wenn Verzeichnisse, die von Ihrem Samba-Server freigegeben werden, über NFS gemountet sind (oder solche Verzeichnisse enthalten). --with-codepagedir=Verzeichnis Gibt das Verzeichnis an, in dem Codepage-
Dateien für die Unterstützung einer Internationalisierung abgelegt werden. Nähere Informationen über diese Funktion finden Sie im Abschnitt »Internationalisierung« in Kapitel 11. Standardmäßig ist dies das Verzeichnis / usr/local/samba/lib/codepages. --with-configdir=Verzeichnis Gibt das Verzeichnis an, in dem Samba seine Konfigurationsdatei, normalerweise smb.conf genannt, ablegt. Standardmäßig ist dies das Verzeichnis /usr/local/samba/ lib. --with-dce-dfs Fügt Unterstützung für das Distributed Computing Environment Distributed Filesystem (DCE/DFS) hinzu. Dies ist ein verteiltes Dateisystem, das in einigen UnixVarianten enthalten ist. Es ist nicht identisch mit dem Distributed Filesystem (Dfs) von Microsoft. --with-fhs Beachtet beim Suchen von Dateien den Filesystem Hierarchy Standard. Näheres finden Sie unter http://www.pathname.com/ fhs. --with-included-popt Fügt Sambas eigene Unterstützung für das Parsen von Kommandozeilen-Optionen hinzu, anstatt die C-Bibliotheksfunktion popt( ) des lokalen Systems zu verwenden. --with-krb4=Basisverzeichnis Fügt Unterstützung für Kerberos Version 4.0 hinzu, indem das Basisverzeichnis der Kerberos-Distribution angegeben wird. Kerberos ist ein am MIT entwickeltes
Authentifizierungsprotokoll, das Kryptographie mit privaten Schlüsseln verwendet, um eine starke Sicherheit zwischen Knoten zu erreichen. Diese Version ist nicht identisch mit Microsofts Adaption von Kerberos in Active Directory, die im Zusammenhang mit Samba bevorzugt eingesetzt wird. Diese Option gibt es nur in Samba-Versionen vor 3.0. --with-krb5=Basisverzeichnis Fügt Unterstützung für Kerberos Version 5.0 hinzu, indem das Basisverzeichnis der Kerberos-Distribution angegeben wird. Diese Version von Kerberos ist kompatibel zur Kerberos-Authentifizierung in Microsofts Active Directory, das in Windows 2000 und Windows XP verwendet wird. --with-ldapsam Fügt Unterstützung für den Einsatz von LDAP an Stelle der smbpasswd-Datei hinzu, um das Samba-Äquivalent der Windows NT SAMDatenbank zu verwalten. Diese Option ist erforderlich, um die Parameter ldap admin dn, ldap filter, ldap port, ldap server, ldap ssl und ldap suffix in der SambaKonfigurationsdatei verwenden zu können. Die Option --with-ldapsam muss nur in Samba-Versionen vor 3.0 angegeben werden. --with-libiconv=Verzeichnis Legt einen Ablageort für die Unterstützung von iconv( ) fest. Die Funktion iconv( ) existiert in der C-Bibliothek, um die Konvertierung zwischen unterschiedlichen Zeichensätzen durchzuführen. Diese Option erlaubt es, Sambas Standardmethode bei der Feststellung des Ablageorts der iconv( )-
Bibliothek außer Kraft zu setzen. Üblicherweise wird bei der Konfiguration in der C-Bibliothek des Systems nach Unterstützung gesucht. Fehlt diese Unterstützung, wird Code verwendet, der im Samba-Quellbaum enthalten ist. Mit Hilfe von --with-libiconv ist es möglich, explizit anzugeben, wo sich die Unterstützung befindet. Die Include-Dateien werden in Verzeichnis/include vermutet und die Bibliotheksdateien in Verzeichnis/lib. Diese Option ist neu in Samba 3.0. --with-libsmbclient Erlaubt Anwendungen außerhalb der SambaSuite den Zugriff auf Samba-Funktionen. Wenn --with-libsmbclient angegeben ist, wird die Bibliothek während der Kompilierung erstellt. --with-lockdir=Verzeichnis Gibt das Verzeichnis an, in dem Samba Sperrdateien ablegt. Standardmäßig ist dies das Verzeichnis /usr/local/samba/var/locks. --with-logfilebase=Verzeichnis Gibt das Verzeichnis an, in dem Samba Protokolldateien für die Daemons smbd, nmbd und winbindd ablegt. Standardmäßig ist dies das Verzeichnis /usr/local/samba/ var. --with-manpages-langs=Sprache Beginnend mit Samba 3.0, gibt es die Manpages von Samba in verschiedenen Sprachen. Vorgabe ist en für Englisch. Die Sprache kann mit ja für Japanisch oder pl für Polnisch angegeben werden. --with-msdfs
Fügt Unterstützung für Microsofts Distributed Filesystem (Dfs) hinzu. Nähere Informationen über diese Funktion erhalten Sie in Kapitel 8. Das Festlegen dieser Option ist nur in SambaVersionen vor 3.0 notwendig. --with-nisplus-home Fügt Unterstützung hinzu, um den NIS+Server zu finden, der das Home-Verzeichnis eines bestimmten Benutzers bedient, und den Client anzuweisen, mit diesem eine Verbindung aufzunehmen. Benutzen Sie -with-automount zusammen mit dieser Option. --with-nisplussam Fügt Unterstützung für die Integration von NIS + in das Samba-Äquivalent der Windows NTKennwortdatenbank hinzu. --with-pam Wenn diese Konfigurationsoption angegeben und der Parameter obey pam restrictions in der Samba-Konfigurationsdatei auf yes gesetzt ist, wird die PAM-Konfiguration bezüglich der Zugangs- und Sitzungsverwaltung befolgt. Kommen verschlüsselte Kennwörter zum Einsatz, verwendet Samba die smbpasswd-Datei für die Authentifizierung und umgeht das PAMSubsystem. Diese Option funktioniert daher nur dann, wenn encrypt passwords auf no gesetzt ist. --with-pam_smbpass Wenn diese Option angegeben ist, wird bei der Kompilierung ein PAM-Modul namens pam_smbpass.so erzeugt und im Verzeichnis source/bin abgelegt. Dieses Modul erlaubt es
Anwendungen außerhalb der Samba-Suite, Benutzer mit Hilfe von Sambas smbpasswdDatei zu authentifizieren. Nähere Informationen finden Sie in der README-Datei im Verzeichnis source/pam_smbpass der Samba-Distribution und in der Datei PAMAuthentication-And-Samba.html im Verzeichnis docs/html. --with-piddir=Verzeichnis Gibt das Verzeichnis an, in dem Samba Dateien wie Suchlisten, WINS-Daten und PIDDateien zum Überwachen der Prozess-IDs der Samba-Daemons ablegt. Vorgabe ist /usr/ local/samba/var/locks. --with-privatedir=Verzeichnis Gibt das Verzeichnis an, in dem Samba die Dateien smbpasswd, secrets.tdb und ähnliche Dateien für die Authentifizierung ablegt. Vorgabe ist /usr/local/samba/private. --with-profiling-data Fügt Unterstützung für die Analyse der Ausführungszeiten des internen Codes von Samba hinzu. Dies wird normalerweise nur von den Samba-Entwicklern verwendet. --with-quotas Fügt Unterstützung für Festplatten-Quotas hinzu. Diese Option wird von den SambaEntwicklern als experimentell bezeichnet. --with-readline=Verzeichnis Gibt einen Ablageort für readline( )Unterstützung an. Die Funktion readline( ) existiert in der C-Bibliothek und dient dazu, eine Zeile mit Eingaben von einem interaktiven Benutzer anzunehmen. Außerdem
liefert sie Unterstützung für die Bearbeitenund History-Funktionen. Samba verwendet diese Funktionen in smbclient und rpcclient. Diese Option erlaubt es, Sambas Standardmethode bei der Feststellung des Ablageorts der readline( )-Bibliothek außer Kraft zu setzen. Üblicherweise wird bei der Konfiguration in der C-Bibliothek des Systems nach Unterstützung gesucht. Fehlt diese Unterstützung, wird Code verwendet, der im Samba-Quellbaum enthalten ist. Mit Hilfe von --with-readline ist es möglich, explizit das Verzeichnis anzugeben, in dem sich die Bibliothek befindet, in der readline( ) enthalten ist. --with-sendfile-support Prüft, ob das Betriebssystem des SambaHosts den Systemaufruf sendfile( ) unterstützt, der die Datenübertragung beschleunigt, indem die Daten direkt in den und aus dem Kernel-Puffer kopiert werden. Dadurch wird das Kopieren von den Puffern in den Benutzerraum vermieden. Enthält das Betriebssystem den Systemaufruf sendfile( ), wird in Samba die Unterstützung für die Konfigurationsoption use sendfile aufgenommen. Dies ist eine experimentelle Option, die es seit Samba 2.2.5 gibt. --with-smbmount Muss angegeben werden, falls Sie in Ihrem Unix-Dateisystem SMB-Freigaben mit Hilfe des smbfs-Dateisystems und des Befehls smbmount mounten wollen, wie in Kapitel 5 vorgestellt. Momentan funktioniert dies nur unter Linux.
--with-smbwrapper Benutzen Sie diese Option, um die smbwrapper-Bibliothek aufzunehmen und damit smbsh zu verwenden, um von Unix aus auf SMB-Freigaben zuzugreifen (siehe Kapitel 5). --with-spinlocks Verwendet Spinlocks an Stelle der normalen Methode zum Sperren von Dateien mittels der C-Bibliotheksfunktion fcntl( ). Der Einsatz dieser Option führt zu einer SambaInstallation, die bedeutend mehr CPU-Zeit auf dem Host-System beansprucht. Verwenden Sie sie nur, wenn es sich nicht umgehen lässt. --with-ssl Fügt Unterstützung für das Ausführen von Samba mit SSL-Verschlüsselung hinzu. Diese wenig benutzte Funktion wurde für Samba 3.0 fallengelassen. Sie funktioniert noch bei Samba 2.2.x und älteren Versionen; ein besserer Weg besteht aber darin, ein Virtuelles Privates Netzwerk (VPN) zu verwenden. --with-sslinc=Verzeichnis Gibt den Ablageort der SSL-Include-Dateien an. Standardmäßig ist dies das Verzeichnis / usr/local/ssl/include. Diese Option gibt es in Versionen vor Samba 3.0. --with-ssllib=Verzeichnis Gibt den Ablageort der SSL-Bibliotheken an. Standardmäßig ist dies das Verzeichnis /usr/ local/ssl/lib. Diese Option gibt es in Versionen vor Samba 3.0. --with-swatdir=Verzeichnis
Gibt an, wo die Dateien für SWAT installiert werden sollen. Standardmäßig ist dies das Verzeichnis /usr/local/samba/swat. --with-syslog Fügt Unterstützung für die Fehlerprotokollierung mittels syslog hinzu. Diese Option muss angegeben werden, damit die Parameter der Samba-Konfigurationsdatei syslog und syslog only funktionieren. Diese Option wird weitreichend unterstützt, funktioniert aber möglicherweise nicht auf allen Samba-Host-Systemen richtig. --with-tdbsam Fügt Unterstützung zum Ablegen des SambaÄquivalents der Windows NT SAM in einer .tdbDatenbank anstatt in der smbpasswd-Datei hinzu. Dies ist eine experimetelle Funktion. --with-utmp Fügt Unterstützung für das BenutzerAccounting in der utmp-Datei des Systems hinzu. Die Option ist notwendig, damit die Optionen utmp und utmp directory der Samba-Konfigurationsdatei funktionieren. Diese Option wird weitreichend unterstützt, funktioniert aber möglicherweise nicht auf allen Samba-Host-Systemen richtig. --with-winbind Fügt winbind-Unterstützung in Samba hinzu. Im Gegensatz zu den anderen Booleschen Optionen, die auf no gesetzt sind, ist --withwinbind bei Systemen, die winbindFunktionalität unterstützen, automatisch auf yes gesetzt. Sie müssen diese Option eigentlich nur benutzen, um sie zu
deaktivieren: # configure --without-winbind Damit wird die winbind-Funktionalität aus Samba entfernt, selbst wenn das lokale Betriebssystem es unterstützen kann. Nähere Informationen über winbind finden Sie in Kapitel 9.
Anhang F Samba unter Mac OS X Server betreiben Mac OS X Server ist ein Betriebssystem von Apple, das auf Mac OS X beruht, jedoch um administrative Werkzeuge und Server-Software erweitert wurde. Ein Bereich, in dem es sich von Mac OS X unterscheidet, ist die Konfiguration Samba-basierter Dienste. In diesem Anhang zeigen wir Ihnen, wie Sie SMB-Datei- und Druckerfreigaben einrichten, den Zugriff von Client-Benutzern aktivieren und die Aktivitäten überwachen. Wir konzentrieren uns dabei speziell auf Mac OS X Server 10.2.
Vorgehensweise beim Einrichten Zunächst einmal müssen wir anmerken, dass die in Kapitel 2 beschriebene Vorgehensweise, bei der die Systemeinstellungen verwendet werden, um Samba zu aktivieren, nicht für Mac OS X Server gilt. Im Gegensatz zu Mac OS X enthält das Sharing-Feld der Systemeinstellungen keine Option zum Einschalten von Windows File Sharing. Stattdessen gibt es eine Reihe von Anwendungen zum Konfigurieren, Aktivieren und Überwachen von Diensten: Arbeitsgruppen-Manager, Server-Einstellungen, Server-Status und Open Directory Assistant, alle zu finden im Verzeichnis /Programme/ Dienstprogramme.
Diese und andere Administrationsprogramme sind nicht nur unter Mac OS X Server installiert, sondern auch auf einer separaten Installations-CD-ROM enthalten, die mit dem Betriebssystem verkauft wird. Sie können verwendet werden, um Mac OS X Server-Systeme von jeder anderen Mac OS XMaschine aus zu verwalten.
Nähere Informationen finden Sie im Mac OS X Server Administrator's Guide, der als PDF-Datei im Verzeichnis /Library/Documentation/ MacOSXServer zu finden ist und auch von der Apple-Website unter http://www.apple.com/ server/ heruntergeladen werden kann. Um SMB-Datei- und Druckerfreigaben einzurichten, müssen Sie folgendermaßen vorgehen: 1. Festlegen der Netzwerkordner für das Freigeben von Dateien im Arbeitsgruppen-Manager. 2. Einrichten der Druckwarteschlangen in Server-Einstellungen für die Druckerfreigaben und Aktivieren des Druckdiensts. 3. Konfigurieren und Aktivieren der Windows-Dienste in ServerEinstellungen. 4. Aktivieren des Kennwort-Servers und Einstellen der SMBAuthentifizierung im Open Directory Assistant. 5. Aktivieren der Kennwort-Server-Authentifizierung für Benutzerzugänge im Arbeitsgruppen-Manager. 6. Überwachen der Datei- und Druckdienste mit Server-Status.
Freigeben von Dateien Der erste Schritt beim Aktivieren von SMB-Dateifreigaben besteht darin, einen oder mehrere Netzwerkordner festzulegen. Netzwerkordner sind Ordner, die die Wurzel der freigegebenen Volumes für die von Mac OS X Server unterstützten Protokolle bilden: Apple Filesharing Protocol (AFP), Network Filesystem (NFS), File Transfer Protocol (FTP) und SMB. Um einen Netzwerkordner zu bestimmen, starten Sie das Programm Arbeitsgruppen-Manager. Sie werden nach dem Hostnamen oder der IPAdresse des lokalen oder entfernten Servers sowie nach einem Benutzernamen und einem Kennwort gefragt. Dies ist bei allen administrativen Anwendungen unter Mac OS X Server erforderlich. Sobald der Arbeitsgruppen-Manager geöffnet ist, klicken Sie auf den Button Zugriff in der Symbolleiste. Die Liste auf der linken Seite unter dem Register Netzwerkordner zeigt die aktuell definierten Netzwerkordner. Um einen hinzuzufügen, klicken Sie auf das Register Alle und suchen den Ordner, den Sie freigeben wollen. Klicken Sie auf der rechten Seite unter dem Register Allgemein das Optionsfeld Dieses Objekt und seinen Inhalt freigeben an, ändern Sie bei Bedarf den Eigentümer und die Rechte und klicken Sie dann auf den Button Sichern. Wählen Sie als Nächstes unter dem Register Protokolle
den Punkt Windows-Datei-Server-Einstellungen aus dem Pop-up-Menü und prüfen Sie, ob das Optionsfeld Dieses Objekt über SMB gemeinsam nutzen aktiviert ist. An dieser Stelle können Sie entscheiden, ob ein Gastzugriff auf die Freigabe erlaubt sein soll. Sie können hier außerdem den Namen der Freigabe ändern, der SMB-Clients gezeigt wird, und die Rechte für Dateien und Ordner einstellen, die von SMB-Clients erzeugt werden. Klicken Sie auf den Button Sichern, wenn Sie mit den Änderungen fertig sind. Siehe Abbildung F-1. Abbildung F-1 Arbeitsgruppen-Manager: Netzwerkordner und Windows-Datei-ServerEinstellungen
Freigeben von Druckern Druckerfreigaben werden etwas anders eingerichtet. Starten Sie zuerst das Programm Server-Einstellungen. Wählen Sie unter dem Register File & Print erst Drucken, dann Print-Server konfigurieren... Klicken Sie das Optionsfeld Neue Wartelisten für Windowsdruckdienste freigeben an. Danach klicken Sie erneut auf das Symbol Drucken und anschließend auf Print Monitor anzeigen. Stellen Sie sicher, dass die Drucker, die Sie freigeben wollen, aufgeführt sind. Bei Druckern, die
direkt an den Server angeschlossen sind, sollten die Warteschlangen automatisch erzeugt worden sein, entfernte Drucker dagegen müssen Sie erst hinzufügen, indem Sie auf Neue Warteliste klicken und die Drucker suchen oder festlegen. Wenn Sie fertig sind, klicken Sie auf Sichern, wählen ein weiteres Mal das Drucken-Symbol aus und wählen dann Print-Server starten. Siehe Abbildung F-2. Abbildung F-2 Server-Einstellungen: Print-Server
Server-Einstellungen stellt lokale Drucker nur dann für die gemeinsame Nutzung zur Verfügung, wenn diese PostScript-kompatibel sind. Leider sind viele Drucker - einschließlich einfacher USBTintenstrahldrucker - dies nicht. Falls Sie einen dieser Drucker den SMB-Clients zur Verfügung stellen wollen, können Sie die Freigabe mit einem Texteditor selbst in die Datei /etc/smb.conf
eintragen. Hinweise und Warnungen bezüglich manuell vorgenommener Änderungen in smb.conf finden Sie im Abschnitt »Selbst ist der Mann (und die Frau)« weiter unten in diesem Anhang.
Konfigurieren und Aktivieren von Diensten An dieser Stelle stehen weder die Dateifreigaben noch die Druckerfreigaben den SMB-Clients zur Verfügung. Um sie zu aktivieren, klicken Sie zuerst auf das Symbol Windows im Programm ServerEinstellungen und anschließend auf Windows-Datei-Server konfigurieren... Unter dem Register Allgemein können Sie den NetBIOSHostnamen des Servers, die Arbeitsgruppe oder Windows NT-Domäne, in der sich der Server befindet, und die Beschreibung, die in einer Suchliste angezeigt wird, einstellen. Darüber hinaus können Sie die Codepage für einen alternativen Zeichensatz einstellen. Schließlich haben Sie noch die Möglichkeit, den Start von Samba beim Booten zu aktivieren. Siehe Abbildung F-3. Abbildung F-3 Server-Einstellungen: Windows-Datei-Server
Das Register Zugriff bietet Ihnen Optionen zum Aktivieren des Gastzugriffs und zum Beschränken der Anzahl der gleichzeitig möglichen Client-Verbindungen. Unter dem Register Protokoll können Sie die Ausführlichkeit der Protokollierung festlegen. Mit den Optionen
unter dem Register Netzwerkumgebung können Sie Ihre Maschine als WINS-Client oder -Server konfigurieren oder einstellen, dass sie lokal oder über Subnetzgrenzen hinweg Suchdienste anbietet.
Kennwort-Server Der Kennwort-Server ist eine Funktion, die mit Mac OS X Server 10.2 eingeführt wurde. In früheren Versionen von Mac OS X Server wurde die Windows-Authentifizierung mit dem Identifizierungs-Manager durchgeführt, der das Windows-Kennwort eines Benutzers in der Eigenschaft tim_password des NetInfo-Eintrags des Benutzers speichert. In Version 10.2 ist dies immer noch möglich, allerdings wird davon streng abgeraten, da das verschlüsselte Kennwort für andere Benutzer mit Zugriff auf die NetInfo-Domain sichtbar ist und potenziell entschlüsselt werden kann. Falls Sie den Identifizierungs-Manager benötigen, gehen Sie folgendermaßen vor, um ihn zu aktivieren: 1. Führen Sie auf jeder Maschine, die eine Domain beherbergt, die in die NetInfo-Hierarchie eingebunden ist, für jede einzelne Domain den Befehl tim -init -auto tag aus, wobei tag der Name der Domain-Datenbank ist. 2. Geben Sie bei der entsprechenden Aufforderung ein Kennwort an, das als Verschlüsselungsschlüssel für die Domain verwendet wird. Dieser Schlüssel wird benutzt, um die Windows-Kennwörter zu entschlüsseln, und liegt in einer verschlüsselten Datei, die nur durch root gelesen werden kann: /var/db/netinfo/.tag.tim. 3. Setzen Sie AUTHSERVER=-YES- in /etc/hostconfig. 4. Starten Sie den Identifizierungs-Manager, indem Sie tim aufrufen. Dies wird ebenfalls während des Bootens durch das AuthServer-Startobjekt ausgeführt. 5. Setzen Sie die Kennwörter aller Benutzer zurück, die SMBClient-Zugriff erfordern. Stellen Sie in Mac OS X Server 10.2 oder später sicher, dass für den Benutzer Einfache Identifizierung, nicht Authentifizierung über den Kennwort-Server eingestellt ist. Wenn Sie die Konfiguration der Windows-Dienste beendet haben, klicken Sie auf den Button Sichern, danach auf das Symbol Windows in Server-Einstellungen und wählen dann Windows-Datei-Server starten. Dies startet die Samba-Daemons und aktiviert den Zugriff von SMBClients.
Aktivieren des Kennwort-Servers Nachdem Sie nun die Datei- und Druckerfreigaben eingerichtet haben,
müssen Sie dafür sorgen, dass die Benutzer sich richtig authentifizieren können, um auf sie zuzugreifen. In Mac OS X Server wird dies mit dem Open Directory Kennwort-Server erreicht, einem Dienst, der auf dem Simple Authentication and Security Layer-Standard (SASL) beruht und mit vielen verschiedenen Authentifizierungsprotokollen verwendet werden kann, einschließlich den Protokollen LAN Manager und Windows NT LAN Manager (NTLM). Dieser Abschnitt beschreibt, wie die SMBClient-Authentifizierung unterstützt wird. Weitere Informationen darüber, was der Kennwort-Server tut und wie er funktioniert, finden Sie im Mac OS X Server Administrator's Guide. Um den Kennwort-Server zu aktivieren oder wenigstens seine Einstellungen zu überprüfen, starten Sie den Open Directory Assistant. Klicken Sie, falls Sie keine Einstellungen ändern wollen, einfach auf den Rechtspfeil in der unteren rechten Ecke des Fensters, bis Sie zum ersten Sicherheitsschritt kommen. An dieser Stelle aktivieren Sie den Kennwort-Server, indem Sie die Option Kennwörter und Identifizierungs-Informationen werden für andere Systeme bereitgestellt auswählen. Der nächste Schritt zeigt den Hauptadministratorzugang, und der übernächste bietet Ihnen eine Auswahl zu aktivierender Authentifizierungsprotokolle (siehe Abbildung F-4). Achten Sie darauf, dass SMB-NT angeklickt ist, und aktivieren Sie SMB-LAN Manager, falls Sie Windows 95/98/Me oder ältere Clients haben. Der letzte Schritt speichert die Kennwort-Server-Konfiguration und fordert Sie auf, den Rechner neu zu starten. Abbildung F-4 Die Kennwort-Server-Authentifizierungsprotokolle
Freigeben des Kennwort-Servers Um die Benutzung des Kennwort-Servers für einen Benutzerzugang freizugeben, starten Sie den Arbeitsgruppen-Manager und klicken auf den Accounts-Button in der Symbolleiste. Unter dem Register Benutzer auf der linken Seite (mit der Silhouette einer einzelnen Person) wählen Sie den Zugang, und unter dem Register Erweitert auf der rechten Seite wählen Sie Kennwort-Server für Benutzerkennwort: (siehe Abbildung F5). Sie werden aufgefordert, ein neues Kennwort einzugeben, das in der Password Server-Datenbank abgelegt wird. Nach dem Sichern der Zugangskonfiguration kann sich der Benutzer von einem SMB-Client authentifizieren und auf Freigaben zugreifen. Abbildung F-5 Arbeitsgruppen-Manager: Aktivieren der Kennwort-ServerAuthentifizierung
Überwachen von Diensten Wenn alles läuft, wollen Sie die Dinge sicher im Auge behalten. Das Programm Server-Status liefert Ihnen Darstellungen der verschiedenen von Mac OS X Server angebotenen Dienste. Für Windows-Server können Sie den aktuellen Zustand des Diensts betrachten, die Protokolle durchsuchen (die sich im Verzeichnis /Library/Logs/ WindowsServices befinden), einzelne Verbindungen anzeigen und beenden und eine Darstellung der Verbindungen über die Zeit anschauen (siehe Abbildung F-6). Ähnliche Informationen werden für den Print-Server angeboten. Abbildung F-6 Server-Status: Windows-Server
Einzelheiten der Konfiguration Unterhalb der grafischen Oberfläche laufen eine Menge Aktivitäten ab, um die Windows-Dienste anzubieten. In der Nicht-Server-Version von Mac OS X wird beim Auswählen von Windows File Sharing der Parameter SMBSERVER in /etc/hostconfig gesetzt und das SambaStartobjekt ausgelöst. Unter Mac OS X Server werden das SambaStartobjekt und der Parameter SMBSERVER normalerweise nicht benutzt. Stattdessen erzeugt ein Prozess namens sambadmind die /etc/smb.conf aus der Konfiguration, die in den Server-Einstellungen und dem Arbeitsgruppen-Manager angegeben ist, und erledigt das Starten und Neustarten der Samba-Daemons bei Bedarf. Der Prozess sambadmind wird wiederum durch watchdog überwacht. Dieses Programm beobachtet bestimmte Prozesse und startet Prozesse neu, die abgestürzt sind. Das Dienstprogramm watchdog wird in /etc/watchdog. conf, einer Datei ähnlich einer inittab unter System V, konfiguriert. Diese Datei legt fest, wie die unter der Aufsicht von watchdog stehenden Dienste behandelt werden. Die Zeile für sambadmind sieht beispielsweise so aus:
sambadmin:respawn:/usr/sbin/sambadmind -d daemon
# SMB Admin
Durch den Einsatz eines von watchdog-überwachten Prozesses wie sambadmind zum Start der Samba-Daemons an Stelle der einmaligen Ausführung eines Start-Objekts erhalten Sie einen zuverlässigeren Dienst. Wenn unter Mac OS X Server ein Samba-Daemon unerwartet seinen Dienst einstellt, wird er schnell neu gestartet. (Beispiele für andere Dienste, die von watchdog überwacht werden, sind KennwortServer, Print-Server und der Server-Einstellungen-Daemon, der eine entfernte Verwaltung erlaubt.) Abbildung F-7 NetInfo Manager: SMBServer-Eigenschaften
Es gibt noch einen weiteren Trick in Mac OS X Server: Die SambaKonfigurationseinstellungen werden nicht direkt nach /etc/smb.conf geschrieben, wie dies in der Nicht-Server-Version von Mac OS X der Fall ist. Stattdessen werden sie in der lokalen Open Directory-Domain des Servers abgelegt,1 aus der sambadmind sie bezieht und smb.conf neu erstellt. Die globalen Parameter von Samba werden zum Beispiel in / config/SMBServer gespeichert (siehe Abbildung F-7). NetzwerkordnerInformationen werden ebenfalls in Open Directory abgelegt, und zwar unter /config/SharePoints, während CUPS die Verantwortung für die Druckerkonfiguration in /etc/cups/printers.conf übernimmt (dabei werden auch Stub-Einträge erzeugt, die von Samba in /etc/printcap verwendet werden). Tabelle F-1 fasst die Verbindung der Windows-Server-Einstellungen im Programm Server-Einstellungen, der im Open Directory gespeicherten Eigenschaften und der Parameter in /etc/smb.conf zusammen.
Tabelle F-1 Samba-Konfigurationseinstellungen in Mac OS X Server Grafisches Element der ServerEinstellungen in Windows-Server
Open DirectoryEigenschaft in / config/SMBServer
Globaler SambaParameter in /etc/smb. conf
Allgemein ∅ Servername
netbios_name
netbios name
Allgemein ∅ Arbeitsgruppe
workgroup
workgroup
Allgemein ∅ Beschreibung
description
server string
Allgemein ∅ Code-Seite
code_page
client code page
Allgemein ∅ Windows Datei-Server beim Systemstart automatisch starten
auto_start
N/A
Zugriff ∅ Gastzugriff erlauben
guest_access, map_to_guest
map to guest
N/A
guest_account
guest account
Zugriff ∅ Höchstzahl angemeldeter Clients
max_connections
max smbd processes
Protokoll ∅ Details
logging
log level
Netzwerkumgebung ∅ WINS-Registrierung ∅ Aus
WINS_enabled, WINS_register
wins support
Netzwerkumgebung ∅ WINS-Registrierung ∅ WINS-Server aktivieren
WINS_enabled
wins support
Netzwerkumgebung ∅ WINS-Registrierung ∅ Bei WINS-Server anmelden
WINS_register, WINS_address
wins server
Netzwerkumgebung ∅ Arbeitsgruppen/ Domänen-Dienste ∅ Master-Browser
Local_Master
local master
Netzwerkumgebung ∅ Arbeitsgruppen/ Domänen-Dienste ∅ Domänen-Master-Browser
Domain_Master
domain master
Drucken ∅ Print-Server starten
printing
N/A
N/A
lprm_command
lprm command
N/A
lppause_command
lppause command
N/A
lpresume_command
lpresume command
N/A
printer_admin
printer admin
N/A
encryption
encrypt passwords
N/A
coding_system
coding system
N/A
log_dir
N/A
N/A
smb_log
log file
N/A
nmb_log
N/A
N/A
samba_sbindir
N/A
N/A
samba_bindir
N/A
N/A
samba_libdir
N/A
N/A
samba_lockdir
N/A
N/A
samba_vardir
N/A
N/A
stop_time
N/A
Selbst ist der Mann (und die Frau) Wenn Sie manuell Änderungen an der Samba-Konfigurationsdatei vornehmen, müssen Sie darauf achten, dass Sie mit dem folgenden Befehl Änderungen blockieren, die von grafischen Programmen initiiert werden: # chflags uchg /etc/smb.conf
Von diesem Moment an hilft Ihnen die grafische Oberfläche nur noch beim Starten, Stoppen und Überwachen des Diensts - nicht mehr beim Konfigurieren. Falls Sie Ihre eigene Version von Samba installieren, können Sie diese weiterhin vom Programm Server-Einstellungen aus verwalten, indem Sie einige der Open Directory-Eigenschaften in /config/SMBServer ändern. Öffnen Sie dazu den NetInfo Manager und verändern Sie die Eigenschaften samba_sbindir und samba_bindir entsprechend dem Ablageort Ihrer Samba-Installation. Optional können Sie samba_libdir, samba_vardir und samba_lockdir modifizieren. Angenommen, Sie haben eine Standard-Samba-Installation. Dann können Sie diese Werte mit den folgenden Befehlen auch auf der Kommandozeile ändern: # nicl . -create /config/SMBServer samba_sbindir /usr/local/ samba/bin
# nicl . -create /config/SMBServer samba_bindir /usr/local/ samba/bin # nicl . -create /config/SMBServer samba_libdir /usr/local/ samba/lib # nicl . -create /config/SMBServer samba_vardir /usr/local/ samba/var # nicl . -create /config/SMBServer samba_lockdir /usr/local/ samba/var/locks
Ihre Einstellungen überprüfen Sie mit diesem Befehl: # nicl . -read /config/SMBServer
Wählen Sie im Programm Server-Einstellungen den Punkt Windows Datei-Server stoppen. Führen Sie dann den folgenden Befehl aus: # killall sambadmind
Das Dienstprogramm watchdog startet innerhalb weniger Sekunden sambadmind neu. Gehen Sie schließlich zurück zu Server-Einstellungen und wählen Sie Windows Datei-Server starten. Falls Sie die Open Directory-Eigenschaften nicht an Ihre aktive SambaInstallation anpassen (weil Sie Ihre Konfiguration auf andere Weise verwalten wollen), dürfen Sie die Windows-Dienste niemals über das Programm Server-Einstellungen starten, da Sie ansonsten zwei Gruppen von Samba-Daemons erhalten, die gleichzeitig laufen. 1In
Versionen von Mac OS X vor 10.2 wurden Open DirectoryDomains als NetInfo-Domains bezeichnet. Der NetInfo Manager (zu finden in /Programme/Dienstprogramme) stellt eine grafische Schnittstelle zur Verfügung, um den Inhalt der Open DirectoryDatenbanken zu betrachten und zu modifizieren. Nähere Informationen finden Sie im Mac OS X Server Administrator's Guide sowie im Dokument Understanding and Using NetInfo, das von der Mac OS X Server-Ressourcenseite unter http://www.apple.com/ server/macosx/resources.html heruntergeladen werden kann.
Anhang G GNU Free Documentation License GNU Free Documentation License Version 1.2, November 2002 Copyright © 2000, 2001, 2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 021111307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/ or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or BackCover Texts, in the notice that says that the Document is released under this License. A FrontCover Text may be at most 5 words, and a Back-
Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, TEXinfo input format, LATEX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgments", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or
noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: FrontCover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim
copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using publicstandard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: 1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. 2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. 3. State on the Title page the name of the publisher of the Modified Version, as the publisher. 4. Preserve all the copyright notices of the Document. 5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. 6. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. 7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. 8. Include an unaltered copy of this License. 9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. 10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. 11. For any section Entitled "Acknowledgments" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgments and/ or dedications given therein.
12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. 13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. 14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. 15. Preserve any Warranty Disclaimers. If the Modified Version includes new frontmatter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties-for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one
entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same
adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included as an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also
include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.