![]()
von Richard Sharpe
In den Kapiteln 5, »Die Datei smb.conf: Samba mitteilen, was es tun soll«, und 6, »Sicherheitsmodi und Passwörter«, haben Sie sich das grundlegende Format für die Parameter in smb.conf, die Samba-Sicherheitsmodi und die Handhabung der Passwörter angesehen. Samba wurde entwickelt, um Dateien auf verschiedenen Rechnern gemeinsam nutzen zu können, und genau das ist es, was wir uns jetzt näher ansehen werden.
Die Freigabe von Dateien ermöglicht Ihnen, Dateien von verschiedenen Rechnern aus gemeinsam zu benutzen (siehe Abbildung 7.1). Normalerweise verfügt ein Datei-Server über mehr Festplattenspeicher als ein Client (Windows für Workgroups, Windows 95/98, Windows NT usw.). An den Server können auch die meisten Drucker angeschlossen sein, aber das Drucken wird im nächsten Kapitel ausführlich beschrieben.
Abb. 7.1: Ein Datei-Server, der Dateien und Drucker freigibt.
In diesem Kapitel führe ich Sie durch alle notwendigen Schritte, damit Sie Dateifreigaben auf einem Samba-Server einrichten können. Sie werden außerdem die meisten Freigabe- und globalen Parameter kennenlernen, die für die Freigabe von und den Zugriff auf Dateien relevant sind.
Wenn Sie meinen Ausführungen Schritt für Schritt folgen, sollten Sie sicherstellen, dass Ihre Clients keine verschlüsselten Passwörter benutzen, da diese zu unnötigen Komplikationen führen können. Weitere Informationen zur Deaktivierung verschlüsselter Passwörter auf Ihren Clients finden Sie in den Kapiteln 6 und 14, »Windows 9x und Windows NT«. Sie sollten sich über den Account boss in Ihren Client-Rechner einloggen. Ist Ihr Samba-Server der erste SMB-Server in Ihrem Netzwerk, erhalten Sie möglicherweise während des Einloggens eine Fehlermeldung, die besagt, dass Sie nicht über einen Logon-Server authentifiziert werden konnten. Ignorieren Sie diese Meldung fürs Erste.
Bevor Sie Dateien freigeben können, brauchen Sie eine funktionierende smb.conf-Datei, die Samba benutzen kann. In Kapitel 4, »Installation und Testen der Konfiguration», haben Sie sich eine smb.conf-Datei angesehen, hier werden Sie eine nun von Beginn an aufbauen.
Wie ich bereits erwähnt habe, hat die Datei smb.conf einen globalen und einen Freigabeabschnitt. Im Folgenden benutzen Sie den untenstehenden globalen Abschnitt und fügen Abschnitte für Dateifreigaben hinzu, während Sie verschiedene Methoden für die Kontrolle und Verwaltung von Dateifreigaben kennenlernen:
[global]Als Erstes sollten Sie bei dieser smb.conf-Datei bemerken, dass sie keine Freigaben definiert, aber trotzdem funktioniert. Wie auch schon in Kapitel 5 ist in dieser smb.conf-Datei die Arbeitsgruppe, der Samba angehört, FOWLPLAY und der NetBIOS-Name des Servers, EAGLE.
Wenn Sie diese smb.conf auf Ihrem Server installieren und Samba neu starten (Sie müssen sich als root in Ihren Samba-Server einloggen, um das zu tun), sollten Sie den neuen Server in der Netzwerkumgebung in Windows 9x oder Windows NT 4.0 (für Windows für Workgroups 3.11 benutzen Sie den Dateimanager und wählen Laufwerke, Netzlaufwerk verbinden) sehen können.

