Anleitung: Samba (SMB) Network File Sharing auf Raspberry Pi OS installieren

0

Um von einem Mac auf die Dateien eines Raspberry Pi mit Raspberry Pi OS zugreifen zu können benötigt man Samba. Wie das funktioniert und was man dafür Schritt für Schritt installieren muss hat sich in den letzten Jahren immer wieder geändert und unterscheidet sich zwischen den verschieden Versionen von Raspbian zum teil erheblich und zahlreiche Tutorials im Web sind mittlerweile veraltet. Diese Anleitung bezieht sich auf das aktuelle Raspberry Pi OS, das auf Debian Buster Linux beruht.

Dieses Tutorial zeigt wie das Raspberry Pi Samba-Setup für MacOS, Windows PC und Linux-Computer in Ihrem Netzwerk optimiert werden kann.

Vorbereitung

Als Erstes ist es wichtig, dass die neueste Version von Raspberry Pi OS auf dem Raspberry Pi installiert ist von dem aus die Samba Dateifreigabe erfolgen soll und dass dieser Raspberry via Ethernet oder WLAN mit dem Internet verbunden ist. Es spielt keine Rolle, ob ein Raspberry Pi Zero W, ein Raspberry Pi 3 oder Raspberry Pi 4 verwendet wird. Ein Anleitung zur Installation von Raspberry Pi OS auf dem Raspberry Pi gibt es auf den offiziellen Raspberry Pi Documentation Seiten.

Des Weiteren gehen wir in den nächsten Schritten davon aus, dass der Raspberry Pi entweder headless per SSH im Terminal aufgerufen werden kann oder dass Maus, Tastatur und Bildschirm angeschlossen sind, so dass man direkt im Prompt nach der Anmeldung Befehle eingegeben werden können.

Vor der Installation neuer Software sollte mit folgendem Befehl routinemäßig immer erstmal ein Update des aktuellen Raspberry Pi OS gemacht werden:

sudo apt update && sudo apt upgrade -y

AFP, Bonjour und Avahi

Wie bereits erwähnt, gibt es im Web viele Raspberry Pi-Netzwerk-Tutorials, in denen vorgeschlagen wird, mehrere Pakete zu installieren, die aber nicht mehr benötigt werden.

So hat Apple in der Vergangenheit bevorzugt das AFP (Apple Filing Protocol) verwendet. Seit MacOS 10.9 Mavericks, das schon 2016 veröffentlicht wurde, ist Apple dann aber auch zu Samba (SMB) umgeschwenkt. Im Internet finden sich noch viele Tutorials zur Installation von AFP mit Netatalk, aber es gibt auch unter MacOS keinen Grund mehr sich an die veraltete und von Apple nicht mehr weiterentwickelte Technologie zu halten.

Samba in der Version SMB 3 ist schneller als AFP und bietet alle Funktionen, die man für einen Zugriff von MacOS aus benötigt. Ferner ist Samba auch unter Windows bereits implementiert und funktioniert genauso gut von Linux Rechnern aus.

Bonjour ist eine weitere von Apple entwickelte Software, die Geräte und Dienste wie Computer, Dateifreigaben oder Drucker, die in einem Netzwerk verfügbar sind, automatisch findet und anzeigt. Bonjour ist in macOS integriert, aber auch für Microsoft Windows verfügbar. Damit sich der Raspberry Pi im Netzwerk sichtbar wird und von Bonjour erkannt werden kann, musste unter älteren Versionen von Raspbian zusätzlich das Avahi-Paket installiert werden. In der neueste Raspberry Pi OS-Version ist Avahi bereits enthalten und sofort einsatzbereit. Avahi muss also nicht mehr zusätzlich installiert werden muss.

Das heisst zusammenfassend: Unter Raspberry Pi OS benötigt man für die gemeinsame Nutzung von Raspberry Pi-Dateien lediglich Samba.

Installation von Samba unter Raspberry Pi OS

Um Samba unter Raspberry Pi OS zu installieren wird folgende Befehlszeile im Terminal eingegeben:

