Anleitung: Samba-Server auf einem Raspberry Pi 5 einrichten

Mit einem Samba-Server kannst du auf einem Raspberry Pi 5 Netzwerkfreigaben bereitstellen, die von Windows, Linux und macOS genutzt werden können. Dadurch wird der Raspberry Pi zu einem kleinen Dateiserver im Netzwerk.

Ziel dieser Anleitung: Du installierst Samba auf einem Raspberry Pi 5, legst zehn Benutzer an, verteilst sie auf drei Gruppen, richtest geschützte Freigaben mit unterschiedlichen Berechtigungen ein und erstellst zusätzlich eine öffentliche Freigabe, auf die jeder lesen und schreiben darf.

1. Voraussetzungen

Für diese Anleitung wird ein Raspberry Pi 5 mit Raspberry Pi OS verwendet. Der Raspberry Pi sollte bereits im Netzwerk erreichbar sein, zum Beispiel per SSH.

Wichtig: Für einen Dateiserver ist eine feste IP-Adresse sinnvoll. So bleibt der Samba-Server immer unter derselben Adresse erreichbar.

2. System aktualisieren

Bevor Samba installiert wird, sollte das System aktualisiert werden:

sudo apt update
sudo apt upgrade -y

Danach kann der Raspberry Pi bei Bedarf neu gestartet werden:

sudo reboot

3. Samba installieren

Installiere Samba mit folgendem Befehl:

sudo apt install samba samba-common-bin -y

Prüfe anschließend, ob der Samba-Dienst vorhanden ist:

systemctl status smbd
Hinweis: Wenn der Dienst als active angezeigt wird, läuft Samba bereits.

4. Gruppen planen

Für dieses Beispiel werden zehn Benutzer zufällig auf drei Gruppen verteilt. Die Gruppen erhalten später unterschiedliche Zugriffe auf verschiedene Freigaben.

Gruppe Benutzer Geplante Berechtigung
samba_admins user1, user4, user8 Vollzugriff auf Admin-Freigabe
samba_buero user2, user5, user7, user10 Lesen und Schreiben auf Büro-Freigabe
samba_leser user3, user6, user9 Nur Lesen auf Lese-Freigabe

5. Gruppen erstellen

Erstelle zuerst die drei Linux-Gruppen:

sudo groupadd samba_admins
sudo groupadd samba_buero
sudo groupadd samba_leser

6. Benutzer user1 bis user10 erstellen

Nun werden die zehn Benutzer erstellt. Die Option -m legt automatisch ein Home-Verzeichnis an.

sudo adduser user1
sudo adduser user2
sudo adduser user3
sudo adduser user4
sudo adduser user5
sudo adduser user6
sudo adduser user7
sudo adduser user8
sudo adduser user9
sudo adduser user10
Hinweis: Beim Anlegen fragt das System nach einem Linux-Passwort. Dieses Passwort ist zunächst nur für den Linux-Benutzer gedacht. Für Samba wird später zusätzlich ein Samba-Passwort gesetzt.

7. Benutzer den Gruppen zuordnen

Jetzt werden die Benutzer den geplanten Gruppen zugewiesen:

sudo usermod -aG samba_admins user1
sudo usermod -aG samba_admins user4
sudo usermod -aG samba_admins user8

sudo usermod -aG samba_buero user2
sudo usermod -aG samba_buero user5
sudo usermod -aG samba_buero user7
sudo usermod -aG samba_buero user10

sudo usermod -aG samba_leser user3
sudo usermod -aG samba_leser user6
sudo usermod -aG samba_leser user9

Die Gruppenzugehörigkeit kann geprüft werden, zum Beispiel für user1:

groups user1

8. Samba-Passwörter setzen

Damit sich die Benutzer an Samba anmelden können, muss für jeden Benutzer ein Samba-Passwort gesetzt werden:

sudo smbpasswd -a user1
sudo smbpasswd -a user2
sudo smbpasswd -a user3
sudo smbpasswd -a user4
sudo smbpasswd -a user5
sudo smbpasswd -a user6
sudo smbpasswd -a user7
sudo smbpasswd -a user8
sudo smbpasswd -a user9
sudo smbpasswd -a user10

Aktiviere die Benutzer anschließend für Samba:

sudo smbpasswd -e user1
sudo smbpasswd -e user2
sudo smbpasswd -e user3
sudo smbpasswd -e user4
sudo smbpasswd -e user5
sudo smbpasswd -e user6
sudo smbpasswd -e user7
sudo smbpasswd -e user8
sudo smbpasswd -e user9
sudo smbpasswd -e user10