![]()
Wenn Sie Samba bereits benutzen, ersetzen Sie Ihre vorhandene smb.conf-Datei nicht einfach durch obiges Beispiel. Machen Sie zuerst eine Backup-Kopie.
![]()
Nachdem Sie Samba neu gestartet haben (siehe Kapitel 4 für Details darüber, wie Sie Samba auf verschiedenen Plattformen starten), sollten Sie unter Windows 9x oder Windows NT die Netzwerkumgebung sehen, wie sie in Abbildung 7.2 dargestellt ist.
Abb. 7.2: Netzwerkumgebung für die Arbeitsgruppe FOWLPLAY
Hier sehen Sie, dass Ihr Server als EAGLE auftaucht (so haben Sie ihn in smb.conf genannt) und dass es sich um einen Samba-2.0.0Beta4-Server handelt. Wenn Sie den Parameter netbios name aus der vorstehenden smb.conf entfernen, wird Ihr Server mit einem Namen angezeigt, der aus den ersten Bestandteilen seines DNS-Namens besteht. Dies ist möglicherweise das, was Sie wollen, aber es wird nicht zu den Beispielen in diesem Kapitel passen.
Wenn Sie jetzt auf den oben stehenden Server doppelklicken, wird das Fenster in Abbildung 7.3 geöffnet.
Abb. 7.3: Auflistung der Freigaben auf dem Dateiserver EAGLE
Damit wird bestätigt, dass Ihr Samba-Server keine Freigaben hat oder zumindest keine, die browsebar sind (dies werde ich später darstellen).
Ihr nächster Schritt besteht darin, eine Freigabe einzurichten und zu sehen, was sich ändert.
Um eine Freigabe einzurichten, müssen Sie Ihrer smb.conf-Datei im Definitionsbereich für Freigaben einen entsprechenden Abschnitt hinzufügen. Da Samba Verzeichnisse und die darin liegenden Dateien freigibt, sollten Sie zunächst ein entsprechendes Verzeichnis, das freigegeben werden soll, auf Ihrem Server suchen oder erstellen.
Hier erstelle ich ein Verzeichnis mit dem Namen /home/first-share und weise Samba an, es freizugeben:
mkdir /home/first-shareSie können natürlich auch einen anderen Namen benutzen, wenn Sie zu den abenteuerlustigen Menschen gehören, aber dann müssen Sie im Folgenden alle Pfadnamen entsprechend ändern, und die Beispiele in diesem Buch sehen möglicherweise anders aus als das, was Sie sehen.
Dann fügen Sie unserer oben stehenden smb.conf-Datei Folgendes hinzu:
[first-share]Nachdem Sie nun Ihrer smb.conf eine Freigabe hinzugefügt haben, starten Sie Samba neu. Sie sollten (nach einer Weile) die neue Freigabe in der Netzwerkumgebung sehen können, wie in Abbildung 7.4 dargestellt.
Abb. 7.4: Die Netzwerkumgebung zeigt Ihre erste Freigabe!
Großartig, nun können Sie eine Freigabe auf Ihrem Samba-Server sehen. Was können Sie noch tun? Nun, bevor Sie sich die Freigabe ansehen, sollten Sie erst einmal einige Dateien einfügen:
cat > /home/first-share/file-1.txt
![]()
Beachten Sie, dass Sie möglicherweise das todos-Utility nicht auf Ihrem Server haben. In diesem Fall sollten Sie sich eine Kopie besorgen oder das Perl-Skript (das sich auf der diesem Buch beiliegenden CD-ROM befindet) eingeben, da Sie es brauchen werden. Das Skript ist bei einigen Distributionen auch unter dem Namen u2dos oder ähnlich verfügbar.
![]()
Nachdem Sie einige Dateien in die Freigabe auf Ihrem Server gestellt haben, schauen Sie sich an, was Ihr Client Ihnen zeigt. Doppelklicken Sie auf first-share im Fenster Netzwerkumgebung, und Sie sehen Ihre Dateien, wie in Abbildung 7.5 dargestellt.
Abb. 7.5: Die ersten zwei Dateien in Ihrer Dateifreigabe
Sehen Sie sich nun die Dateien an. Wenn Sie auf file-1-txt doppelklicken, sollten Sie das in Abbildung 7.6 dargestellte Fenster sehen.
Abb. 7.6: file-1.txt enthält seltsame Zeichen
Schließen Sie dieses Fenster und doppelklicken Sie auf file-2.txt. Sie sollten genau das sehen, was in Abbildung 7.7 dargestellt ist.
Abb. 7.7: file-2.txt sieht normaler aus
Warum werden diese zwei Dateien so unterschiedlich im Editor dargestellt? Das Problem liegt in der unterschiedlichen Art und Weise begründet, in der Windows und Unix das Ende einer Zeile in Textdateien speichern. Unter Unix wird das Zeilenende durch das Zeilenvorschubzeichen (NL) gekennzeichnet (oktal 012, hex 0x0A), während unter Windows (und DOS) das Zeilenende durch ein Wagenrücklaufzeichen oder CR (oktal 015, hex 0x0C) gefolgt von einem Zeilenvorschubzeichen gekennzeichnet ist. Als Sie file-2.txt erstellten, haben Sie die Datei explizit in eine Textdatei im DOS-Format konvertiert (über todos), während file-2.txt als Textdatei im Unix-Format belassen wurde.
Obwohl der Zweck jeder Zeile, die Sie in der smb.conf eingefügt haben, offensichtlich sein mag, möchte ich dennoch jede einzeln darstellen und erklären.
Diese Zeile führt einen neuen Abschnitt für die Freigabe first-share ein. Jede Freigabe wird als neuer Abschnitt eingeführt, mit ihrem Namen in eckigen Klammern.
Diese Zeile bietet einen beschreibenden Kommentar für die Freigabe. Sie dient der Dokumentation der Freigabe in smb.conf und wird unter dem Begriff Kommentar in der Auflistung in der Netzwerkumgebung angezeigt.
Die Zeile teilt Samba mit, welchen Teil des Dateisystems es für Clients freigeben soll. Sie sollten immer ein vorhandenes Verzeichnis angeben oder eine Datei, die als symbolischer Link zu einem Verzeichnis dient (siehe nachfolgend).
Existiert das Verzeichnis nicht, können Windows-Clients seltsame Fehlermeldungen ausgeben, wenn sie versuchen, auf die Freigabe zuzugreifen. Ein Beispiel:
Zugriff auf \\EAGLE\first-share nicht möglich: Der Netzwerkname kann entweder auf dem laufenden Netzwerk nicht gefunden werden oder ist fehlerhaft.Streng genommen brauchen Sie diesen Eintrag nicht zu definieren, da die Standardeinstellung yes ist. Sie müssen die Einstellung nur dann ändern, wenn Sie nicht wollen, dass Clients bestimmte Freigaben sehen können.
Um die Auswirkung der Einstellung für browsable zu sehen, ändern Sie sie in Ihrer smb.conf auf
browsable = nound starten Samba neu. Gehen Sie dann zurück zur FOWLPLAY-Netzwerkumgebung und doppelklicken Sie auf den Server EAGLE. Können Sie nun die von Ihnen erzeugten Freigaben sehen, wenn sich das Fenster öffnet?
Sie haben nun eine Dateifreigabe eingerichtet und müssen Sie nutzbar machen. Browsen Sie z.B. die Dateifreigabe (nachdem Sie die Einstellung browsable in Ihrer smb.conf wieder aktiviert, Samba beendet und neu gestartet haben). Versuchen Sie dann, eine Datei in die Freigabe zu kopieren oder eine neue Datei bzw. ein neues Verzeichnis in der Freigabe zu erstellen. Wie Sie feststellen werden, ist dies nicht möglich. Sie werden nun untersuchen, warum das so ist und wie Sie dies ändern können.
Die Dateifreigabe eignet sich hervorragend für die gemeinsame Benutzung von Dateien, die von Benutzern mit ausreichenden Berechtigungen für das freigegebene Verzeichnis gestellt wurden, aber Client-Workstations können keine Dateien in der Freigabe erzeugen. Auch wenn Sie sich als root einloggen (der Superuser unter Unix), können Sie an diesem Punkt keine Dateien in der Freigabe erzeugen. Wie Sie bald sehen werden, ist die Freigabe standardmäßig nur mit Leseberechtigungen versehen.
Damit Clients auf die Dateifreigabe zugreifen können, müssen Sie Samba einige Dinge über die Dateifreigabe mitteilen. Zunächst sollten Sie jedoch einen Blick darauf werfen, wie Samba bestimmt, ob ein Client Zugriff auf Dateifreigaben erhält.
In Kapitel 2, »Windows-Netzwerke«, haben Sie sich die Art und Weise angesehen, in der ein CIFS/SMB-Client auf eine Ressource oder eine Dateifreigabe zugreift. Um Ihr Gedächtnis aufzufrischen, sind hier noch einmal die erforderlichen Schritte, obwohl einige davon ausgelassen werden können, aufgelistet:
Um die Verbindungsanfrage des Clients zu einer Freigabe weiterzuverarbeiten, bestimmt Samba zunächst, ob die verlangte Freigabe existiert. Der folgende einfache Ansatz überprüft, ob dies der Fall ist:
Danach durchläuft Samba die folgende Prozedur, um festzustellen, ob ein Client Zugriff auf die gefundene Freigabe erhält und als welcher Benutzer dieser Client zugreifen kann. Die Schritte werden nacheinander ausgeführt, und der Prozess wird mit dem ersten erfolgreichen Schritt beendet. Ist keiner der Schritte erfolgreich, wird der Zugriff zur Freigabe verweigert.
Handelt es sich bei der Freigabe jedoch um eine Guest-only-Freigabe, wird der Zugang zur Freigabe als im Gast-Account definierter Benutzername gewährt, ohne dass einer der vorstehenden Schritte durchlaufen wird. Jedes übertragene Passwort wird ignoriert.
Wenn der als zugreifender Benutzer gewählte Benutzer sich in einer ungültigen Benutzerliste befindet (die später in diesem Kapitel beschrieben wird), wird die Verbindungsanfrage an diesem Punkt abgewiesen.
Über diese Prozedur kann Samba feststellen, unter welchem Account der Zugriff auf Dateien in der Freigabe gewährt wird. Der Zugriff auf Freigaben und die erlaubten Zugriffsberechtigungen auf Dateien werden jedoch noch von mehreren Parametern in der Datei smb.conf kontrolliert.
Die folgenden Parameter sind auf die eine oder andere Weise relevant für den Zugriff auf Freigaben durch Clients. Die meisten Samba-Administratoren benutzen nicht viele dieser Parameter. Wie immer finden Sie die aktuelle Liste aller Parameter und die endgültige Darstellung ihrer Funktionen in den Manpages zu smb.conf für die aktuelle Version von Samba. Dort können Sie sich über den Befehl man smb.conf die Parameter genauer ansehen.
Dieser Freigabe-Parameter richtet die Benutzer ein, denen administrative Privilegien für die Freigabe gegeben werden. Wenn sie auf die Freigabe zugreifen, führen sie alle Dateioperationen als root aus.
Namen, die mit einem @ beginnen, werden zunächst als NIS-Netzgruppe interpretiert und dann, wenn sie nicht in NIS gefunden werden, als Unix-Gruppen. Namen, die mit einem + beginnen, werden als Unix-Gruppen und Namen, die mit & beginnen, als NIS-Gruppen interpretiert.
Dieser Parameter kann sehr gefährlich sein, da jeder Benutzer in der admin-users-Liste alles tun kann, was er will, z.B. auch alle Dateien in der Freigabe löschen.
Standardmäßig gibt es keine administrativen Benutzer für eine Freigabe. Ein Beispiel:
admin users = root, fredDiese Einstellung definiert root und fred als administrative Benutzer.
Über diesen globalen Parameter wird der Name der Standardfreigabe festgelegt. Diese Standardfreigabe wird benutzt, wenn die von einem Client verlangte Freigabe nicht gefunden werden kann, und ihr Name wird in diesem Fall in den entsprechenden verlangten Namen umgeändert.
Normalerweise werden für die Standardfreigabe die Parameter guest ok = yes und read only eingerichtet.
Dieser Parameter hat keinen Standardwert. Ein Beispiel:
default service = lastchanceMit dieser Einstellung wird lastchance zur Standardfreigabe.
Über diesen globalen Parameter wird der Name des Gast-Accounts definiert. Oft wird er auf pcguest eingestellt, und er muss in der auf dem Server benutzten Account-Datenbank eingetragen sein (z.B. der Datei /etc/passwd, NIS usw.). Normalerweise hat dieser Account kein gültiges Passwort, so dass sich niemand dort einloggen kann, weder von Unix noch von einem Client. Der Account kann nur benutzt werden, um den Zugriff auf Dateien zu kontrollieren.
Dieser Parameter kann im globalen Abschnitt und in einzelnen Freigabeabschnitten eingerichtet werden. Gast-Accounts, die in einem Freigabeabschnitt definiert sind, setzen globale Gast-Accounts außer Kraft.
Der Standardwert für diesen Parameter wird während der Kompilierung auf nobody gestellt. Ein Beispiel:
guest account = pcguestDamit wird der Account mit dem Namen pcguest als Gast-Account definiert.
Dieser Freigabe-Parameter bestimmt, ob der Zugriff zu einer Freigabe auch ohne Übertragung eines Benutzernamens und eines Passworts gewährt wird.
Wenn Clients einen Gastzugriff erhalten, greifen Sie auf die Dateien in der Freigabe als Gast-Account zu.
Ein Synonym für guest ok ist public.
Der Standardwert für diesen Parameter ist no. Ein Beispiel:
guest ok = yesDamit kann über den Guest-Account auf die Freigabe zugegriffen werden.
Dieser Freigabe-Parameter bestimmt, dass nur Gastverbindungen zu einer bestimmten Freigabe erlaubt sind. Er muss in Verbindung mit guest ok oder public benutzt werden.
Der Standardwert für diesen Parameter ist no. Ein Beispiel:
guest only = yesDamit wird festgelegt, dass auf diese Freigabe nur über den Guest-Account zugegriffen werden kann.
Dieser Parameter richtet die Liste der Hosts ein, die auf Freigaben zugreifen können. Wird er im Abschnitt [global] eingerichtet, bezieht er sich auf alle Freigaben, unabhängig von den Einstellungen für einzelne Freigaben. Wird der Parameter nicht im globalen Abschnitt verwendet, kann er für einzelne Freigaben definiert werden.
Hosts können über ihren Namen oder ihre IP-Adresse spezifiziert werden. Die vollständige Syntax für diesen Parameter ist die gleiche wie für die TCP-Wrappers-Datei hosts_allow. Weitere Details finden Sie in der Manpage (man hosts_allow).
Es gibt keinen Standardwert für diesen Parameter. Ein Beispiel:
hosts allow = 192.1.1. graham.goodies.comMit dieser Einstellung kann jeder Host im Subnetz 192.1.1.0/24 und das System mit dem Namen graham.goodies.com auf die Freigabe zugreifen.
Dieser Parameter ist die Umkehrung von hosts allow. Die für diesen Parameter aufgelisteten Hosts erhalten keinen Zugriff auf Freigaben, es sei denn, eine bestimmte Freigabe setzt die Liste mit einer eigenen Liste zugelassener Hosts außer Kraft. Gibt es Unstimmigkeiten zwischen den Parametern hosts deny und hosts allow, erhält hosts allow die Priorität.
Es gibt keinen Standardwert für diesen Parameter. Ein Beispiel:
hosts deny = 192.1.1. badhost.bad-company.comDiese Einstellung verweigert jedem Host im Subnetz 192.1.1.0/24 und dem Host badhost.bad-company.com den Zugriff auf die Freigabe.
Dieser Freigabe-Parameter spezifiziert eine Liste von Benutzern, die keinen Zugriff auf die Freigabe erhalten sollten. Der Parameter benutzt die gleiche Syntax wie der oben stehende Parameter admin users.
Es gibt keinen Standardwert für diesen Parameter. Ein Beispiel:
invalid users = root fred @binMit dieser Einstellung wird den Benutzern root und fred sowie jedem Benutzer in der Gruppe bin der Zugriff auf die Freigabe verweigert.
Mit diesem Freigabe-Parameter wird die maximale Anzahl der Clients festgelegt, die sich mit der Freigabe verbinden können. Ist der hier spezifizierte Wert größer als 0, werden nach Erreichen der angegebenen Anzahl von Benutzern, die sich mit der Freigabe verbunden haben, keine Clients mehr zugelassen. Fällt die Anzahl der verbundenen Benutzer unter die angegebene Zahl, können sich wieder neue Benutzer bis zum definierten Maximum verbinden. Wird der Wert des Parameters auf 0 gesetzt, gibt es keine Einschränkung für die Anzahl der zugelassenen Verbindungen.
Dieser Parameter kann die Arbeitslast auf einem Samba-Server beschränken und bietet außerdem eine Methode für die Durchsetzung der Lizenzierungsbestimmungen, wenn Sie lizenzierte Software freigeben. Beachten Sie, dass Sie die Anzahl der verbundenen Benutzer einschränken, nicht die Anzahl der aktiven Benutzer. Ein Benutzer, der sich zu Beginn des Tages mit der Freigabe verbindet und den ganzen Tag verbunden bleibt, ohne jemals etwas damit zu tun, belegt auch eine dieser maximalen Verbindungen.
Der Standardwert für diesen Parameter ist 0, der, wie vorher schon erwähnt, uneingeschränkte Verbindungen zur Freigabe ermöglicht. Ein Beispiel:
max connections = 100Mit dieser Einstellung werden nicht mehr als 100 Verbindungen zur Freigabe zugelassen.
Dieser Freigabe-Parameter definiert eine Liste von Benutzern, denen Nur-Lese-Zugriff auf die Freigabe gewährt wird. Das heißt, diese Benutzer erhalten keinen Schreibzugriff auf die Freigabe, auch wenn die Freigabe beschrieben werden kann.
Es gibt keinen Standardwert für diesen Parameter. Ein Beispiel:
read list = fred @guestsDiese Einstellung definiert, dass fred und alle Benutzer in der Gruppe guests Nur-Lese-Zugriff auf die Freigabe erhalten. Das heißt, sie können die Freigabe nicht beschreiben.
Dieser Freigabe-Parameter ist das Gegenteil des Parameters writable. Wird er aktiviert, können Clients keine Freigabe beschreiben.
Der Standardwert für diesen Parameter ist yes, d.h., die Freigabe ist im Nur-Lese-Modus. Wenn Sie für eine Freigabe hier keinen Wert definieren, kann sie nur gelesen werden. Ein Beispiel:
read only = noMit dieser Einstellung kann die Freigabe beschrieben werden. Den gleichen Effekt können Sie auch über den Parameter writable = yes erzielen.
Dieser Freigabe-Parameter listet die Benutzer auf, denen der Zugriff auf die Dateifreigabe gewährt wird. Er benutzt die gleiche Syntax wie der Parameter admin users.
Standardmäßig ist dieser Parameter leer, was bedeutet, dass jeder Benutzer auf die Freigabe zugreifen kann. Ein Beispiel:
valid users = fred @accountsMit dieser Einstellung sind der Benutzer fred und alle Benutzer in der Gruppe accounts die einzigen, die auf die Freigabe zugreifen können.
Dieser Freigabe-Parameter (und sein Synonym writeable, für die, die Probleme mit der Rechtschreibung haben) zeigt an, ob Clients die Freigabe beschreiben können. Siehe auch read only.
Der Standardwert für diesen Parameter ist no, d.h. standardmäßig ist eine Freigabe also nur lesbar. Beispiele für die Benutzung des Parameters sind:
writable = yesAlle diese Einstellungen führen dazu, dass jeder die Freigabe beschreiben kann, der die Berechtigungen hat, Dateien und Verzeichnisse in der Freigabe zu beschreiben.
Dieser Freigabe-Parameter definiert eine Liste von Benutzern, die Schreib-/Lese-Zugriff auf eine Freigabe haben, unabhängig vom Wert des Parameters read only.
Ist ein Benutzer sowohl in der read-list als auch in der write-list, wird ihm Schreibzugriff gewährt.
Standardmäßig hat dieser Parameter keinen Wert, was bedeutet, dass für alle Benutzer der Wert des Parameters read only gilt. Ein Beispiel:
write list = root @adminDiese Einstellung definiert, dass zumindest der Benutzer root und alle Benutzer in der Gruppe admin Schreibzugriff auf die Freigabe haben.
Nachdem Sie sich die für den Zugriff auf Freigaben relevanten Parameter angesehen haben, können Sie damit beginnen, die Probleme zu korrigieren, auf die Sie vorher in puncto Zugriff gestoßen sind, als Sie nicht in Ihre Freigabe first-share schreiben konnten.
Die Probleme liegen darin begründet, dass für eine Freigabe standardmäßig folgender Parameter eingerichtet ist:
writable = noUm sicherzustellen, dass weder Datei- noch Verzeichnisberechtigungen zu den Problemen führten, schauen Sie sich die Unix-Berechtigungen für das freigegebene Verzeichnis an und ändern Sie sie für jedermann zugänglich in RWX (0777 der Einfachheit halber) um. Wenn Sie Ihre umask nicht geändert haben, sieht /home/first-share auf Ihrem Samba-Server wie folgt aus:
ls -al /home/first-shareÄndern Sie die Berechtigungen für das Verzeichnis nun folgendermaßen auf 0777 um:
chmod 0777 /home/first-shareDamit sollte jeder Unix-Benutzer in das Verzeichnis schreiben können, da hiermit Benutzer-, Gruppen- und allgemeines Lese-, Schreib- und Ausführungsrecht eingerichtet wurde.
Wenn Sie aber nun versuchen, von Ihrem Client eine Datei in der Freigabe zu erstellen, erhalten Sie das, was Sie in Abbildung 7.8 sehen.
Abb. 7.8: Der Zugriff wird verweigert, obwohl das Verzeichnis schreib- und lesbar ist
Fügen Sie Ihrer Freigabe first-share Folgendes hinzu (und starten Sie Samba neu), damit Clients in die Freigabe schreiben können:
writable = yesVersuchen Sie es! Sie können jetzt Verzeichnisse und Dateien in der Freigabe erstellen, wie Sie in Abbildung 7.9 sehen.
Abb. 7.9: Kann die Freigabe beschrieben werden, können Sie darin Ordner erstellen
Auf dem Samba-Server sieht Ihr freigegebenes Verzeichnis nun so aus:
ls -al /home/first-shareDer von Ihnen erstellte Ordner Neuer Ordner wurde als Verzeichnis erzeugt, und zwar mit Ihnen als Besitzer und Ihrer Gruppe als Gruppenbesitzer. Aber dies ist nur möglich, weil Sie das Verzeichnis /home/first-share auf den Modus 0777 eingestellt haben, was relativ gefährlich ist.
Sie könnten viele der anderen Parameter einrichten, die für den Zugriff auf first-share relevant sind, darunter
Ihre Freigabe kann z.B. so aussehen:
[first-share]first-share wurde dahingehend geändert, dass boss, joe und jeder Benutzer in der Unix-Gruppe users auf die Freigabe zugreifen, aber nur boss und joe in die Freigabe schreiben können.
Sie sollten sich jetzt ansehen, wie Dateiberechtigungen von Samba gehandhabt werden, damit Sie verstehen können, wie Unix-Dateiberechtigungen mit Anfragen für das Lesen oder Beschreiben von Dateien zusammenspielen.
Wie Sie im vorherigen Abschnitt gesehen haben, führt Samba zuerst grobe Überprüfungen durch, z.B. zum Lese-, Schreib- oder benutzerbasierten Zugriff auf Freigaben. Wenn eine verlangte Operation, wie z.B. das Öffnen einer Datei zum Lesen oder Bearbeiten, diese Zugriffsüberprüfungen durchlaufen hat, muss sie immer noch den normalen Beschränkungen des Betriebssystems für Dateien und Verzeichnisse entsprechen. Diese basieren auf dem Benutzer, den Samba als den zugreifenden Benutzer auf die Dateifreigabe definiert hat.
Das heißt, dass normale Unix-Berechtigungen für alle Dateioperationen gelten, nachdem Samba die Zugriffsberechtigung erteilt hat.
Erinnern Sie sich daran, dass Sie vorher die Dateien file-1.txt und file-2.txt im Editor öffnen konnten. Dies liegt daran, dass sie allgemein lesbar sind und daher jeder auf sie zugreifen kann. Hier ist noch einmal eine detaillierte Auflistung des Freigabeverzeichnisses:
ls -al /home/first-shareWie Sie sehen können, haben die Dateien file-1.txt und file-2.txt den Status 0644, das heißt, sie sind nicht gruppen- oder allgemein beschreibbar. Wenn Sie versuchen, diese Dateien von einem Client zu ändern, werden Sie keinen Erfolg haben. Öffnen Sie eine der Dateien im Editor und versuchen Sie, sie zu ändern. Wann erhalten Sie eine Fehlermeldung? Sie sollten dann eine erhalten, wenn Sie versuchen, Ihre Änderungen zu speichern. Irgendwann gibt der Editor die Fehlermeldung aus, die Sie in Abbildung 7.10 sehen.
Abb. 7.10: Der Editor kann file-1.txt nicht speichern
Diese Fehlermeldung liegt in der Art und Weise begründet, wie der Editor versucht, die Datei zu speichern. Er versucht, die Datei file-1.txt in der Dateifreigabe zu erzeugen, aber da diese Datei bereits existiert und Sie keine Berechtigung haben, die Datei zu bearbeiten, wird die Operation nicht ausgeführt.
Würden Sie versuchen, die Datei unter einem Namen zu speichern, der noch nicht in dem Verzeichnis (oder der Freigabe, die Begriffe sind aus Sicht desjenigen, der Samba verwaltet, austauschbar) existiert, wäre der Editor bereit und würde eine neue Datei erstellen.
Was Sie hier sehen, ist Folgendes: Nach allen Zugriffskontrollen, die Samba durchführt, überprüft es außerdem die normalen Berechtigungen für das Dateisystem, die der Benutzer (den Samba als mit der Dateifreigabe verbunden ansieht) für die Dateien in der Freigabe hat!
Wenn Sie keine Leseberechtigungen für die Verzeichnisse haben, werden Sie auch ihre Inhalte nicht betrachten können, obwohl Sie die Verzeichnisse selbst sehen können. Normalerweise erhalten Sie Meldungen mit dem Inhalt »Zugriff verweigert«, wenn Sie versuchen, durch solche Verzeichnisse zu browsen.
Nun, wenn Dateien und Verzeichnisse in einer Samba-Freigabe erzeugt werden, wer besitzt sie und welche Berechtigungen werden ihnen vererbt? Schauen Sie sich noch einmal das lange Listing für das Verzeichnis first-share an und werfen Sie einen Blick auf den Eintrag für den Ordner Neuer Ordner.
Hier noch einmal der Eintrag:
drwxr-xr-x 2 boss boss 1024 Jan 6 01:09 Neuer OrdnerSie sind der Besitzer des Verzeichnisses, das sich in Ihrer primären Gruppe befindet und das Dateirecht 0755 hat.
Lassen Sie uns nun einen kurzen Blick auf Unix-Dateirechte werfen, da Samba Nummern wie 0755 benutzen möchte, wie Sie vorher gesehen haben. Nachfolgend zeige ich Ihnen, was sie bedeuten und wie Sie sie konstruieren können.
Jede Datei in einem Unix-Dateisystem hat einen Besitzer, eine Gruppenzugehörigkeit und Dateirechte (manchmal auch Berechtigungen genannt), die aus vier Teilen bestehen:
Ein Dateirecht wird normalerweise durch die drei Buchstaben RWX und den Bindestrich (-) dargestellt. RWX heißt Lesen, Schreiben und Ausführen, während R-X Lesen und Ausführen bedeutet. Um ein Dateirecht zu ändern, drücken Sie es als eine Serie von 12 Bits oktal aus. Daher wird das Recht einer Datei als vier oktale Ziffern dargestellt, wobei die erste Ziffer auf folgende Art codiert ist:
4=SETUID, 2=SETGID, 1=T oder STICKY Bit
Die verbleibenden drei Ziffern (die eigentlichen Berechtigungsbits) werden auf folgende Weise codiert:
4 = Lesen, 2 = Schreiben, 1 = Ausführen
Wenn Sie ein bestimmtes Recht für eine Datei konstruieren wollen, addieren Sie einfach die Codierungen für die von Ihnen gewünschten Berechtigungen. RWX summiert sich also oktal zu 7, RW- zu 6, R-X zu 5 usw.
Ein Dateirecht von 1755 heißt also:
Abschließend möchte ich noch erwähnen, dass eine Dateiberechtigung von 0755 von ls -al als RWXR-XR-X ausgegeben wird.
Samba handhabt die Erstellungsberechtigungen für Dateien und Verzeichnisse separat. Sie können eine ganze Reihe von Parametern einrichten, um sowohl die Eigentumsverhältnisse als auch die Berechtigungen für erstellte Dateien und Verzeichnisse zu kontrollieren.
Die folgenden Abschnitte listen viele der Freigabe-Parameter auf, die für die Berechtigungen und Eigentumsverhältnisse der von Samba erstellten Dateien und Verzeichnisse relevant sind. Wie immer finden Sie eine komplette Auflistung der Parameter und ihre aktuellen Funktionen in den Manpages zur smb.conf der aktuellen Samba-Version.
Diese Freigabe-Parameter sind synonym und kontrollieren die Berechtigungen, die bei der Erstellung von Dateien vergeben werden. Der gegebene Wert ist eine Bitmaske, die mit der aus dem verlangten DOS-Attrribut kalkulierten Unix-Maske verglichen wird.
Jedes nicht eingestellte Bit der Maske wird bei Erstellung der Datei aus den Berechtigungen für die Datei entfernt.
Standardmäßig hat die Erstellungsmaske einen Wert von 0744, der festlegt, dass der Besitzer für neue Dateien RWX-Berechtigungen erhält, während Mitglieder der Besitzergruppe und alle anderen Benutzer nur die Berechtigungen R-- erhalten.
Ein Beispiel:
create mask = 0755Diese Einstellung definiert, dass der Besitzer RWX-Berechtigungen hat, Mitglieder der Besitzergruppe R-X-Berechtigungen und alle anderen Benutzer R-X-Berechtigungen erhalten.
directory mask, directory mode
Diese Freigabe-Parameter sind synonym und kontrollieren die Berechtigungen, die während der Erstellung von Verzeichnissen vergeben werden. Der gegebene Wert ist eine Bitmaske, die mit der Unix-Maske verglichen und aus dem verlangten DOS-Atrribut kalkuliert wird.
Jedes nicht eingestellte Bit in der Maske wird aus den Berechtigungen für die Datei entfernt, wenn es erstellt wird.
Standardmäßig hat die Verzeichnismaske einen Wert von 0755. Ein Beispiel:
directory mask = 0744Diese Einstellung definiert, dass der Besitzer RWX-Berechtigungen hat, Mitglieder der Besitzergruppe und alle anderen Benutzer nur die Berechtigungen R-- erhalten.

