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.
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.
sudo-RechtenBevor 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
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
active angezeigt wird, läuft Samba bereits.
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 |
Erstelle zuerst die drei Linux-Gruppen:
sudo groupadd samba_admins
sudo groupadd samba_buero
sudo groupadd samba_leser
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
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
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
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
Jetzt werden Besitzer, Gruppen und Rechte der Ordner gesetzt. Samba und Linux-Rechte arbeiten zusammen. Deshalb müssen beide Seiten sauber eingerichtet sein.
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
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
Mitglieder der Gruppe samba_leser sollen nur lesen dürfen:
sudo chown root:samba_leser /srv/samba/lesen
sudo chmod 2750 /srv/samba/lesen
Auf diese Freigabe darf jeder lesen und schreiben:
sudo chown nobody:nogroup /srv/samba/public
sudo chmod 2777 /srv/samba/public
Bevor die Samba-Konfiguration angepasst wird, sollte eine Sicherung erstellt werden:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Ö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
@ vor einem Namen bedeutet, dass Samba eine Gruppe meint. @samba_buero steht also für alle Benutzer aus der Gruppe samba_buero.
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
[global] gibt es normalerweise bereits. Er soll nicht doppelt angelegt werden. Ergänze dort nur die fehlende Zeile.
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
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
Admin, Buero und Lesen meldest du dich mit Benutzername und Samba-Passwort an. Die Freigabe Public sollte ohne Anmeldung erreichbar sein.
Eine Freigabe kann dauerhaft als Netzlaufwerk eingebunden werden:
Dieser PCNetzlaufwerk verbinden auswählen\\192.168.1.50\BueroVerbindung mit anderen Anmeldeinformationen herstellen aktivierenDie 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. |
| 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. |
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
smbpasswd -a für Samba aktiviert.smb.conf wurde der Gruppenname ohne @ eingetragen.| 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. |
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.