9. Freigabeordner erstellen

Die Freigaben werden in diesem Beispiel unter /srv/samba angelegt:

sudo mkdir -p /srv/samba/admin
sudo mkdir -p /srv/samba/buero
sudo mkdir -p /srv/samba/lesen
sudo mkdir -p /srv/samba/public

10. Linux-Berechtigungen setzen

Jetzt werden Besitzer, Gruppen und Rechte der Ordner gesetzt. Samba und Linux-Rechte arbeiten zusammen. Deshalb müssen beide Seiten sauber eingerichtet sein.

Admin-Freigabe

Nur Mitglieder der Gruppe samba_admins sollen lesen und schreiben dürfen:

sudo chown root:samba_admins /srv/samba/admin
sudo chmod 2770 /srv/samba/admin

Büro-Freigabe

Mitglieder der Gruppe samba_buero sollen lesen und schreiben dürfen:

sudo chown root:samba_buero /srv/samba/buero
sudo chmod 2770 /srv/samba/buero

Lese-Freigabe

Mitglieder der Gruppe samba_leser sollen nur lesen dürfen:

sudo chown root:samba_leser /srv/samba/lesen
sudo chmod 2750 /srv/samba/lesen

Öffentliche Freigabe

Auf diese Freigabe darf jeder lesen und schreiben:

sudo chown nobody:nogroup /srv/samba/public
sudo chmod 2777 /srv/samba/public
Wichtig: Eine öffentliche Freigabe mit Schreibrechten ist bequem, aber weniger sicher. In produktiven Netzwerken sollte sie nur bewusst und kontrolliert eingesetzt werden.

11. Samba-Konfiguration sichern

Bevor die Samba-Konfiguration angepasst wird, sollte eine Sicherung erstellt werden:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

12. Samba-Konfiguration bearbeiten

Öffne die Samba-Konfiguration:

sudo nano /etc/samba/smb.conf

Füge am Ende der Datei folgende Freigaben ein:

[Admin]
   path = /srv/samba/admin
   browseable = yes
   read only = no
   valid users = @samba_admins
   force group = samba_admins
   create mask = 0660
   directory mask = 2770

[Buero]
   path = /srv/samba/buero
   browseable = yes
   read only = no
   valid users = @samba_buero @samba_admins
   force group = samba_buero
   create mask = 0660
   directory mask = 2770

[Lesen]
   path = /srv/samba/lesen
   browseable = yes
   read only = yes
   valid users = @samba_leser @samba_admins
   force group = samba_leser
   create mask = 0640
   directory mask = 2750

[Public]
   path = /srv/samba/public
   browseable = yes
   read only = no
   guest ok = yes
   guest only = yes
   force user = nobody
   force group = nogroup
   create mask = 0666
   directory mask = 0777
Erklärung: Das Zeichen @ vor einem Namen bedeutet, dass Samba eine Gruppe meint. @samba_buero steht also für alle Benutzer aus der Gruppe samba_buero.

13. Gastzugriff für öffentliche Freigabe prüfen

Damit die öffentliche Freigabe ohne Anmeldung funktioniert, sollte im Bereich [global] der Samba-Konfiguration folgender Eintrag vorhanden sein:

map to guest = Bad User

Falls der Eintrag fehlt, kann er im Abschnitt [global] ergänzt werden:

[global]
   workgroup = WORKGROUP
   map to guest = Bad User
Achtung: Den Abschnitt [global] gibt es normalerweise bereits. Er soll nicht doppelt angelegt werden. Ergänze dort nur die fehlende Zeile.

14. Samba-Konfiguration testen

Prüfe die Konfiguration auf Fehler:

testparm

Wenn keine Fehlermeldung erscheint, kann Samba neu gestartet werden:

sudo systemctl restart smbd
sudo systemctl restart nmbd

Aktiviere Samba zusätzlich für den automatischen Start:

sudo systemctl enable smbd
sudo systemctl enable nmbd

15. Freigaben im Netzwerk aufrufen

Von einem Windows-PC aus kannst du die Freigaben im Explorer öffnen. Drücke Windows-Taste + R und gib die IP-Adresse des Raspberry Pi ein:

\\192.168.1.50

Ersetze 192.168.1.50 durch die echte IP-Adresse deines Raspberry Pi.

Direkter Zugriff auf einzelne Freigaben:

\\192.168.1.50\Admin
\\192.168.1.50\Buero
\\192.168.1.50\Lesen
\\192.168.1.50\Public
Tipp: Für Admin, Buero und Lesen meldest du dich mit Benutzername und Samba-Passwort an. Die Freigabe Public sollte ohne Anmeldung erreichbar sein.

