Samba-Freigabe auf dem Raspberry Pi einrichten

Mit Raspbian Jessie geprüft.

Das Ziel ist, den Raspberry Pi als File-Server zu betreiben, auf den man per Windows-Explorer zugreifen kann. Die dafür am besten geeignete Software-Lösung ist ein Samba-Server. Mit Samba lassen sich fast alle Funktionen eines Windows-Servers realisieren.

Dazu gehören:

  • Datei- und Verzeichnis-Freigaben (Shares)
  • Drucker-Freigaben
  • Primärer Domain-Controller für NT (Samba 3)
  • Active Directory Domain Controller (ab Samba 4)

Aufgaben

  1. Samba-Server installieren.
  2. Grundkonfiguration des Samba-Servers.
  3. Verzeichnis-Freigaben einrichten.
  4. Samba-Passwort für Benutzer einrichten.

Vorbemerkung zu den folgenden Lösungen

Im Vergleich zu den üblichen Tutorials und Anleitungen zur Einrichtung von Samba-Freigaben ist diese Anleitung etwas umfangreicher. Der Grund ist, dass eine Verzeichnis-Freigabe nicht gleich Verzeichnis-Freigabe ist. Man kann generell für alle Benutzer ein Verzeichnis freigeben, für eine bestimmte Benutzergruppe oder für einen einzelnen Benutzer. In dieser Anleitung berücksichtigen wir alle drei Möglichkeiten. Im jeweiligen Einzelfall geht es darum, für wen welche Berechtigungen gesetzt werden muss. Das sparen andere Anleitungen aus. Aber genau hier liegen später die Probleme, wenn man selber individuelle Freigaben einrichten will.

Die folgende Lösung funktioniert mit Raspbian Wheezy (Samba Version 3) und Raspbian Jessie (Samba Version 4).

Lösung: Samba-Server installieren

Relevant für den Samba-Server sind die Pakete "samba" und "samba-common". Das Paket "smbclient" wäre auf einem Server nicht notwendig. Es hat allerdings den Vorteil, dass man lokal auf dem Server die Freigaben testen kann. Das vereinfacht die Fehlersuche.

sudo apt-get update
sudo apt-get install samba samba-common smbclient

Das Herunterladen und Installieren kann je nach System schon mal etwas dauern. Es schadet nicht ein wenig Geduld mitzubringen.

Dann prüfen wir, ob Samba läuft.

sudo service smbd status
sudo service nmbd status

Die Ausgabe sollte sein, dass die Dienste "nmbd" und "smbd" laufen.

Lösung: Grundkonfigurieren des Samba-Servers

Für die Samba-Grundkonfiguration gibt es eine zentrale Konfigurationsdatei "/etc/samba/smb.conf". Diese Datei ist in der Vorkonfiguration äußerst umfangreich und dadurch unübersichtlich. Für eine einfache Grundkonfiguration empfiehlt sich die Datei umzubenennen und neu zu erstellen.

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf_alt
sudo nano /etc/samba/smb.conf

Die folgende Grundkonfiguration ist nicht allgemeingültig, sondern für die meisten Anwendungen sinnvoll und zweckmäßig anzusehen. Das heißt, für den Anfang reicht es aus. Später muss sie vielleicht individuell angepasst werden.

[global]
workgroup = WORKGROUP
security = user
encrypt passwords = yes

Diese Grundkonfiguration gibt eine global gültige Konfiguration vor. Das wird durch den Bereich "global" gekennzeichnet, der in eckige Klammern gesetzt ist. Alle darin gemachten Angaben gelten für alle später konfigurierten Freigaben.

Der Parameter "workgroup" gibt die Bezeichnung der Arbeitsgruppe an. Damit hat man in Windows-Netzwerken Computer in Gruppen strukturiert. Heute spielt dieser Parameter keine Rolle mehr, da neuere Windows-Versionen, diese Angabe nicht mehr berücksichtigen. Er ist nur noch aus Kompatibilitätsgründen enthalten. Hier steht typischerweise "Workgroup" oder "Arbeitsgruppe".
Der Parameter "security" gibt an, welche Sicherheitsstufe beim Zugriff auf die Freigaben gelten sollen. Der Wert "user" ist eine gute Wahl und sagt aus, dass die User-Verwaltung des Servers verwendet werden soll. Das heißt, für den Zugriff auf die Samba-Freigaben gelten die eingerichteten Nutzer und deren Berechtigungen auf dem Server.
Der Parameter "encrypt passwords" mit "yes" sorgt dafür, dass die Passwörter bei der Authentifizierung verschlüsselt übertragen werden. Aus Sicherheitsgründen eine sinnvolle Einstellung, die keine Nachteile bei der Nutzung mit sich bringt.

Die beiden letzten Zeilen dienen dazu, Zugriffe ohne oder mit falschen Zugangsdaten automatisch als Gast angemelden. Nur dann greifen auch entsprechende Optionen, wenn Freigaben für jeden freigegeben werden sollen.

Hat man diese Grundkonfiguration in die Datei eingetragen, kann man die Datei speichern und schließen: Strg + O, Return, Strg + X.

