Kapitel 12

SAMBA – die Windows-Connection

IN DIESEM KAPITEL

  • Samba installieren
  • Samba als Workgroup-Server
  • Domain

Das SMB-Protokoll (Server Message Block) hatte seinen Anfang in einem Microsoft Dateiserver, der in einem lokalen Netzwerk PCs unter MS-DOS ein virtuelles gemeinsames Laufwerk bescherte. In den alten Windows-Versionen konnte man ein Verzeichnis ad hoc freigeben und jeder im lokalen Netzwerk konnte die Dateien darauf nutzen.

Schon vor Linux wurde SAMBA als quelloffene Komponente entwickelt, um die UNIX-Variante SunOS über das SMB mit MS-DOS oder Windows zu koppeln. Insbesondere mit dem Aufkommen von Linux wurde SAMBA sehr beliebt. Es ersetzte kostenlos eine teure Windows-Server-Lizenz.

Da das Protokoll ursprünglich für Windows erstellt wurde, hält es sich nicht an die Standards von POSIX. So unterscheiden sich die Dateikonventionen. Beispielsweise ignoriert Windows die Groß- und Kleinschreibung. Und auch die Rechtelage der Dateien erweist sich manchmal als etwas knifflig.

Laboreinstellungen

Für die Experimente mit Samba benötigen Sie einen Server und einen Client. In einem normalen LAN ist das mit zwei Computern realisierbar. Soll der Samba-Server dann auf längere Sicht produktiv eingesetzt werden, ist es sinnvoll, ihm eine feste IP-Adresse (siehe Kapitel 8) und vielleicht sogar einen festen lokalen Namen per DNS (siehe Kapitel 8) zuzuordnen.

Wenn Sie den Server in einem virtuellen Labor wie in Kapitel 19 austesten wollen, reicht für die ersten Tests eine normale virtuelle Maschine. In diesem Fall installieren Sie darauf den Samba-Server und testen die Fähigkeiten über localhost, also auf der lokalen Maschine, aus.

Wollen Sie den Server von Clients aus Ihrem lokalen Netzwerk aus ansprechen, können Sie in den Netzwerkeinstellungen Ihres SAMBA-Servers den Netzwerkadapter auf »Netzwerkbrücke« umstellen. Damit ist diese VM von allen Computern aus dem lokalen Netzwerk erreichbar.

Wenn die Ansprüche größer werden oder in Ihrem Netzwerk sensible Server laufen, kann es sinnvoll sein, eine VM zu starten, die einen Router realisiert, wie in Kapitel 20 beschrieben, und den Server und die Clients in einem internen Netzwerk zu starten. Damit kommen alle Computer ins Internet, aber lokale Änderungen haben keinen Einfluss auf Ihr Netzwerk.

Falls Sie Server und Client als Klon von derselben Maschine erzeugen, achten Sie darauf, dass diese unterschiedliche MAC-Adressen haben. Klicken Sie dazu die VM mit der rechten Maustaste an und wählen Sie dann:

ÄNDERN | NETZWERK | Adapter auswählen | ERWEITERT aufklappen | MAC-ADRESSE

Alle MAC-Adressen innerhalb des virtuellen LANs müssen sich unterscheiden. Im Zweifelsfall ändern Sie die MAC-Adresse leicht ab, sodass sie sich unterscheiden.

Installation

Sie können Samba durch Installation des gleichnamigen Pakets aus dem Repository installieren.

# apt update
# apt install samba

Die Konfiguration erfolgt in der Datei /etc/samba/smb.conf. Bei der Installation wird bereits eine solche Konfiguration beigelegt, die ausgiebig kommentiert ist und damit den Server gut dokumentiert. Leider ist sie in ihrer Größe etwas unübersichtlich. Aus diesem Grund ist es klug, diese zu kopieren und eine neue eigene Konfigurationsdatei zu erstellen. Eine sehr ausführliche Beschreibung aller Parameter der Konfigurationsdatei finden Sie auf der Manpage von smb.conf:

$ man smb.conf

Pfad und Benutzer