sudo apt install samba -y

Sobald ein Fenster aufgeht, das mit “Samba Server and Utilities” und das danach fragt ob die smb.conf WINS Settings von DHCP nutzen soll, wird im Dialogfenster die Option “No” bzw. “Nein” ausgewählt.

Wenn man von de, Raspberry Pi aus auf andere Netzwerkcomputer zugreifen möchten, z. B. wenn man ihn als Desktop-Computer verwendet, müssen auch die CIFS-Tools installiert werden. Die CIFS-Tools waren ursprünglich Teil des Samba-Pakets, wurden aber später in ein eigenes Paket aufgeteilt.

Wenn der Raspberry Pi nicht auf andere Computer im Netz zugreifen muss, sondern nur selbst im Netzwerk sichtbar sein soll müssen die CIFS-Tools nicht installiert werden.

Anderenfalls geht die Installation der CIFS-Tools mit folgendem Befehl:

sudo apt install samba-client cifs-utils

Einen Samba User für den Zugriff einrichten

Einen Benutzer mit SMB-Zugriffsrechten auf den Raspberry Pi einzurichten ist einfach. Standardmässig ist bereits der User “Pi” vorhanden, dem man mit folgendem Befehl auch Zugriff via Samba geben kann:

sudo smbpasswd -a pi

Hat man bereits vorher andere User angelegt oder will man das noch tun, kann man den Befehl analog anwenden. Dazu ersetzt man “pi” einfach durch den jeweiligen Benutzernamen, legt ein Passwort fest und bestätigt es. Auf diese Weise können beliebig viele Benutzer hinzugefügt werden.

Die Samba Konfigurationsdatei

Samba kommt standardmäßig mit einer aufwändigen Konfigurationsdatei. Diese kann man sehr spezifisch an die jeweiligen Erfordernisse einer Netzwerkfreigabe anpassen. Allerdings sind die sehr feingliedrigen Einstellungen auch extrem komplex und überfordernd für die meisten (einfacheren) Anwendungen.

Darum machen wir von der ursprünglichen Samba Konfigurationsdatei erstmal eine Kopie:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.org

Im nächsten Schritt legen wir mit dem Befehl

sudo nano /etc/samba/smb.conf

eine neue, leere Samba Konfigurationsdatei an und kopieren mit Copy und Paste die folgenden Inhalte:

[global]
client min protocol = SMB2
client max protocol = SMB3
vfs objects = catia fruit streams_xattr
fruit:metadata = stream
fruit:model = RackMac
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
security = user
encrypt passwords = yes
workgroup = WORKGROUP
server role = standalone server
obey pam restrictions = no
map to guest = never
[pi]
comment = Pi Directories
browseable = yes
path = /home/pi
read only = no
create mask = 0775
directory mask = 0775

Diese Konfigurationsdatei erstellt ein Freigabeverzeichnis in /home/pi mit Rechten nur für den angemeldeten Benutzer und enthält einige Optimierungen für MacOS-Computer.

Der Dateizugriff lässt sich auf zahlreiche Arten weiter einschränken. So kann man beispielsweise mit „0700“ die Rechte Benutzers auf “nur ändern” einschränken. Eine Anleitung zur Beschränkung von Zugriffen auf Dateien gibt es in beispielsweise in diesen Artikel.

Wer tiefer in die Konfiguration der einzelnen Elemente der Samba-Konfigurationsfatei einsteigen will, findet zusätzliche Informationen auf dieser Seite.