Dann testen wir diese Konfigurationsdatei. Das hat den Vorteil, dass wenn wir etwas falsch oder fehlerhaft eintragen, dann können wir den Fehlstart des Samba-Servers vermeiden.

testparm

Wenn hier kein Fehler kommt, dann ist alles ok. Ansonsten muss der Fehler beseitigt und die Datei noch mal getestet werden.

Nach jeder Änderung an der Konfigurationsdatei müssen die Samba-Dienste neu gestartet werden. Erst dann wird die Konfiguration übernommen.

sudo service smbd restart
sudo service nmbd restart

Sofern die Konfiguration vollständig und korrekt ist, geht der Samba-Server wieder in Betrieb.

Lösung: Samba-Freigaben für Verzeichnisse einrichten

Um Freigaben für Verzeichnisse einzurichten brauchen wir als erstes ein Verzeichnis, in dem wir die Verzeichnisse anlegen, die wir später freigeben wollen. Im Prinzip ist es egal, wo sich der Ordner befindet. Ganz gut eignet sich dazu das Home-Verzeichnis "/home" in dem wir ein Verzeichnis mit dem Namen "shares" anlegen. Hier werden dann anschließend die Verzeichnisse angelegt, die freigeben werden sollen.

sudo mkdir /home/shares

Dann erstellen wir die Verzeichnisse, die wir nachher freigeben wollen und setzen auch gleich die dazu passenden Berechtigungen.
Es müssen nicht alle Verzeichnisse angelegt werden. Man kann sich auch eines für die eigenen Zwecke heraussuchen und die anderen weglassen.

Allgemeines Verzeichnis für alle zum Testen:

sudo mkdir /home/shares/test
sudo chown root:root /home/shares/test/
sudo chmod 777 /home/shares/test/

Verzeichnis nur für die Benutzergruppe "users":

sudo mkdir /home/shares/users
sudo chown root:users /home/shares/users/
sudo chmod 770 /home/shares/users/

Verzeichnis nur für den Benutzer "pi":

sudo mkdir /home/shares/pi
sudo chown pi:pi /home/shares/pi/
sudo chmod 700 /home/shares/pi/

Dann öffnen wir die Samba-Konfigurationsdatei und tragen dort die Freigaben ein.

sudo nano /etc/samba/smb.conf

Auch hier gilt, nur die Freigaben eintragen, für die das Verzeichnis angelegt wurde.

[SambaTest]
comment = Samba-Test-Freigabe
path = /home/shares/test
read only = no
[SambaUsers]
comment = Samba-Users-Freigabe
path = /home/shares/users
read only = no
[SambaPi]
comment = Samba-Pi-Freigabe
path = /home/shares/pi
read only = no

Der Name der Freigabe ist in eckige Klammern gesetzt. Das vereinfacht die Verwaltung und den Zugriff auf die Freigabe.
Die Datei muss anschließend gespeichert und geschlossen werden: Strg + O, Return, Strg + X.
Nach der Änderung der Konfigurationsdatei empfiehlt sich ein Test.

testparm

Wenn der Test erfolgreich war, dann muss Samba neu gestartet werden.

sudo service smbd restart
sudo service nmbd restart

Damit sind die Freigeben im Netzwerk verfügbar. Allerdings fehlt noch die Berechtigung darauf zuzugreifen. Gemeint ist, dass für den oder die Benutzer noch Samba-Passwörter eingerichtet werden müssen.

Lösung: Samba-Passwort für Benutzer einrichten

Für die Authentifizierung ist die Benutzerverwaltung auf dem Server vorgesehen. Allerdings benutzt Samba nur die eingerichteten Benutzernamen und die Datei- und Verzeichnisberechtigungen. Nicht die Passwörter. Für jeden Benutzer, der Samba-Freigaben benutzen will, muss man ein separates Passwort für Samba einrichten. Hier wählen wir beispielhaft den Benutzer "pi".

sudo smbpasswd -a pi

Nach der Eingabe des Passworts muss man es zur Kontrolle ein zweites mal eingeben. Danach kann man auf die Freigabe zugreifen.

Benutzer "pi" für Samba deaktivieren:

sudo smbpasswd -d pi

Benutzer "pi" für Samba wieder aktivieren:

sudo smbpasswd -e pi

Erweiterung: Samba-Freigaben mit "fstab" automatisch mounten/einhängen

Prinzipiell besteht eine Samba-Freigabe immer aus zwei Seiten. Die Server-Seite und die Client-Seite. Der Samba-Server wurde im Optimalfall erfolgreich konfiguriert. Jetzt geht es um die Einrichtung bzw. das automatische Einhängen (Mount) des freigegebenen Verzeichnisses in das lokale Dateisystem eines Clients oder eines anderen Servers.

Troubleshooting

Die meisten Probleme gehen auf eine fehlerhafte oder unvollständige Konfiguration des Samba-Servers zurück, falsch gesetzten Datei- und Verzeichnis-Berechtigungen und einer fehlerhaften Authentifizierung mit Benutzername und Passwort.

Weitere verwandte Themen:

Teilen:

Produktempfehlungen