Kapitel 7 Tanze Samba mit mir ... Mit dem Programmpaket Samba des Australiers ANDREW TRIDGELL kann ein beliebiger Unix-Rechner zu einem leistungsfähigen File- und Printserver für DOS- und Windows-Rechner ausgebaut werden. Seit Beginn der Entwick- lung 1991 hat sich Samba zu einem sehr stabilen und portablen Produkt ent- wickelt, das seinen festen Platz in Unternehmen eingenommen hat und dort als Ergänzung zu oder sogar als Ersatz für Novell NetWare- oder Windows NT-Servern eingesetzt wird. 7.1 Einführung Samba ist inzwischen ein sehr komplexes Produkt. An dieser Stelle kann daher keine vollständige Darstellung aller Möglichkeiten erfolgen, son- dern nur ein kleiner Einblick über die Funktionalität. Im Verzeichnis /usr/doc/packages/samba sind viele Dokumente zu finden, anhand derer man auch komplexe Netzkonfigurationen aufbauen kann. Die Referenz zur Konfigurationsdatei von Samba ist in der Manual-Page von smb.conf (man smb.conf) zu finden.1 Samba benutzt das SMB-Protokoll (Server Message Block) der Firma Micro- soft. Allerdings müssen alle Clients (z. B. Windows 95 / 98 oder NT Rech- ner) das TCP/IP-Protokoll aktiviert haben. Samba setzt das SMB- auf das TCP/IP-Protokoll auf. Bei allen Windowsrechnern mit einem Internetzugang ist TCP/IP bereits installiert. Mit dem SMB-Protokoll (engl. Server Message Block) werden in der Win- dows- und LAN Manager-Welt Datei- und Druckdienste bereitgestellt. Das SMB-Protokoll baut auf den NetBIOS-Diensten auf, und ist für den Datei- dienst somit mit NFS vergleichbar. Hierin unterscheidet SMB sich nicht von anderen Protokollen wie etwa dem NetWare Core Protocol. Microsoft hat im Gegensatz zu Novell die Spezifikation des SMB-Protokolls freigegeben, so- dass andere SMB ebenfalls unterstützen können. Für die Samba-Anbindung kann kein Installationssupport in Anspruch ge- nommen werden (vgl. Abschnitt H.1.2 auf Seite 548); wir sind aber gern bereit, im Rahmen des kostenpflichtigen Business-Supports zu helfen (vgl. Abschnitt H.3 auf Seite 551). 1 Vgl. [BD99], das bei SuSE PRESS erschienene Samba-Buch von Olaf Borkner-Delcarlo. 227 7. Tanze Samba mit mir ... NetBIOS NetBIOS ist eine Softwareschnittstelle (API), die zur Rechnerkommunika- tion entworfen wurde. Dabei wird ein Namensdienst (engl. name service) bereitgestellt, mit dem am Netz angeschlossene Rechner für sich Namen re- servieren können. Nach der Reservierung sind die Rechner dann unter diesen Namen ansprechbar. Für die Namensvergabe gibt es keine zentrale Instanz, die Rechte vergeben oder überprüfen könnte. Jeder Rechner am Netz kann beliebig Namen für sich reservieren, sofern ihm nicht andere zuvorgekom- men sind. Die NetBIOS-Schnittstelle kann nun auf unterschiedlichen Netzarchitekturen implementiert werden. Eine Implementation erfolgte relativ dicht" an der Netzwerkhardware und nennt sich NetBEUI. NetBEUI ist das, was häufig als NetBIOS bezeichnet wird. NetBEUI arbeitet zur Adressierung der einzelnen Pakete mit der in jedem Netzadapter eingetragenen Hardwareadresse. Diese ist im Gegensatz etwa zu IPX-Adressen oder IP-Adressen nicht so strukturiert, dass sich daraus Informationen für Routingzwecke gewinnen ließen. So ist es nicht möglich, NetBEUI-Pakete über Router zu übertragen, und ein Netz mit NetBEUI ist auf den Bereich beschränkt, der mit Repeatern oder Bridges erreicht werden kann. Weitere Netzwerkprotokolle, mit denen NetBIOS implementiert wurde, sind IPX von Novell und TCP/IP. Das Protokoll, mit dem NetBIOS auf TCP/IP aufgesetzt wurde, ist in den RFCs 1001 und 1002 beschrieben. RFC 1001 enthält darüber hinaus eine recht gute Einführung in die Konzepte von Net- BIOS, die beim Verständnis solcher Dienste wie WINS2 sehr hilfreich ist. Die NetBIOS-Namen, die auch bei der Implementation von NetBIOS mittels TCP/IP vergeben werden, haben zunächst einmal nichts mit den in der Da- tei /etc/hosts oder per DNS vergebenen Namen zu tun ­ NetBIOS ist ein vollständig eigener Namensraum. Es empfiehlt sich jedoch zwecks ver- einfachter Administration, zumindestens für die Server NetBIOS-Namen zu vergeben, die ihrem DNS-Hostnamen entsprechen. Samba tut dies als Vorein- stellung. Clients Bis auf DOS und Windows 3.1 unterstützen alle gängigen Betriebssysteme für PCs das SMB-Protokoll zum Ex- und Import von Plattenplatz. Windows for Workgroups 3.11 unterstützt SMB ebenfalls, jedoch in der Standardinstal- lation nur über IPX und NetBEUI. Um Samba, das SMB nur über TCP/IP an- bieten kann, benutzen zu können, muss man von Microsoft kostenlos erhältli- che Zusatzsoftware installieren. Für DOS und Windows 3.1 gibt es ebenfalls von Microsoft kostenlose Software, um Samba zu erreichen. Die Software ist von ftp://ftp.microsoft.com/bussys/Clients zu erhalten. SMB-Server stellen ihren Clients Plattenplatz in Form von so genannten Shares" zur Verfügung. Dabei umfasst ein Share ein Verzeichnis mit allen 2 WINS ist nichts anderes als ein erweiterter NetBIOS Name Server und keinesfalls eine Idee von Microsoft. Nur der Name ist neu. 228 7.2. Installation des Servers Unterverzeichnissen auf dem Server. Es wird unter einem Namen exportiert, und kann von Clients unter diesem Namen angesprochen werden. Dabei kann der Sharename frei vergeben werden. Er muss nicht dem Namen des expor- tierten Verzeichnisses entsprechen. Ebenso wird einem exportierten Drucker ein Name zugeordnet, unter dem Clients darauf zugreifen können. Zugriffsrechte Ein NFS-Server wird durch die Datei /etc/exports konfiguriert. Zu- gangsbeschränkungen sind ausschließlich rechnerbezogen möglich. In der Umgebung, für die NFS entworfen wurde, nämlich Unix-Workstations, macht dies auch Sinn, da die Clientsysteme selbst für die Authentifizierung der Be- nutzer ausgelegt sind. In Zeiten von DOS und Windows, in denen jeder Be- nutzer der Workstation root-Rechte besitzt, ist das NFS-Protokoll nicht mehr angemessen. Die vielfach eingesetzten NFS-Clients für DOS sind als riesige Sicherheitslücke anzusehen. Das SMB-Protokoll kommt aus der DOS-Welt, und berücksichtigt die Sicher- heitsproblematik direkt. Jeder Zugang zu einem Share kann mit einem Pass- wort geschützt werden. SMB kennt drei verschiedene Möglichkeiten, dies zu bewerkstelligen: * Share Level Security Bei der Share Level Security wird einem Share ein Passwort fest zuge- ordnet. Jeder, der dieses Passwort kennt, hat Zugriff auf das Share. * User Level Security Diese Variante führt das Konzept des Benutzers in SMB ein. Jeder Benut- zer muss sich bei einem Server mit einem Passwort anmelden. Nach der Anmeldung kann der Server dann abhängig vom Benutzernamen Zugang zu den einzelnen, exportierten Shares gewähren. * Server Level Security Samba behauptet gegenüber den Clients, im User Level Mode zu arbeiten. Allerdings übergibt es alle Passwortanfragen an einen anderen User Le- vel Mode Server, der die Authentifizierung übernimmt. Diese Einstellung erwartet einen weiteren Parameter (password server =). Die Unterscheidung zwischen Share, User und Server Level Security ist für den gesamten Server zu treffen. Es ist nicht möglich, einzelne Shares per Share Level Security und andere per User Level Security zu exportieren. Für weitere Infos zu diesem Thema lesen Sie bitte die Datei /usr/doc/ packages/samba/textdocs/security_level.txt. 7.2 Installation des Servers Durch das Setzen der Variablen auf den Wert yes in der Datei /etc/rc.config werden die SMB-Dienste gestartet (siehe Ab- schnitt 3.6.12 auf Seite 114). Praktisch alles, was in Samba konfiguriert werden kann, wird in der Datei /etc/smb.conf angegeben. Die Datei ähnelt vom Aufbau her den .INI- Dateien bei Windows. Sie ist in verschiedene Abschnitte aufgeteilt, die je- 229 7. Tanze Samba mit mir ... weils einige Parameter enthalten. Grundsätzlich wird durch einen Abschnitt ein Share beschrieben, dessen Name durch den Abschnittsnamen festgelegt wird. Zusätzlich dazu gibt es noch vier spezielle Abschnitte, [globals], [Beispiel], [cdrom] und [printers]. Im Abschnitt [globals] werden Parameter für Samba festgelegt, die sich nicht auf die Beschreibung einzelner Shares bezieht. Wenn der Abschnitt [Beispiel] angelegt wird, kann jeder Client ohne Passwortabfrage mit den Rechten des Users nobo- dy auf das Share [Beispiel] zugreifen. Gleiches gilt für den Abschnitt [printers], mit dem alle in der /etc/printcap definierten Drucker für Clients verfügbar gemacht werden, ohne dass sie einzeln aufgeführt wer- den müssen. smb.conf Eine ganz einfache Beispieldatei ist in Datei 7.2.1 zu sehen. Mit dieser /etc/smb.conf wird das Verzeichnis /home/beispiel al- len Benutzern und alle in der /etc/printcap aufgeführten Drucker für Clients zur Verfügung gestellt. * workgroup = arbeitsgruppe Wie jeder Windows-Rechner wird auch der Samba-Server einer Arbeits- gruppe zugeordnet, unter der er in der Netzwerkumgebung" erscheint. Arbeitsgruppe ist die Voreinstellung der deutschen Version von Win- dows for Workgroups. * guest account = nobody Samba benötigt einen in der /etc/password aufgeführten Benutzer, der keine oder minimale Rechte im Dateisystem hat für bestimmte Auf- gaben. Wenn öffentlich zugängliche Shares definiert werden (Parame- ter public = yes), werden alle Operationen unter dieser Benutzer- kennung durchgeführt. Auch wenn kein solches öffentliches Share defi- niert ist, muss der guest account definiert sein, da sonst der Samba- Rechner nicht in der Netzwerkumgebung erscheint. * keep alive = 30 Windows-Rechner tendieren dazu, hin und wieder abzustürzen. Wenn sie beim Absturz offene Verbindungen hinterlassen, kann es sein, dass der Server dies erst sehr viel später bemerkt. Damit Samba keine unnöti- gen Ressourcen auf dem Server verschwendet, kann es mit dem Parame- ter keep alive = 30 angewiesen werden, alle 30 Sekunden nachzu- schauen, ob der Client noch lebt. * os level = 2 Der Parameter os level = 2 legt fest, dass Samba für WfW und Win- dows 95 Browser-Dienste anbietet. Befindet sich ein Windows NT-Rech- ner im Netz, wird Samba diesen Dienst nicht anbieten, sondern den NT- Rechner selbst in Anspruch nehmen. * security = share Hierzu siehe den Abschnitt zu den Zugriffsrechten. Der Abschnitt [Beispiel] legt Parameter für das zu exportierende Ver- zeichnis fest. Dieses Verzeichnis ist von allen Benutzern im Netz ohne Pass- 230 7.2. Installation des Servers [global] workgroup = arbeitsgruppe guest account = nobody keep alive = 30 os level = 2 security = share printing = bsd printcap name = /etc/printcap load printers = yes [Beispiel] path = /home/beispiel comment = Beispielverzeichnis read only = no browseable = yes public = yes create mode = 0750 [cdrom] path = /cdrom comment = cdrom volume = "Das_CD_ROM_Label" read only = yes available = yes share modes = no browseable = yes public = yes [printers] comment = All Printers browseable = no printable = yes public = no read only = yes create mode = 0700 directory = /tmp Datei 7.2.1: Beispiel für eine Datei /etc/smb.conf 231 7. Tanze Samba mit mir ... wortabfrage erreichbar, da public = yes. Das gleiche gilt auch für das exportierte /cdrom (so lässt sich z. B. mit Samba eine lowcost Jukebox ein- richten). * path = /home/beispiel Mit path wird das Verzeichnis /home/beispiel exportiert. * comment = Beispiel Jedes Share kann bei SMB-Servern mit einem Kommentar versehen wer- den, der das Share näher kennzeichnet. * browsable = yes Diese Einstellung ermöglicht, dass das Share Beispiel in der Netz- werkumgebung sichtbar wird. * read only = no Samba verbietet in der Voreinstellung den Schreibzugriff auf exportier- te Shares. In dieser Konfiguration soll es aber erlaubt werden, daher read only = no. * create mode = 750 Windows-Rechner kennen das Konzept der Unix-Zugriffsrechte nicht. Daher können sie bei der Erstellung von Dateien auch nicht angeben, mit welchen Zugriffsrechten dies zu geschehen hat. Der Parameter create mode legt fest, mit welchen Zugriffsrechten Da- teien angelegt werden. * public = yes Der Gastzugang zu diesem Share wird erlaubt. Ein Passwort wird nicht abgefragt! Der Benutzer erscheint als User nobody. Für die einfache Administration des Sambaservers gibt es noch das Pro- gramm swat. Es stellt ein einfaches Webinterface zur Verfügung, mit dem Sie bequem den Sambaserver konfigurieren können. Infos zum Programm finden Sie unter /usr/doc/packages/samba/htmldocs/swat. 8.html oder in der Manual-Page von swat (man swat). 7.3 Installation der Clients Zunächst sei erwähnt, dass die Clients den Samba-Server nur über TCP/IP erreichen können. NetBEUI oder NetBIOS über IPX sind mit Samba momen- tan nicht verwendbar. Da TCP/IP überall, sogar bei Novell und Microsoft, auf dem Vormarsch ist, ist es auch fraglich, ob sich dies jemals ändern wird. Windows 95/98 Windows 95/98 bringt die Unterstützung für TCP/IP bereits mit. Wie bei Win- dows for Workgroups wird sie jedoch in der Standardinstallation nicht mit in- stalliert. Um TCP/IP nachzuinstallieren, wählt man im Netzwerk-Applet der Systemsteuerung `Hinzufügen...' unter `Protokolle' TCP/IP von Microsoft. Bitte achten Sie auf die korrekte Angabe Ihrer Netzwerkadresse und der Netzwerkmaske (vgl. Abschnitt 5 auf Seite 149)! Nach einem Neu- start des Windows Rechners können Sie den richtig konfigurierten Samba- 232 7.4. Optimierung server unter Netzwerk wiederfinden (Doppelklick auf das Icon Netzwerk auf Ihrem Desktop). Um einen Drucker auf dem Samba-Server zu nutzen, sollte man den allgemeinen oder den Apple-PostScript-Druckertreiber von der jeweili- gen Windows-Version installieren; am besten verbindet man dann mit der Linux-Drucker-Queue, die die automatische apsfilter-Erkennung beinhal- tet. 7.4 Optimierung An dieser Stelle sei noch einmal darauf verwiesen, dass die hier vorgestellte Konfiguration für den privaten Benutzer und nicht für Businesslösungen ge- eignet ist. Unser Business-Support hilft Ihnen bei Fragen zu diesem Thema gerne weiter (vgl. Abschnitt H.3 auf Seite 551). Die Standardkonfiguration in /etc/smb.conf ist sehr langsam. Hier sind ein paar Optimierungsvorschläge. * socket options = TCP_NODELAY Das TCP/IP Protokoll versucht immer mehrere kleine Datenblöcke zu- sammenzufassen. Da Samba mit vielen dieser kleinen Datenblöcken ar- beitet ist es allerdings in der Praxis ratsam dieses Verhalten mit der Option socket options = TCP_NODELAY abzuschalten. * oplocks = yes Mit dieser Option werden Schreibzugriffe auf geänderte Dateien erst dann ausgeführt, wenn ein weiterer Client die gleiche Datei lesen möchte. Es verhält sich also wie ein Schreibcache. * write raw = yes Raw write erlaubt es 65535 Bytes in jedem Datenpaket zu senden und kann unter Umständen einen signifikanten Performanceboost geben. Bei billigen Netzwerkkarten kann es allerdings teilweise besser sein diese Option auf write raw = no zu setzten. * read raw = yes Wirkt wie write raw = yes aber ist für das Lesen der Daten zustän- dig. Weitere Hilfe und viele Tipps zur Optimierung finden Sie in den Da- teien /usr/doc/packages/samba/textdocs/Speed.txt und /usr/doc/packages/samba/textdocs/Speed2.txt. 233 7. Tanze Samba mit mir ... 234