Nach dem Einfügen kann man mit CTRL + O (bzw. STRG + O, die einkopierten Inhalte in der Konfigurationsdatei auf die Festplatte zu schreiben, Mit CTRL + X (bzw. STRG + X) kann man den Nano Editor verlassen und zum Prompt zurückkehren.

Um die Syntax der Konfigurationsdatei zu überprüfen und eine Zusammenfassung der Einstellungen anzuzeigen gibt man folgenden Befehl ein:

testparm /etc/samba/smb.conf

Als Systemantwort des Raspberry Pi sollte man ungefähr folgende Angaben erhalten:

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section “[pi]”
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

Durch Drücken der Enter-Taste kommt man zurück zum Prompt.

Zu guter Letzt wird Samba einmal neu gestartet mit folgendem Befehl:

sudo /etc/init.d/smbd restart

Nun sollte der Raspberry Pi im Finder bzw. Windows Explorer im Netzwerk sichtbar sein und durch sich durch Doppelklick sehen eine Verbindung herstellen lassen.

Wird man nach Benutzernamen und Passwort gefragt, gibt man den Benutzernamen “pi” (aus unserem Beispiel) und das zugehörige Passwort ein.

Letzter Samba-Feinschliff in den Avahi Einstellungen

Optional kann man auf dem Raspberry Pi noch ein paar zusätzliche Einstellungen für die Samba Konfiguration in Avahi vornehmen, die die Darstellung der Netzwerk-Freigaben unter MacOS im Finder etwas verschönern. Dieser Schritt ist nicht zwingend für die Konfiguration von Samba erforderlich, bringt aber mindestens zwei Vorteile. Einmal wird der Hostname des Raspberry genauso dargestellt wie man eingestellt hat, d.h. der Hostname wird nicht einfach stupide in Grossbuchstaben in den Netzwerk Shares von MacOS angezeigt, sondern in Groß- und Kleinbuchstaben wie man ih eben unter raspi-config festgelegt hat und man kann zusätzlich noch das Host-Symbol festlegen, das neben dem Namen im Finder angezeigt werden soll.

Alle diese Einstellungen erfolgen in der smb.service Datei unter Avahai. Da diese Datei i.d.R. noch nicht angelegt, erledigen wir dies mit folgendem Befehl im Prompt:

sudo nano etc/avahi/services/smb.service

Nun erstellt der Nano Editor eine neue Datei mit dem Namen smb.service, die allerdings noch keine Inhalte hat.

In den Nano_Editor kopieren wir dazu nun folgenden Block mit Copy und Paste:

<?xml version=”1.0″ standalone=’no’?>
<!–*-nxml-*–>
<!DOCTYPE service-group SYSTEM “avahi-service.dtd”>
<service-group>
<name replace-wildcards=”yes”>%h</name>
<service>
<type>_smb._tcp</type>
<port>445</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>

In diesem Beispiel wird in der drittletzten Zeile als Model “XServe” festgelegt, was dazu führt, das MacOS neben den SMB-Netzwerk Share des Raspberry ein XServe Server Symbol anzeigt.

Welche Symbole grundsätzlich zur Verfügung stehen kann herausfinden, indem man auf dem Mac in Safari die folgende Adresse eingibt:

file:///System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/

Alle Icons, die in dem Ordner mit “com.apple” beginnen lassen sich für die Konfiguration nutzen. Hat man sich beispielsweise für “com.apple.imacpro-2017.icns” entschieden, muss man an der Stelle wo oben im Besipiel in der drittletzten Zeile “XServe” steht einfach “imacpro-2017” eintragen. Die Zeile sieht dann so aus:

<txt-record>model=imacpro-2017</txt-record>

Wer nicht alle Symbole einzeln durchklicken will fährt mit “XServe”, “macmini”, “macpro” als Symbol für den Raspberry Pi nicht schlecht.

Nachdem man die Datei nach den persönlichen Präferenzen entsprechend konfiguriert hat, kann man mit CTRL + O (bzw. STRG + O), die in Nano einkopierten Inhalte in der Konfigurationsdatei speichern und mit CTRL + X (bzw. STRG + X) den Nano Editor verlassen und zum Prompt zurückkehren.

Mit einem Restart von Samba sieht man sofort auf dem Mac die entsprechenden Änderungen:

sudo /etc/init.d/smbd restart

Zu guter Letzt bietet es sich dann auf jeden Fall an, den Raspberry Pi einmal mit dem Reboot-Befehl komplett neu zu starten:

sudo reboot now

Nach dem Reboot sollte Samba vollständig konfiguriert sein.