Sie benötigen natürlich den Pfad, um alle Dateien zu speichern, die anderen zur Verfügung stehen sollen. Serverdaten gehören klassischerweise in das Verzeichnis /var. Für Samba könnte man also ein Verzeichnis /var/samba anlegen und darunter wiederum den Platz für alle möglichen Freigaben.

Ein wichtiges Thema sind die Benutzer. Ressourcen, die über das Netzwerk angeboten werden, sollten vor unberechtigten Zugriffen geschützt sein. Samba verwendet eine eigene Benutzerliste, deren Benutzer aber immer mit einem Linux-Benutzer korrespondieren muss.

Eine einfache Freigabe

Unser erster Server soll die Familienfotos aufnehmen, die ansonsten auf irgendwelchen Fotoapparaten, Smartphones oder externen Festplatten herumfliegen. Darum soll eine Freigabe namens foto definiert werden. Alle Familienmitglieder sollen gleichberechtigt darauf schreiben und lesen dürfen.

Platz für Dateien

Um ein oder mehrere Verzeichnisse für andere Netzwerkteilnehmer freizugeben, müssen sie auf dem lokalen Computer natürlich erst einmal existieren. Wir erzeugen ein Verzeichnis /var/samba und für die Freigabe foto auch ein entsprechendes Verzeichnis.

# mkdir /var/samba
# mkdir /var/samba/foto
# chmod -R 777 /var/samba

Die Verzeichnisse wurden damit angelegt und für alle Benutzer zum Lesen, Schreiben und Betreten freigegeben.

Die zentrale Konfiguration: /etc/samba/smb.conf

Das Verzeichnis /var/samba/foto soll allen Netzwerkteilnehmern zur Verfügung stehen. Das muss Samba erst gesagt werden. Alle Informationen für den Samba-Server werden in der Datei /etc/samba/smb.conf gespeichert. Da die Originaldatei wertvolle Informationen enthält, wird sie zur Seite geschoben und eine neue Datei angelegt.

# cd /etc/samba
# mv smb.conf bak.smb.conf
# vi smb.conf

Nun sind Sie im Editor. Statt vi können Sie natürlich auch nano verwenden, wenn Ihnen dieser leichter fällt. Hier geben Sie die Einstellungen für den Samba-Server und seine Freigaben ein.

Serverkonfiguration

Die Konfiguration wird in mehrere Abschnitte untergliedert. Die Abschnittsbezeichner werden in eckige Klammern eingeschlossen.

Der wichtigste Abschnitt heißt global. Er beschreibt den Server als solchen. Für den ersten Server benötigen wir keine Besonderheiten. Die Vorgaben decken unseren Bedarf. Weitere Abschnitte definieren Ressourcen, die der Server dem Netzwerk zur Verfügung stellt. In diesem Fall ist es die Freigabe foto.

[global]
[foto]
path = /var/samba/foto
writeable = yes

  • path: Hier wird der Pfad zu den Dateien angegeben, die freigegeben werden sollen.
  • writeable: Die Freigabe soll von jedem verändert werden können. Diese Option ist austauschbar mit  read only, allerdings umgekehrt. read only=true entspricht writeable=no.

Testen der Konfigurationsdatei

Die Konfiguration kann durch den Befehl testparm getestet werden. Dadurch werden syntaktische Fehler erkannt, bevor der Server gestartet wird.

# testparm -s
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed

Server role: ROLE_STANDALONE

# Global parameters
[global]
idmap config * : backend = tdb


[foto]
path = /var/samba/foto
read only = No

Sie sehen hier einige Optionen, die vom System vorgegeben wurden. Manchmal fehlen auch Optionen, wenn diese den Standardwerten entsprechen.

Nachdem der Prüfbericht gut ausgefallen ist, kann Samba neu gestartet werden. Der Dienst heißt smbd für »SMB-Dämon«. Immer wenn die Konfiguration geändert wurde, sollten Sie den Befehl geben.

# systemctl restart smbd

Ein Dämon ist die klassische Bezeichnung für Dienste, insbesondere Serverdienste. Die Idee dahinter war, dass ein Dämon normalerweise schläft. Durch eine Anforderung wird er geweckt, wird aktiv und wenn es nichts mehr zu tun gibt, legt er sich wieder schlafen.

Benutzer

