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

Mit Raspbian Wheezy und Raspbian Jessie geprüft.

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.

Aufgabe

  1. Prüfen Sie, ob das Samba-Dateisystem vom Kernel unterstützt wird.
  2. Prüfen Sie den Zugriff auf das entfernte Samba-Dateisystem.
  3. Erstellen Sie einen Mount-Point auf dem Client.
  4. Legen Sie einen Eintrag in der Datei "/etc/fstab" an.
  5. Prüfen Sie, ob die Samba-Freigaben automatisch eingebunden werden.

Vorbereitungen

  1. Um Samba-Freigaben mounten zu können, müssen sie vorher eingerichtet werden.
  2. Sorgen Sie dafür, dass in den freigegebenen Verzeichnissen auf dem Samba-Server Dateien oder weitere Verzeichnisse enthalten sind, damit Sie später wirklich prüfen können, ob die Freigaben korrekt eingebunden wurden.

Lösung: Verfügbare Unterstützung für Dateisysteme prüfen

Damit ein Dateisystem auf einem Laufwerk erkannt und eingehängt werden kann, müssen die entsprechenden Dateisystem-Module installiert sein. Zu diesem Zweck sollte man prüfen, welche Dateisysteme der laufenden Kernel unterstützt.

ls -1 /lib/modules/$(uname -r)/kernel/fs

Um auf Samba-Freigaben zugreifen zu können, benötigt man das Dateisystem "cifs", dass im Paket "cifs-utils" enthalten ist und das bei Raspbian Jessie dabei sein sollte. Wenn nicht, dann kann man es nachträglich installieren.

sudo apt-get install cifs-utils

Lösung: Entfernte Samba-Freigabe prüfen

Zuerst sollten wir prüfen, ob die Samba-Freigabe überhaupt erreichbar ist. Dazu installieren wir uns für die Kommandozeile einen Samba-Client, falls der noch nicht installiert ist.

sudo apt-get update
sudo apt-get install smbclient

Kommando zum Prüfen, ob die Samba-Freigaben erreichbar sind:

smbclient -N -L //192.168.1.2/
smbclient -N -L raspberrypi

Jetzt gehen wir noch einen Schritt weiter und prüfen, ob eine Benutzeranmeldung möglich ist.

smbclient -U pi -L //192.168.1.2/

Die Kommandozeile wird vermutlich nach einem Passwort fragen. Das ist das Passwort, dass der Benutzer "pi" in der Samba-Benutzerverwaltung bekommen hat. Nicht der lokale Benutzer, sondern wirklich der Samba-Benutzer.

Lösung: Mount-Point erstellen

Um eine Freigabe einzubinden, muss zunächst ein Mount-Point erstellt werden. Dieser kann im Prinzip an jeder beliebigen Stelle im Dateiverzeichnis gewählt werden. Üblich ist jedoch folgendes Vorgehen:

  • Systemweites Einbinden: Der Mountpunkt muss Eigentum von Root sein.
  • Persönliches Einbinden: Der Mountpunkt muss Eigentum des jeweiligen Benutzers sein. Es empfiehlt sich einen leeren Ordner in dessen Heimverzeichnis anzulegen.

Mount-Points im Benutzerverzeichnis erstellen:

mkdir -p /home/pi/shares/test
mkdir -p /home/pi/shares/users
mkdir -p /home/pi/shares/pi

Lösung: Eintrag in der Datei "/etc/fstab" anlegen (Raspbian Wheezy)

Jetzt geht es darum, die Partition bzw. das Dateiystem fest einem Mount-Point in der Datei "/etc/fstab" zuzuordnen. Dazu öffnen wir folgende Datei:

sudo nano /etc/fstab

Folgende Zeilen eintragen:

//192.168.1.2/SambaTest    /home/pi/shares/test    cifs    defaults,noauto,nofail,username=pi,passwd=raspberry    0    0
//192.168.1.2/SambaUsers    /home/pi/shares/users    cifs    defaults,noauto,nofail,username=pi,passwd=raspberry    0    0
//192.168.1.2/SambaPi    /home/pi/shares/pi    cifs    defaults,noauto,nofail,username=pi,passwd=raspberry    0    0

Beachten Sie bitte, dass IP-Adresse, Benutzername (Option "username"), Passwort (Option "passwd"), die Freigaben und Mount-Points an Ihr Szenario angepasst werden müssen.

Wenn Sie den Eintrag vorgenommen oder geändert haben, dann die Datei noch speichern und schließen mit Strg + O, Return, Strg + X.

Anschließend kann man die Freigaben manuell einhängen/mounten. Die neuen Einträge in der Datei "/etc/fstab" werden automatisch berücksichtigt.

sudo mount -a

Prüfen Sie, ob die Freigaben eingehängt wurden.

lsblk
ls /home/pi/shares/test
ls /home/pi/shares/users
ls /home/pi/shares/pi

Beachten Sie hierbei, dass diese Verzeichnisse auf Ihrem lokalen System existieren und als Mount-Points verwendet werden. Nur dann, wenn der lokale Verzeichnis-Inhalt mit dem auf dem Samba-System übereinstimmt, dann wurden die Freigaben erfolgreich eingehängt.