![]()
Das Ausführungsbit hat eine spezielle Bedeutung für Verzeichnisse. Es ermöglicht einem Benutzer, in dieses Verzeichnis zu wechseln. Wenn also Benutzer keinen X-Zugriff auf ein Verzeichnis haben, können sie Dateien in dem Verzeichnis öffnen, wenn sie Lesezugriff auf die Dateien haben, aber sie können nicht in das Verzeichnis wechseln. Aufgrund der Art und Weise jedoch, wie Samba und Windows das Browsing von Ordnern handhaben, spielt das X-Bit für den Zugriff von Windows aus keine Rolle.
![]()
Über diesen Freigabe-Parameter können Sie bestimmte Berechtigungsbits erzwingen, wenn Dateien in einer Freigabe erstellt werden. Dies können Sie tun, indem Sie ein bitweises or der hier spezifizierten Bits mit den Bits durchführen, die von create mask berechnet werden. Beachten Sie, dass damit der Paramter force create mode den Parameter create mask außer Kraft setzt.
Der Standardwert für diesen Paramter ist 0000, was heißt, dass keine zusätzlichen Berechtigungsbits in den Parameter create mask/mode gezwungen werden. Ein Beispiel:
force create mode = 0755Mit dieser Einstellung haben die erstellten Dateien eine Berechtigung von mindestens 0755 (oder RWXR-XR-X).
Über diesen Freigabe-Parameter können Sie bestimmte Berechtigungsbits erzwingen, wenn Verzeichnisse in einer Freigabe erstellt werden. Dies können Sie tun, indem Sie ein bitweises or der hier spezifizierten Bits mit den Bits durchführen, die von create mask berechnet werden. Beachten Sie, dass damit der Paramter force directory mode den Parameter directory mask außer Kraft setzt.
Der Standardwert für diesen Paramter ist 0000, was heißt, dass keine zusätzlichen Berechtigungsbits in den Parameter directory mask/mode gezwungen werden. Ein Beispiel:
force directory mode = 0755Mit dieser Einstellung haben die erstellten Verzeichnisse eine Berechtigung von mindestens 0755 (oder RWXR-XR-X).
Dieser Freigabe-Parameter spezifiziert einen Unix-Gruppennamen, der als Standard-Primärgruppe für alle Benutzer verwendet wird, die auf die Freigabe zugreifen.
Standardmäßig hat dieser Parameter keinen Wert, was bedeutet, dass alle neuen Dateien und Verzeichnisse über die Anwendung der normalen Unix-Regeln einen Gruppenbesitzer erhalten (ist das SETGID-Bit auf das Vaterverzeichnis eingestellt, wird die Gruppe dieses Verzeichnisses benutzt, sonst die primäre Gruppe des Erstellers).
Ein Beispiel:
force group = usersMit dieser Einstellung werden alle neuen Dateien in der Freigabe mit einem Gruppenbesitzer von users erstellt.
Dieser Freigabe-Parameter spezifiziert einen Unix-Benutzernamen, der als Standardbenutzer für alle Benutzer verwendet wird, die auf die Freigabe zugreifen.
Standardmäßig hat dieser Parameter keinen Wert, was bedeutet, dass alle neuen Dateien in der Freigabe dem Unix-Benutzer gehören, der als mit der Freigabe verbunden angesehen wird (siehe den Abschnitt »Zugriffsrechte« vorher in diesem Kapitel). Ein Beispiel:
force user = bossDiese Einstellung bedeutet, dass alle neue Dateien in der Freigabe Eigentum von boss sind.
Sie haben nun viele der Parameter kennengelernt, die für die Erstellung von Dateien und den Zugriff auf Dateien in Samba relevant sind. Wie können Sie diese anwenden? Hier sind einige Beispiele.
Wenn Sie wollen, dass alle Dateien, die in einem bestimmten Verzeichnis erstellt werden, einer bestimmten Gruppe gehören, benutzen Sie den Parameter force group. Wollen Sie z.B., dass alle Dateien und Verzeichnisse, die in einer bestimmten Freigabe erzeugt werden, den Gruppen-Accounts gehören, verwenden Sie für die Freigabe den folgenden Parameter:
force group = accountsUm zu verhindern, dass alle Dateien und Verzeichnisse, die in einer bestimmten Freigabe erstellt werden, allgemein offene Berechtigungen haben (um vielleicht Unix-Benutzer daran zu hindern, auf die Dateien in der Freigabe zuzugreifen), benutzen Sie die folgenden Parameter für die Freigabe:
create mask = 0750Sie müssen beide Parameter definieren, da Samba die Erstellung von Dateien und Verzeichnissen separat handhabt.
Modifizieren Sie Ihre Freigabe first-share, um einige dieser Änderungen einzufügen:
[first-share]Nachdem Sie Ihre smb.conf modifiziert haben, um first-share mit den vorher beschriebenen Parametern zu ändern, starten Sie Samba neu und erstellen von einem Client die Datei new-file.txt und das Verzeichnis Neuer Ordner (2).
Wenn Sie sich das Freigabeverzeichnis komplett auflisten lassen, sollten Sie nun Folgendes sehen:
ls -al /home/first-shareBeachten Sie, dass die Datei new-file.txt und das Verzeichnis Neuer Ordner (2) beide den Gruppenbesitzer users und keine allgemeinen Berechtigungen haben.
Sie haben für das Verzeichnis /home/first-share die Berechtigungen 0777 eingerichtet, was sehr gefährlich ist. Eine bessere Methode, über die Sie Dateien in der Freigabe von Clients erstellen können, besteht darin, den Gruppenbesitzer des Verzeichnisses in eine Gruppe zu ändern, der Sie angehören.
Um dies zu tun, müssen Sie herausfinden, zu welchen Gruppen auf dem Unix-Rechner Sie gehören. Wenn Sie sich also als boss in Ihren Client eingeloggt haben, müssen Sie feststellen, welchen Gruppen boss angehört:
group bossÄndern Sie dann den Gruppenbesitzer des Verzeichnisses /home/first-share in eine dieser Gruppen. users ist eine gute Wahl, besonders wenn Sie planen, dass andere Leute auf die Dateien in der Freigabe zugreifen und sie gemeinsam benutzen sollen. Sie müssen außerdem das Gruppen-Schreibbit für das Verzeichnis einrichten.
Um diese Änderungen durchzuführen, benutzen Sie die folgenden Befehle:
chgrp users /home/first-shareWenn Sie sicherstellen wollen, dass diese Änderungen für alle Dateien und Verzeichnisse in der Freigabe gelten, fügen Sie den Befehlen chgrp und chmod den Parameter -R hinzu.
Befehle:
chgrp -R users /home/first-shareAll dies verdeutlicht einen sehr nützlichen Aspekt von Samba: Sie können die Dateien in Ihren Dateifreigaben von Unix aus verwalten. Das heißt, Sie können auf alle Standard-Unix-Funktionen zugreifen, darunter Skripting (auch Perl) und cron-Dateien.
In einem Studentenlabor z.B., in dem von den Studenten verlangt wird, dass sie ihre Laborarbeiten zu einem bestimmten Datum und einer bestimmten Zeit übermitteln (indem sie es in die Freigabe \\eagle\labwork kopieren), bewirkt das folgende Shell-Skript, dass
Dieses Shell-Skript ist nur ein Beispiel. In der Realität, in der Professoren oft mehrere Klassen haben usw., wären einige Änderungen nötig.
Jetzt, da Sie sich angesehen haben, wie Dateifreigaben eingerichtet werden, wie Sie den Zugriff auf diese Freigaben kontrollieren und wie Sie Zugriffsberechtigungen für Freigaben handhaben, ist es an der Zeit, einige spezielle Freigaben anzusehen, die Samba bietet.
Clients greifen gern auf ihre Home-Verzeichnisse zu, und wenn Samba das Home-Verzeichnis eines jeden Benutzers als separate Dateifreigabe darstellen müsste, hätten Administratoren ein schweres Leben. Stellen Sie sich vor, Sie müssten für jeden neuen Benutzer, den Sie dem System hinzufügen, einen Abschnitt in smb.conf einfügen und dann jedes Mal Samba neu starten.
Um das Leben all der überarbeiteten Administratoren etwas leichter zu gestalten, bietet Samba zwei spezielle Freigabeabschnitte: [homes] und [printers]. Ich werde den Abschnitt [printers] im nächsten Kapitel ausführlich darstellen. Die Details zum Abschnitt [homes] finden Sie nachfolgend.
Wenn ein Client eine Verbindung zu einer Dateifreigabe anfordert, werden die existierenden Dateifreigaben überprüft. Wird eine Entsprechung gefunden, wird diese Freigabe zur Verfügung gestellt. Wenn Samba aber keine Entsprechung findet, wird die angeforderte Freigabe als Benutzername behandelt und in der passwd gesucht. Existiert der Name und kann er authentifiziert werden, wird eine Freigabe durch Klonen der [homes]-Freigabe erstellt. Das heißt, dass die neue Freigabe die meisten der Parameter in der [homes]-Freigabe übernimmt.
Wenn die neue Freigabe erstellt wird, wird ihr Name in den Benutzernamen geändert und der Pfad der Freigabe auf das Home-Verzeichnis des Benutzers eingestellt, wenn kein solches im Abschnitt [homes] definiert ist.
Nachfolgend finden Sie ein Beispiel für eine [homes]-Freigabe in der smb.conf:
[homes]Das ist alles, was Sie brauchen, damit Clients auf das angeforderte Home-Verzeichnis zugreifen können. Fügen Sie die oben stehenden Einträge in Ihre smb.conf ein und starten Sie Samba neu. Sie sollten dann unter Windows die DOS-Eingabeaufforderung aufrufen und folgenden Befehl ausführen können:
net use h: \\EAGLE\homesDanach können Sie auf alle Dateien in Ihrem Home-Verzeichnis von Ihrem PC zugreifen.
Unix-Dateinamen und Windows-Dateinamen folgen verschiedenen Regeln.
Unix erlaubt fast jedes Zeichen in einem Dateinamen, außer dem Verzeichnistrennzeichen (/) und Escape, und unterscheidet in Namen zwischen großen und kleinen Buchstaben. Außerdem können Unix-Dateinamen sehr lang sein (bis zu 255 Zeichen). Auch Pfadnamen sind unter Unix oft bis zu 1.024 Zeichen lang.
DOS (6.22 und früher) dagegen hat die Einschränkung auf die 8.3-Namen, die nicht länger als acht Zeichen sein dürfen, mit einer Dateierweiterung, die aus nicht mehr als drei Zeichen bestehen darf. Außerdem benutzt DOS für Datei- und Verzeichnisnamen Großbuchstaben und beschränkt die Länge der Pfadnamen, die erheblich kürzer sind als die, die in Unix-Systemen erlaubt sind. Windows für Workgroups folgt den DOS-Beschränkungen.
Für Windows 95 (mit DOS 95) und Windows NT wurden viele dieser Einschränkungen aufgehoben, so dass Dateinamen länger als 11 Zeichen sein können und sowohl große als auch kleine Buchstaben in Dateinamen erlaubt sind. Aber auch Windows 95 und Windows NT haben Beschränkungen für die Länge von Datei- und Pfadnamen, die wesentlich kleiner sind als in Unix-Systemen. Windows 95 kürzt Dateinamen nach 127 Zeichen ab. Beträgt der komplette Pfadname mehr als 255 Zeichen (inklusive dem Server- und den Freigabenamen), weigert sich Windows 95, weitere Ordner oder Dateien zu erstellen. Windows NT unterliegt den gleichen Beschränkungen. Aber sowohl Windows 95 als auch Windows NT können mit längeren Datei- und Pfadnamen umgehen, wenn diese bereits in der Samba-Freigabe existieren (und vielleicht unter Unix erzeugt wurden).
Um für Kompatibilität mit älteren Clients (DOS, Windows für Workgroups, PATHWORKS usw.) und Anwendungen, die von 8.3-Dateinamen abhängen, zu sorgen, bietet Samba viele Freigabe-Parameter, die kontrollieren, wie Unix-Dateinamen und -Pfadnamen an Clients ausgegeben werden. Außerdem gibt es Parameter, die kontrollieren, wie die Groß-/Kleinschreibung beim Erzeugen neuer Dateien verwendet wird.
Samba bezeichnet diese Umsetzung der Dateinamen als Name Mangling und verwendet den folgenden allgemeinen Ansatz:
Nachfolgend finden Sie ein Beispiel für die Umsetzung von Namen, die von einem Windows-95-DOS-Rechner durchgeführt wurde, der Ihre Freigabe first-share auflistet, nachdem einige neue Dateien und Ordner hinzugefügt wurden. Die umgesetzten Namen sehen Sie auf der linken Seite und die vollständigen Namen auf der rechten.
E:\>dirStandardmäßig arbeitet Samba 2.0 wie ein Windows-NT-Server: D.h., es unterscheidet nicht zwischen Groß- und Kleinschreibung, behält aber die jeweilige Groß-/Kleinschreibung bei. Wenn Samba also Dateien öffnet, stellt es Dateinamen entsprechend in einer nicht groß-/kleinsensitiven Art und Weise dar, wenn es aber neue Dateien erstellt, behält Samba die Schreibweise bei, die der Client verwendet.
In den meisten Fällen sind die Standardeinstellungen von Samba genau richtig, aber Sie müssen möglicherweise einige dieser Einstellungen für spezielle Clients oder Anwendungen ändern.
Die folgenden Parameter sind für die Handhabung von Dateinamen relevant. Wie immer finden Sie eine vollständige Liste der Parameter und das letzte Wort zu ihren Funktionen in den Manpages zu smb.conf für die aktuelle Samba-Version.
Dieser Freigabe-Parameter kontrolliert, ob Unix-Namen, die nicht mit DOS-Namen kompatibel sind, in DOS-kompatible Namen umgesetzt werden sollen. Standardmäßig setzt Samba Namen für Clients um, die Nicht-DOS-Namen nicht handhaben können.
Der Standardwert für diesen Parameter ist yes. Standardmäßig werden also Nicht-DOS-Namen in ihre DOS-kompatiblen Entsprechungen umgesetzt.
Wenn Sie den Wert für diesen Parameter auf no setzen, werden die Namen nicht umgesetzt. Dann sehen DOS-Clients und DOS-Befehlsprompts den Dateinamen einfach abgeschnitten, wie es den normalen DOS-Regeln entspricht.
Dieser Freigabe-Parameter kontrolliert, ob Dateinamen umgesetzt werden, die nicht der Standardschreibweise (definiert über default case) entsprechen. Ist dieser Parameter aktiviert, werden Namen wie z.B. Mail in die Standardschreibweise umgesetzt.
Der Standardwert für diesen Parameter ist no. Damit wird definiert, dass Namen in gemischter Schreibweise nicht umgesetzt werden.
Dieser Freigabe-Parameter definiert das Zeichen, das Samba als Mangling-Zeichen verwendet, wenn es Namen umsetzt. Standardmäßig ist dies die Tilde (~).
Ein Beispiel:
mangle char = ^Mit dieser Einstellung benutzt Samba das (^) statt der Tilde.
Dieser Freigabe-Parameter bestimmt, ob Samba bei Dateinamen auf die Groß-/Kleinschreibung achten soll. Ist dieser Parameter auf no eingestellt, muss Samba eine nicht groß-/kleinsensitive Suche für alle Dateinamen durchführen, die von Clients übertragen werden.
Der Standardwert für diesen Parameter ist no.
Dieser Freigabe-Parameter kontrolliert die Standardschreibweise für neue Dateien und sollte in Kombination mit dem Parameter preserve case verwendet werden.
Die Standardschreibweise ist Kleinschreibung.
Dieser Freigabe-Parameter kontrolliert das Verhalten von Samba beim Erstellen neuer Dateien. Ist der Wert für diesen Parameter auf yes gesetzt, wird die Schreibweise benutzt, die der Client verwendet (auch gemischte Schreibweise), sonst wird die Schreibweise verwendet, die durch den Parameter default case definiert ist.
Standardmäßig wird die Schreibweise beibehalten.
Dieser Freigabe-Parameter kontrolliert das Verhalten von Samba beim Erstellen von Dateien mit DOS-kompatiblen Namen (d.h. 8.3-Namen in Großbuchstaben). Ist der Wert für diesen Parameter auf yes gesetzt, werden solche Dateien mit groß geschriebenen Namen erstellt, sonst wird die Schreibweise verwendet, die durch den Parameter default case definiert ist.
Dieser Parameter kann mit preserve case = yes verwendet werden, damit lange Dateinamen ihre Schreibweise beibehalten können, während kurze Namen klein geschrieben werden.
Der Standardwert für diesen Parameter ist yes.
Standardmäßig unterstützt Samba zwei verschiedene Arten von Datei-Locking, share modes und opportunistisches Locking, kurz oplocks.
share modes unterstützen die Standard-DOS/Windows-Zugriffsanfragen von DENY_DOS, DENY_ALL, DENY_READ, DENY_WRITE, DENY_NONE und DENY_FCB.
Unter den Unix-Versionen, die Shared Memory (gemeinsamen Speicher) unterstützen (die meisten Unix-Versionen), wird die Unterstützung für share modes unter Benutzung von Shared Memory implementiert, was sehr schnell ist. Wenn Ihre Unix-Version Shared Memory nicht unterstützt, wird die Unterstützung für share modes unter Benutzung von Lock-Dateien implementiert, was sehr langsam sein kann.
Wahrscheinlich müssen Sie share modes nicht deaktivieren. Sollte dies doch einmal der Fall sein, können Sie sie über den folgenden Befehl für jede einzelne Freigabe deaktivieren:
share modes = nooplocks sind eine Leistungserweiterung, die zusammen mit dem Windows-NT-Server eingeführt wurden. Sie ermöglichen einem Client, viele Dateioperationen zwischenzuspeichern, solange der Client der einzige ist, der auf eine bestimmte Datei zugreift. Öffnet ein anderer Client die gleiche Datei, muss der Server dem Client mit dem oplock einen oplock break schicken, sodass dieser Client das lokale Zwischenspeichern beendet.
Wenn Clients oplocks erhalten können, sind Leistungssteigerungen von 30 Prozent und mehr möglich, da Clients aggressive Zwischenspeicherungen von Dateioperationen durchführen können (inklusive Öffnen und Schließen und möglicherweise erneutes Ausführen einiger Operationen im Zwischenspeicher).
oplocks sind standardmäßig in Samba aktiviert. In einigen Fällen ist es möglich, dass Client-Programme bei aktivierten oplocks nicht richtig funktionieren, also wollen Sie sie möglicherweise deaktivieren. Dies können Sie über den oplocks-Befehl für einzelne Freigaben erreichen:
oplocks = falseSie können die oplocks für einzelne Dateien auch über den Parameter veto oplock files deaktivieren:
veto oplock files = /*.mbx/Der Vollständigkeit halber möchte ich noch erwähnen, dass SGIs Irix 6.5.2f jetzt oplock-Unterstützung auf Kernel-Ebene bietet, und Linux und BSD dies ebenfalls bald bieten werden. Samba kann Kernel-oplocks erkennen und sie benutzen, wenn sie verfügbar sind. So können oplocks unterbrochen werden, wann immer ein lokaler Unix-Prozess oder eine NFS-Operation auf eine Datei zugreift, die der smbd geschützt hat. Dies bietet größere Datenkonsistenz zwischen SMB, NFS und lokalen Dateizugriffen.
Obwohl Sie normalerweise den Parameter kernel nicht brauchen, können Sie oplocks auch folgendermaßen deaktivieren:
kernel oplocks = offStandardmäßig folgt Samba symbolischen Links im Unix-Dateisystem, die auf Dateien innerhalb des freigegebenen Verzeichnisses verweisen, nicht aber solchen zu Dateien/Verzeichnissen außerhalb dieses Verzeichnisses.
Zwei Freigabe-Parameter kontrollieren dieses Verhalten: follow symlinks und wide links.
Standardmäßig sind diese Parameter auf yes bzw. no gesetzt.
Wenn Sie follow symlinks auf no setzen werden keine symbolischen Links mehr verfolgt, was zu einer geringen Leistungsabnahme führt.
Die Einstellung wide links = yes führt dazu, dass auch Links außerhalb des freigegebenen Verzeichnisses verfolgt werden.
Ein Problem mit der Freigabe von CD-ROMs liegt darin, dass sie in das Dateisystem auf dem Samba-Server gemountet werden müssen. Wenn ein Benutzer die CD-ROM in einem CD-ROM-Laufwerk auswechselt und auf die neue CD zugreifen möchte, muss jemand oder etwas auf Ihrem Samba-Server eingreifen und die CD-ROM mounten. Wäre es nicht großartig, wenn die CD-ROM gemountet werden könnte, sobald der Client auf die CD-ROM-Freigabe zugreift?
Nun, Samba bietet eine solche Funktion mit den Befehlen preexec/postexec und root preexec/root postexec. Diese Parameter ermöglichen die Ausführung bestimmter Unix-Befehle, wenn ein Client sich mit einer Dateifreigabe verbindet bzw. wenn er die Verbindung zu einer Dateifreigabe beendet. Die Root-Version führt den Befehl einfach als root aus.
Eine CD-ROM-Freigabe könnte so aussehen:
[cdrom]Natürlich ist das tatsächlich benutzte Gerät (/dev/hdd) abhängig von Ihrem System (dieses gilt für ein Linux-System mit der CD-ROM am zweiten IDE-Controller als Slave-Gerät).
Mit einer solchen Freigabe können Benutzer die CD-ROM im CD-ROM-Laufwerk auf dem Server auswechseln und sie dann erneut mappen (z.B. mit net use /d v: und dann net use v: \\EAGLE\cdrom).
Die folgenden Parameter sind alle auf irgendeine Art und Weise relevant für die Freigabe von Dateien, passen aber nicht richtig in einen der vorher beschriebenen Absätze.
Dieser globale Parameter kontrolliert die maximale Anzahl offener Dateien, die ein smbd-Dateifreigabeprozess für einen Client geöffnet haben kann. Seit Samba 2.0.0 ist der Standardwert für diesen Parameter 10.000 Dateien, obwohl smbd dies auf einen sinnvolleren Wert setzt, wenn das Betriebssystem so viele offene Dateien nicht unterstützt. Unter Linux wird maxopenfiles also standardmäßig auf etwa 246 eingestellt.
In früheren Samba-Versionen war maxopenfiles ein Parameter, dessen Wert während der Kompilierung festgesetzt wurde.
Diese globalen Parameter weisen Samba an, den Standort von Home-Verzeichnissen über NIS zu holen. Sie werden in Situationen benutzt, in denen sich das Home-Verzeichnis eines Benutzers auf einem entfernten Rechner befindet und Samba über NFS auf dieses zugreifen würde.
Solange wie auf den tatsächlichen Home-Verzeichnis-Servern ebenfalls Samba läuft, kann ein Logon-Server die Heimatfreigabe so zurückgeben, dass sie sich auf einem anderen Server befindet. Dafür konsultiert er die NIS-Map, die über den Parameter homedir map definiert ist. Dies funktioniert nur, wenn es einen funktionierenden NIS-Server gibt und Samba als Logon-Server läuft.
Die Standardwerte für nis homedir und homedir map sind false bzw. auto.home.
Dieser globale Parameter ermöglicht es Ihnen, die OLE-Kompatibilität für Bereichslocks zu deaktivieren, die Samba bietet. Einige Unix-Lockmanager können abstürzen oder andere Probleme haben, wenn die OLE-Funktion von Samba aktiviert ist, daher wollen sie sie vielleicht deaktivieren.
Der Standardwert für diesen Parameter ist yes.
Dieser globale Parameter definiert, ob Samba abschließende Punkte (dots) von Unix-Dateinamen abschneidet. Einige CD-ROMs haben Dateinamen, die mit einem einzelnen Punkt enden.
Der Standardwert für diesen Parameter ist no.
In diesem Kapitel haben Sie die Freigabe von Dateien und viele der Parameter betrachtet, die kontrollieren, wie Dateifreigaben für Clients verfügbar gemacht werden. Sie haben ebenfalls gelernt, wie Dateien in diesen Dateifreigaben erstellt werden und wie auf sie zugegriffen werden kann. Außerdem haben Sie einen Blick auf fortschrittlichere Funktionen im Zusammenhang mit Dateifreigaben geworfen.
Dabei haben Sie sich detailliert die einzelnen Schritte angesehen, die Samba durchläuft, um festzulegen, ob eine Freigabe existiert, ob ein bestimmter Client auf eine verlangte Freigabe zugreifen und ob dieser Client Dateien in der verlangten Freigabe lesen oder beschreiben kann. Mit diesen Informationen können Sie jetzt viele Probleme in der Konfiguration von Samba meistern.
Im nächsten Kapitel werden Sie sich ansehen, wie Sie Druckerfreigaben einrichten, wie Sie Samba installieren, damit es die automatische Installation von Druckertreibern unter Windows 9x unterstützt, und wie Sie von Unix-Systemen aus zu Windows-Clients drucken, die mit Druckern verbunden sind.
Meine smb.conf-Datei enthält eine Dateifreigabe namens [docs]. In dieser Freigabe sollen die Autoren von Dokumenten ihre Dokumente speichern können. Der Gruppeneigentümer des Verzeichnisses ist docs, und alle Autoren sind Mitglieder dieser Gruppe. Die Berechtigungen für das Verzeichnis sind 0770, aber niemand kann in das Verzeichnis schreiben. Was habe ich falsch gemacht?
Haben Sie einen der folgenden Parameter in der Freigabe definiert?
Denken Sie daran, dass eine Freigabe standardmäßig mit Nur-Lese-Rechten besetzt ist und Sie das Schreibrecht erst aktivieren müssen, bevor jemand in sie schreiben kann, unabhängig von den Verzeichnis- oder Dateiberechtigungen in der Freigabe.
Ich habe eine neue Freigabe namens kits definiert, aber niemand kann sich mit ihr verbinden. Einige Benutzer erhalten die Fehlermeldung: »Das angegebene Freigabeverzeichnis kann nicht gefunden werden.« Andere bekommen ein Dialogfeld, das besagt: »Kann nicht auf \\server\kits zugreifen ...« Was könnte das Problem sein?
Überprüfen Sie die Pfadangabe in Ihrem Freigabeabschnitt für [kits]. Wenn der Pfad nicht existiert oder die Benutzer nicht darauf zugreifen dürfen, erhalten sie diese Art von Fehlermeldungen.
Wie klein kann ein [homes]-Abschnitt sein? Wenn die Freigabe nicht browsable ist, braucht sie doch eigentlich keinen Kommentar.
Sie müssen die Freigabe zum Beschreiben freigeben, damit Benutzer zumindest in ihre Home-Verzeichnisse schreiben können. Der kleinste [homes]-Abschnitt hat also zwei Zeilen, z.B.:
Wie würden Sie verhindern, dass Dateien, die in der [homes]-Freigabe erstellt werden, allgemein lesbar sind?
Hier müssen Sie die Parameter create mode und directory mode verwenden, um die korrekte Handhabung von Dateien und Verzeichnissen zu garantieren. Fügen Sie also einfach den folgenden Eintrag in Ihre [homes]-Freigabe ein:
Dies verhindert alle allgemeinen Berechtigungen.
Wie würden Sie sicherstellen, dass nur die Rechner A, B und C auf die Dateifreigabe [docs] zugreifen können?
Um sicherzustellen, dass nur die Rechner A, B und C auf eine Dateifreigabe zugreifen können, fügen Sie der Freigabe einfach eine hosts-allow-Aussage hinzu. Denken Sie daran, dass Sie Namen oder IP-Adressen, Netzgruppen usw. benutzen können. In Ihrem Fall fügen Sie also folgendes in die Freigabe [docs] ein:
![]()