Für den Zugriff auf die Freigaben muss sich der Benutzer ausweisen. Das wird üblicherweise über Benutzerkennung und Passwort erledigt. Als Basis für einen Samba-Benutzer benötigen Sie zuerst einmal einen Benutzer des Linux-Servers. Der wird wie üblich mit dem Befehl adduser angelegt.

# adduser johanna

Es wird zwei Mal nach dem Passwort gefragt. Anschließend noch ein paar Eingaben wie Telefonnummer oder Büro, die ignoriert werden können. Nach einer kurzen Nachfrage ist der Linux-Benutzer johanna angelegt.

Damit johanna per Samba auf die Fotos zugreifen kann, muss sie zusätzlich zum Samba-Benutzer werden. Dazu befördert sie der Befehl smbpasswd.

# smbpasswd -a johanna
New SMB password:
Retype new SMB password:
Added user johanna.
#

Auch hier wird ein Passwort doppelt eingefordert. Die Passwörter von Linux und Samba werden unterschiedlich gespeichert, was es für den Benutzer nicht unbedingt einfacher macht.

Der Administrator nutzt smbpasswd, um SAMBA-Benutzer anzulegen, zu sperren, zu löschen oder ihre Passwörter zu ändern. Der Anwender kann zwar ebenfalls smbpasswd aufrufen, allerdings nur, um sein eigenes Passwort zu ändern. Er kann seinen eigenen Account weder löschen noch deaktivieren.

Option

Wirkung

-a

Legt ein neues SAMBA-Konto an.

-x

Löscht ein bestehendes SAMBA-Konto.

-d

Sperrt einen Benutzer.

-e

Hebt die Benutzersperre wieder auf.

Tabelle 12.1: Einige Optionen von smbpasswd

Zugriff vom Client

Nachdem die Prozesse gestartet worden sind, können sie getestet werden. Dazu gibt es vielfältige Methoden.

Ein Konsolen-Client

Das Programm smbclient ist sicher nicht besonders komfortabel, eignet sich aber prima, um den Server zu testen. Dieses Programm ist unter Debian nicht im SAMBA-Paket enthalten, sondern muss explizit installiert werden.

# apt install smbclient

Nun können Sie auf der lokalen Maschine den SMB-Client aufrufen. Mit der Option -U geben Sie den Benutzernamen an. Hinter der Option -L geben Sie an, welchen Server Sie betrachten wollen. Das Programm fragt nach einem Passwort. Hier muss das Passwort von johanna eingegeben werden.

$ smbclient -U johanna -L localhost
Password for [WORKGROUP\johanna]:

Sharename Type Comment
--------- ---- -------
foto Disk
IPC$ IPC IPC Service (Samba 4.15.9-Ubuntu)
SMB1 disabled -- no workgroup available

Wenn Sie auf einen anderen PC wechseln, können Sie den gleichen Befehl absetzen, müssen hinter der Option -L natürlich die Adresse des Samba-Servers angeben. Die Adresse 192.168.0.105 habe ich zuvor auf meinem Samba-Server mit dem Befehl ip a ermittelt.

$ smbclient -U johanna -L 192.168.0.105

Bemerkenswert ist, dass Sie auf dem Client-Rechner den Benutzer johanna weder als Linux- noch als Samba-Benutzer anlegen mussten.

Dateiübertragung per smbclient

Mit dem SAMBA-Client können Linux-Rechner nicht nur sehen, welche Freigaben ein Server besitzt, sondern auch auf diese zugreifen. Dazu wird die Freigabe als letztes Argument des Befehls angehängt.

$ smbclient -U johanna //192.168.0.105/foto
Password for [WORKGROUP\johanna]:
Try "help" to get a list of possible commands.
smb: \>

An dieser Stelle können Sie verschiedene Befehle angeben, mit denen Sie Daten zwischen dem Client und dem Server austauschen. Beispielsweise kopiert der SMB-Befehl put eine Datei von dem Client auf den Server. Im folgenden Beispiel wird die lokale Datei /etc/fstab, die ja immer existieren muss, unter dem Dateinamen huhu in das Verzeichnis der Freigabe foto, also unter /var/samba/foto kopiert.