Prüfen Sie, ob die Samba-Freigaben nach einem Neustart automatisch eingebunden werden.

reboot

Im günstigsten Falle werden die Freigaben bereits beim Systemstart automatisch eingebunden.

Lösung: Eintrag in der Datei "/etc/fstab" anlegen (Raspbian Jessie)

Jetzt geht es darum, die Partition bzw. das Dateiystem fest einem Mount-Point in der Datei "/etc/fstab" zuzuordnen. Dazu öffnen wir folgende Datei:

sudo nano /etc/fstab

Folgende Zeilen eintragen:

//192.168.1.2/SambaTest    /home/pi/shares/test    cifs    defaults,noauto,nofail,username=pi,passwd=raspberry,x-systemd.automount,x-systemd.requires=network-online.target    0    0
//192.168.1.2/SambaUsers    /home/pi/shares/users    cifs    defaults,noauto,nofail,username=pi,passwd=raspberry,x-systemd.automount,x-systemd.requires=network-online.target    0    0
//192.168.1.2/SambaPi    /home/pi/shares/pi    cifs    defaults,noauto,nofail,username=pi,passwd=raspberry,x-systemd.automount,x-systemd.requires=network-online.target    0    0

Beachten Sie bitte, dass IP-Adresse, Benutzername (Option "username"), Passwort (Option "passwd"), die Freigaben und Mount-Points an Ihr Szenario angepasst werden müssen.

Hinweis: Die Mount-Optionen "x-systemd.automount,x-systemd.requires=network-online.target" sorgen dafür, dass erst dann versucht wird zu mounten, wenn die Netzwerkverbindung zur Verfügung steht und geunmountet wird bevor die Netzwerkverbindung beendet wird.

Wenn Sie den Eintrag vorgenommen oder geändert haben, dann die Datei noch speichern und schließen mit Strg + O, Return, Strg + X.

Anschließend kann man die Freigaben manuell einhängen/mounten.

sudo mount -a

Prüfen Sie, ob die Freigaben eingehängt wurden.

lsblk
ls /home/pi/shares/test
ls /home/pi/shares/users
ls /home/pi/shares/pi

Beachten Sie hierbei, dass diese Verzeichnisse auf Ihrem lokalen System existieren und als Mount-Points verwendet werden. Nur dann, wenn der lokale Verzeichnis-Inhalt mit dem auf dem Samba-System übereinstimmt, dann wurden die Freigaben erfolgreich eingehängt.

Prüfen Sie, ob die Samba-Freigaben nach einem Neustart automatisch eingebunden werden.

reboot

Im günstigsten Falle werden die Freigaben bereits beim Systemstart automatisch eingebunden.

Problem: Einträge in der Datei "/etc/fstab" werden beim Systemstart nicht eingebunden

Die Einträge in der Datei "/etc/fstab" sollten beim Systemstart automatisch eingebunden werden. Bedingung ist allerdings, dass das Laufwerk beim Abarbeiten der Datei zur Verfügung steht. Das heißt, das physikalische Laufwerk muss erkannt und initialisiert sein oder im Falle einer Samba-Freigabe muss die Netzwerk-Verbindung zur Verfügung steht. Das ist eigentlich nie der Fall. Und deshalb stolpert man genau darüber. Das heißt, man muss irgendwie dafür sorgen, dass die Samba-Freigaben nachträglich eingebunden werden.

Was in jedem Fall funktioniert ist, die Freigaben mit "sudo mount -a" nachträglich manuell einzubinden. Allerdings möchte man genau das vermeiden, weil es ein manueller Eingriff ist. Eigentlich will man, das es automatisch funktioniert.

Bei Raspbian Jessie ist es einfach. Hier reicht es, wenn man in den Mount-Optionen der fstab-Zeile "x-systemd.automount,x-systemd.requires=network-online.target" hinzufügt.

Wenn man Raspbian Wheezy hat, dann muss man mit dem Mounten warten bis das Netzwerk "hochgefahren" ist. Um ein Kommando, wie "mount -a", kurz bevor der Bootvorgang abgeschlossen ist auszuführen, eignet sich die Datei "/etc/rc.local".
Die Datei "/etc/rc.local" wird relativ spät im Bootvorgang ausgeführt, quasi kurz bevor der Login-Prompt kommt. Bei Raspbian ist standardmäßig eine Zeile zur Ausgabe der IP-Adresse in dieser Datei eingetragen.

sudo nano /etc/rc.local
...
mount -a

exit 0

Allerdings besteht hier das Problem, das nicht sichergestellt wird, ob bereits eine Netzwerk-Verbindung möglich ist. So kann es passieren, dass die Datei "/etc/rc.local" ausgeführt wird bevor zum Beispiel das WLAN hochgefahren ist.
Man kann sich damit behelfen, eine Verzögerung einzubauen, bis die Netzwerk-Verbindung hergestellt ist.

...
sleep 20
mount -a

exit 0

Das Kommando "sleep" verzögert die weitere Abarbeitung von "/etc/rc.local" in Sekunden. Der Wert, der hier angegeben ist, muss man durch Ausprobieren herausfinden. Der kann bei jedem System anders sein.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!