16. Netzlaufwerk unter Windows verbinden

Eine Freigabe kann dauerhaft als Netzlaufwerk eingebunden werden:

  1. Windows Explorer öffnen
  2. Rechtsklick auf Dieser PC
  3. Netzlaufwerk verbinden auswählen
  4. Laufwerksbuchstaben auswählen
  5. Pfad eintragen, zum Beispiel \\192.168.1.50\Buero
  6. Bei Bedarf Verbindung mit anderen Anmeldeinformationen herstellen aktivieren
  7. Mit Samba-Benutzer und Passwort anmelden

17. Tabelle der gängigsten Berechtigungen

Die folgenden Berechtigungen werden bei Samba-Servern häufig verwendet. Wichtig ist die Kombination aus Linux-Rechten und Samba-Einstellungen.

Berechtigung Linux-Beispiel Samba-Beispiel Bedeutung
Nur Besitzer Vollzugriff chmod 700 valid users = user1 Nur ein bestimmter Benutzer darf zugreifen.
Gruppe lesen und schreiben chmod 2770 read only = no Mitglieder einer Gruppe dürfen Dateien lesen, erstellen, ändern und löschen.
Gruppe nur lesen chmod 2750 read only = yes Mitglieder einer Gruppe dürfen Dateien sehen und öffnen, aber nicht ändern.
Öffentlich lesen chmod 755 guest ok = yes Jeder darf Dateien anzeigen, aber nicht unbedingt schreiben.
Öffentlich lesen und schreiben chmod 777 read only = no Jeder darf Dateien lesen, erstellen, ändern und löschen.
Neue Dateien mit Gruppenrecht chmod 2770 force group = gruppenname Neue Dateien behalten die gewünschte Gruppenzugehörigkeit.

18. Bedeutung wichtiger Samba-Optionen

Option Bedeutung
path Lokaler Ordner auf dem Raspberry Pi, der freigegeben wird.
browseable Legt fest, ob die Freigabe in der Netzwerkübersicht sichtbar ist.
read only Steuert, ob die Freigabe nur lesbar oder beschreibbar ist.
valid users Legt fest, welche Benutzer oder Gruppen zugreifen dürfen.
guest ok Erlaubt Zugriff ohne Benutzeranmeldung.
create mask Legt Standardrechte für neu erstellte Dateien fest.
directory mask Legt Standardrechte für neu erstellte Ordner fest.
force group Erzwingt eine bestimmte Gruppe für neue Dateien und Ordner.

19. Testdateien anlegen

Zum Testen können in den Freigaben einfache Dateien angelegt werden:

echo "Admin-Freigabe" | sudo tee /srv/samba/admin/test-admin.txt
echo "Buero-Freigabe" | sudo tee /srv/samba/buero/test-buero.txt
echo "Lese-Freigabe" | sudo tee /srv/samba/lesen/test-lesen.txt
echo "Public-Freigabe" | sudo tee /srv/samba/public/test-public.txt

Danach die Rechte noch einmal passend setzen:

sudo chown -R root:samba_admins /srv/samba/admin
sudo chown -R root:samba_buero /srv/samba/buero
sudo chown -R root:samba_leser /srv/samba/lesen
sudo chown -R nobody:nogroup /srv/samba/public

20. Häufige Fehler

Windows-Tipp: Alte Samba-Anmeldungen können in der Windows-Anmeldeinformationsverwaltung entfernt werden. Danach fragt Windows beim nächsten Zugriff wieder nach Benutzername und Passwort.

21. Nützliche Befehle zur Kontrolle

Befehl Zweck
testparm Prüft die Samba-Konfiguration.
systemctl status smbd Zeigt den Status des Samba-Dienstes.
sudo systemctl restart smbd Startet den Samba-Dienst neu.
groups user1 Zeigt die Gruppen eines Benutzers.
ls -la /srv/samba Zeigt Rechte und Besitzer der Freigabeordner.
sudo pdbedit -L Listet Samba-Benutzer auf.

22. Fazit

Der Raspberry Pi 5 ist nun als Samba-Server eingerichtet. Es gibt drei geschützte Freigaben mit Gruppenrechten und eine öffentliche Freigabe für einfachen Austausch im Netzwerk. Durch die Kombination aus Linux-Gruppen, Dateirechten und Samba-Konfiguration lässt sich sehr genau steuern, wer welche Dateien lesen oder ändern darf.