$ smbclient -U johanna //192.168.0.105/foto
Password for [WORKGROUP\johanna]:
Try "help" to get a list of possible commands.
smb: \> put /etc/fstab huhu
putting file /etc/fstab as \huhu (50,0 kb/s) (average 50,0 kb/s)
smb: \> quit
$

Sie verlassen smbclient mit quit oder exit. Falls Sie daran Interesse haben, finden Sie alle Kommandos von smbclient, indem Sie die Manpage von smbclient aufrufen.

$ man smbclient

Zugriff per Dateimanager

Eine Freigabe kann auch direkt aus dem Dateimanager geöffnet werden. Damit ist es möglich, Dateien auf einem fremden Rechner wie lokale Dateien zu behandeln.

Zum Testen können Sie den lokalen Dateimanager auf dem Samba-Server öffnen, falls dieser eine grafische Oberfläche hat. Wenn Sie ebenfalls MATE als Desktop verwenden, können Sie durch Anklicken des Stiftsymbols oder die Tastenkombination + in die Adresszeile die URL smb://localhost eingeben. Bei vielen anderen Desktops funktioniert dies auch.

Nach Eingabe des Servers sehen Sie nun die Freigabe foto, wie in Abbildung 12.1 zu sehen ist.

Abbildung 12.1: Mit dem MATE-Dateimanager CAJA einen SMB-Server anzeigen

Wenn Sie darauf doppelklicken, werden Sie nach Benutzer und Passwort gefragt. Geben Sie die bei smbpasswd angegebene Kennung an und Sie sollten ein leeres Verzeichnis sehen. Über die rechte Maustaste können Sie zum Test einen Ordner anlegen. Da die Freigabe writeable ist, sollte das funktionieren.

Es kann allerdings sein, dass der Dateimanager den eigenen Benutzernamen voraussetzt und Ihnen keine Möglichkeit gibt, diesen in dem Dialog einzugeben. Dann müssen Sie dem Servernamen den Benutzernamen voranstellen. In unserem Beispiel lautet dies dann smb://johanna@localhost/foto.

Aus dem Netzwerk

Nachdem das auf dem lokalen Rechner geklappt hat, wechseln wir auf einen anderen Computer. Wieder öffnen Sie einen Dateimanager. Die Freigabe können Sie nun über die IP-Adresse des Samba-Servers ansprechen.

  • Dazu muss der Server natürlich im lokalen Netzwerk erreichbar sein.

    Sofern sich der Server in einer virtuellen Maschine in der VirtualBox befindet, müssen Sie dazu gegebenenfalls die Netzwerkeinstellung der VM auf »Netzwerkbrücke« umstellen.

  • Außerdem benötigen Sie die IP-Adresse des fremden Rechners. Diese erhalten Sie, indem Sie auf dem Rechner den Befehl ip a eingeben. Hinter dem Begriff inet finden Sie die IP-Adresse. Im unteren Beispiel ist das 192.168.0.105.

    $ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state ...
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo ...
    2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc ..
    link/ether 08:00:27:60:e8:3c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.105/24 brd 192.168.0.255 ...

  • Öffnen Sie den Dateimanager. Auf einem Linux- oder Mac-Computer verwenden Sie als Adresse smb://192.168.0.105 oder smb://johanna@192.168.0.105.
  • Bei einem Windows-Client geben Sie \\192.168.0.105 in die Explorer-Adressleiste ein. Sie werden sofort nach Benutzername und Kennwort gefragt.
  • Nun sollte der Dateimanager Benutzerkennung und Passwort einfordern. In unserem Beispiel wären dies johanna und das von Ihnen gewählte Passwort.

Wenn Sie sich nicht die IP-Adresse Ihres Servers merken wollen, verwenden Sie einen lokalen DNS (siehe Kapitel 8) oder tragen Sie einfach einen Namen in der Datei /etc/hosts (siehe Kapitel 8) ein.

# /etc/hosts
192.168.0.105 server

Einhängen einer SMB-Freigabe

SMB-Freigaben stellen ein Netzwerkdateisystem dar. Ein solches Dateisystem können Sie wie andere Dateisysteme auch mit dem Befehl mount in den Verzeichnisbaum einhängen.

Beim Einbinden des Dateisystems sollte bedacht werden, dass sich SMB-Dateisysteme nicht POSIX-konform verhalten. So stimmen nicht alle Dateinamenskonventionen überein. Auch Linux-typische Dateispezialitäten wie Links oder Sockets werden nicht funktionieren. Nicht einmal die Rechte und Besitzverhältnisse eines Linux-Systems können auf einem SMB-Dateisystem nachgebildet werden.

Einhängen per mount

Um eine SMB-Freigabe einzuhängen, muss dem Befehl mount die Option -t cifs angegeben werden. Diese Option wird dazu führen, dass statt des Standardbefehls  mount der Befehl mount.cifs aufgerufen wird. Der Befehl mount.cifs muss explizit installiert werden und befindet sich im Paket cifs-utils:

# apt install cifs-utils

CIFS steht für Common Internet File System, das einen Nachfolger von SMB darstellt, der nicht nur SAMBA-Server unterstützt, sondern auch diverse NAS-Systeme und die meisten Windows-Server.

Das Einbinden der Ressource foto vom Rechner server in den lokalen Ordner /mnt erfolgt mit einem der beiden Befehle:

# mount.cifs //server/foto /mnt -o username=johanna
# mount -t cifs -o username=johanna //server/foto /mnt

Beim Einbinden einer Freigabe muss der Benutzername für Samba angegeben werden, über den die Freigabe angefordert wird. Diese Option heißt -o username. Anschließend wird an der Konsole das Passwort dieses Benutzers eingefordert werden.

Der Inhalt des Verzeichnisses /mnt gehört anschließend root. Um die Freigabe einem Benutzer zuzuordnen, wird die Option uid hinzugefügt. Hier wird die Freigabe foto dem lokalen Benutzer paul zugewiesen.

# mount -t cifs -o username=johanna,uid=paul //server/foto /mnt

Die Verbindung kann mit dem normalen umount wieder aufgelöst werden:

# umount /mnt

Freigabe beim Booten einhängen

Soll eine SMB-Freigabe bereits beim Booten des Rechners eingebunden werden, muss ein entsprechender Eintrag in der Datei /etc/fstab (siehe Kapitel 7) hinterlegt werden. Jede Zeile enthält die folgenden Bestandteile:

  • Dateisystem Hier wird die SMB-Freigabe angegeben.
  • Einhängepunkt Durch mindestens ein Leerzeichen abgetrennt wird das Verzeichnis genannt, in das die Freigabe eingehängt wird. Häufig wird man hier ein Unterverzeichnis von /media verwenden oder, wenn es nur von einem Benutzer verwendet wird, auch ein Unterverzeichnis von /home.
  • Dateisystemtyp Hier wird für Samba-Dateisysteme cifs angegeben.
  • Optionen Hier werden weitere Parameter eingestellt.
  • Zahlen Sicherungskennzahl und Prüfreihenfolgeindex.

Für das Einhängen wird ein Passwort benötigt, das nicht in der Datei /etc/fstab stehen sollte, da diese Datei für alle Benutzer eines Systems einsehbar ist. Darum wird eine Credentials-Datei verwendet, die Benutzerkennung und Passwort enthält und vor den Blicken der anderen Benutzer des Systems verborgen werden kann.

//server/foto /media/foto cifs
credentials=/home/georg/.smbcredentials 0 0

Da eine Papierseite am rechten Rand ein natürliches Ende findet, habe ich die Zeile umbrochen. Das war einfacher, als diese Seite im Querformat drucken zu lassen. Verwenden Sie in der Datei /etc/fstab bitte nur eine Zeile.

Hinter der Option credentials wird eine Datei angegeben, die Benutzerkennung und Passwort enthält.

username=georg
password=gehtdichgarnichtsan

Freigabe vom Benutzer einhängen

Anstatt die Freigabe bereits beim Booten in den Verzeichnisbaum einzuhängen, ist es klüger, dem Benutzer die Möglichkeit anzubieten, es einzuhängen, wenn er es benötigt. Um einem normalen Benutzer zu ermöglichen, ein Dateisystem per mount einzuhängen, muss dieses Recht in der Konfigurationsdatei für Dateisysteme /etc/fstab hinterlegt sein.

Dazu werden folgende Optionen benötigt:

  • noauto Das Dateisystem wird nicht beim Booten eingebunden.
  • users Die Benutzer des Systems dürfen den Befehl mount für dieses Dateisystem ausführen.
  • username der Benutzername für den Samba-Server

Der Eintrag in der Datei /etc/fstab lautet beispielsweise:

# /etc/fstab
//server/foto /media/foto cifs noauto,users,username=johanna 0 2

Das Passwort für johanna können Sie einfach weglassen. Es wird dann vom Aufrufer des mount-Befehls eingefordert.

$ mount.cifs //server/foto

Die eingebundene Freigabe gehört anschließend dem Benutzer, der den Befehl mount aufgerufen hat.

Zugriffsrechte

Bisher haben wir mit dem Befehl smbpasswd nur einen Benutzer johanna angelegt. Das macht es sehr einfach, weil nur johanna die Daten lesen und verändern kann.

Mehrere Benutzer

Schwieriger wird es, wenn es mehrere Samba-Benutzer gibt. Schließlich arbeitet jeder Samba-Benutzer mit einem Linux-Gegenstück. Wenn johanna eine Datei per Samba anlegt, gehört sie ihr auch. Standardmäßig weist Samba die Rechte 744 zu. Das bedeutet, dass nur sie sie ändern kann und alle anderen Benutzer sie nur lesen dürfen.

Gibt es einen zweiten Samba-Benutzer anna, kann dieser wiederum Dateien anlegen, die aber dann für johanna nur lesbar sind. Je mehr Benutzer im Spiel sind, desto unübersichtlicher wird die Situation.

Darum ist es gut, dass man die Benutzer für jede Freigabe separat festlegen kann.

valid users und invalid users

Freigaben können auf einzelne berechtigte Benutzer begrenzt werden (valid users). Dazu zählen Sie die zugelassenen Benutzer nach der Option valid users auf. Die Benutzernamen werden kommasepariert aufgeführt. Mit der Option invalid users werden Benutzer ausgeschlossen.

valid users = johanna, paul, inga
invalid users = georg

force users

Da mehrere Benutzer sich gegenseitig behindern können, ist es manchmal am einfachsten, nur einen Benutzer für eine Freigabe zu definieren, der im Namen aller zulässigen Benutzer arbeitet. Dazu gibt es die Einstellung force user. In diesem Fall werden alle berechtigten Zugriffe auf einen Benutzer umgeleitet. Die Option force user legt den Benutzer fest, unter dem Dateien und Verzeichnisse angelegt werden.

valid users = johanna, paul, inga
force user = johanna

Gäste

Samba kann Freigaben für alle freigeben. Was Linux als »die Welt« bezeichnet, sind für Samba Gäste. Jede Freigabe kann mit der Option guest ok den Zugriff für Gäste öffnen.

Sowohl Gäste als auch Benutzer arbeiten unter ihrem eigenen Konto und können so Dateien anlegen, die von den jeweils anderen Benutzern nicht verändert werden können.

Sie können auf diese Freigabe nicht nur über die Samba-Benutzerkennung zugreifen. Jeder andere darf dies ganz ohne Passwort auch. Gäste werden dem Linux-Benutzer nobody zugewiesen.

Schreibrechte

Grundsätzlich sind Freigaben nur lesbar. Das bedeutet, dass die Einstellung read only auf true steht und writeable auf false. Diese Situation ist meist unkritisch. Will man nicht alle mitlesen lassen, kann man sie mit den Benutzereinträgen aussperren.

Kippt man eine der Variablen, stehen die Freigaben grundsätzlich zur Veränderung offen. So kann jeder Benutzer fremde Dateien lesen, aber nur die eigenen Dateien verändern.

Mit der Option write list kann eingeschränkt werden, welche Benutzer schreiben dürfen. Dazu wird zunächst die Freigabe auf read only gesetzt.

write list = johanna, paul

Datei- und Verzeichnismasken

Standardmäßig erhalten über Samba erzeugte Dateien die Berechtigung 744. Das bedeutet, dass der Anleger sie verändern und ausführen kann, alle anderen zum Lesen verdammt sind. Bei Verzeichnissen ist die Vorgabe 755, die anderen Benutzern immerhin das Lesen und Betreten erlauben. Das Anlegen oder Löschen von Dateien ist allerdings ausgeschlossen.

Das kann man ändern, indem bei einer Freigabe create mask und directory mask nach den eigenen Wünschen anpasst. Im folgenden Beispiel erhalten nun alle neu erzeugten Dateien Schreib- und Leserecht für alle. Und die Änderung der Verzeichnisrechte sorgt dafür, dass in den neu angelegten Unterverzeichnissen alle hemmungslos Dateien und Verzeichnisse anlegen und löschen dürfen.

create mask = 766
directory mask = 777

Die Einstellung der Optionen macht den Administrator im Allgemeinen nicht beliebt. Die Beschränkungen werden oft als Schikanen empfunden. Wenn man allerdings alle Dateien für alle Benutzer freigibt, wird der nächste Ransomvirus das Unternehmen in die Nachrichten und an den Rand des Ruins bringen, vielleicht auch einen Schritt weiter.

Besonderheiten

Sie können nun beliebig viele Freigaben anlegen und diese in ihren Rechten und Zugriffen unterschiedlich gestalten. Samba kennt neben den Freigaben noch ein paar Besonderheiten.

Die Besonderheit von Druckern lasse ich an dieser Stelle allerdings aus. Es ist möglich, mit Samba die erreichbaren Drucker den Samba-Benutzern zur Verfügung zu stellen. Allerdings ist diese Fähigkeit nicht mehr so relevant, da heutzutage die meisten Drucker netzwerkfähig sind und darum Samba nicht mehr benötigen.

Benutzerverzeichnisse (homes)

Unter der Freigabe homes kann der SAMBA-Server jedem Benutzer sein Heimatverzeichnis zur Verfügung stellen. Existiert eine solche Freigabe, kann jeder Benutzer eine Freigabe mit seinem eigenen Namen öffnen. Für den Anwender johanna hieße das Heimatverzeichnis auf dem Server server also //server/johanna. Auf der Serverseite handelt es sich um das Verzeichnis, das laut der passwd-Datei das Benutzerverzeichnis ist.

Die Freigabe für homes unterscheidet sich in einigen Details von den üblichen Freigaben.

# /etc/samba/smb.conf
[homes]
browseable = no
read only = no
valid users = %S

Die Option browseable wird bei homes auf no gesetzt, damit das Benutzerverzeichnis nicht unter dem Namen homes erscheint.

Die Option valid users wird mit %S besetzt. Das steht für den Freigabenamen, der im Falle von homes mit dem des Benutzernamens identisch ist. Sie könnten also auch %U für den Benutzernamen verwenden. In beiden Fällen sorgt es dafür, dass nur der Benutzer selbst sein Heimatverzeichnis öffnen kann.

Da der Ort des Benutzerverzeichnisses durch die Datei /etc/passwd vorgegeben wird, braucht die Ressource homes keine Option path.

POSIX: Symbolische Links

Ein Samba-Dateisystem kennt von Haus aus keine symbolischen Links. Sie können diese allerdings zulassen, indem Sie die Option unix extensions einschalten. Nun kann ein POSIX-fähiger Client, wie beispielsweise ein Linux-System, einen symbolischen Link als einen solchen sehen und behandeln. Damit Windows-Systeme nicht verzweifeln, kann unix extensions auf No gesetzt werden.

Vermutlich interessanter ist die Frage, wie mit Links in Freigabe-Verzeichnissen umgegangen werden soll. Die Option follow symlinks schreibt vor, dass den symbolischen Links gefolgt wird. Diese Option ist standardmäßig gesetzt. Nicht gesetzt ist der Parameter wide links. Dieser erlaubt nämlich, symbolischen Links zu folgen, die aus der Freigabe herausführen. Das ist insofern problematisch, als dass ein solcher Link Bereiche im Netz veröffentlichen könnte, mit denen der Administrator nicht unbedingt rechnet.

[global]
unix extensions = No
follow symlinks = Yes

[Filme]
...
wide links = Yes