Machen Sie den Raspi zu einem Dateiserver!
Anleitung zur Samba-Dateifreigabe auf dem Raspberry Pi OS

Das Raspberry Pi Compute Module 4 und 5 (im Folgenden CM4 und CM5) kann auch als Dateiserver fungieren, auf den sowohl von Windows als auch von macOS aus über den Samba-Dienst zugegriffen werden kann.
Er fungiert als Server und ermöglicht mehreren Client-PCs den gleichzeitigen Zugriff auf Dateien.

Der Samba-Dienst allein ist praktisch für die schnelle Dateifreigabe innerhalb des Hauses sowie für den internen Gebrauch.
Die Einstellungen für die Dateiberechtigung mögen etwas kompliziert erscheinen, aber wir haben versucht, sie anhand konkreter Beispiele so einfach wie möglich zu erklären.
Wenn Sie den Code in der Reihenfolge des Artikels ausführen, wird er funktionieren, also probieren Sie ihn bitte aus.

Die Umwelt dieser Zeit

Voraussetzung für die Installation von Samba ist, dass das Betriebssystem des Raspberry Pi bereits gebootet und der Ersteinrichtungsassistent abgeschlossen wurde.

  • Raspberry Pi CM4 (eMMC32GB, 8GB RAM) Raspberry Pi OS bookworm
    Raspberry Pi CM5 (eMMC64GB, 8GB RAM) Ubuntu 24.04LTS
  • Verbinden Sie den Router mit einem kabelgebundenen LAN-Kabel
  • Tastatur und Monitor anschließen

Die freizugebenden Ordner wurden auf die folgenden Bedingungen eingestellt

  • Gemeinsame Ordner werden direkt unter /home in der eMMC erstellt

Es handelt sich um eine Umgebung, auf die mit einer bestimmten Benutzerauthentifizierung zugegriffen wird.
Diesmal befindet sie sich nicht in einem Laufwerk, das gemountet werden muss, wie z.B. eine externe Festplatte, so dass Sie den Betrieb sofort nach der Installation des Betriebssystems testen können.

Die Netzwerkverbindung wird für kabelgebundenes LAN empfohlen, da nur ein LAN-Kabel angeschlossen werden muss.
Für Wi-Fi konfigurieren Sie bitte Ihren Heimrouter (im Haus) für die Teilnahme vor.

Am einfachsten ist es, wenn Sie eine Tastatur, eine Maus und einen Monitor bereitstellen und diese über ein kabelgebundenes LAN mit dem Netzwerk verbinden.
Es ist auch möglich, das Raspberry Pi OS lite zu verwenden und nur mit einer Wi-Fi-Umgebung und einer SSH-Verbindung zu arbeiten. Allerdings fehlen in der lite-Version viele Module und Bibliotheken, so dass das Gleiche wie in diesem Artikel nicht funktioniert. Bitte seien Sie vorsichtig.

Der Inhalt des Artikels wird mit CM4+Raspberry Pi OS erklärt.
Es wurde zusätzlich auf CM5+Ubuntu24.04LTS getestet.
Teilweise war die Autorisierung der freigegebenen Dateien unter Ubuntu anders, aber der Rest der Operation war derselbe wie im Artikel beschrieben. Führen Sie einfach die Befehle aus, um es zu erstellen. Bitte probieren Sie es aus.

Samba installieren

Installieren Sie zunächst Samba über die Befehlszeile.
Wenn Sie über eine Desktop-Umgebung verfügen, arbeiten Sie in einer Terminal-Anwendung; dasselbe gilt für eine CUI-Umgebung (nur Befehlszeile) oder eine SSH-Verbindung.

apt updateist das einzige, was Sie zuerst tun müssen. Es ist wichtig, die Installationsquelle aktuell zu halten, um unerwünschte Fehler zu vermeiden.
In diesem Fall werden wir auch full-upgradeausführen, bevor wir das Samba-Paket installieren.

sudo apt update
sudo apt full-upgrade
sudo apt install samba samba-common-bin smbclient cifs-utils

Obwohl für die Samba-Installation selbst nur apt install samba erforderlich ist, ist es bequem, sie wie oben beschrieben als Set zu installieren.

Die dieses Mal bestätigte Version von Samba ist Series 4.

samba --version
Version 4.17.12-Debian

Erstellen Sie ein eigenes gemeinsames Verzeichnis

Raspberry Pi OS installiert auf CM4/5 interner eMMC. Ich werde die Dateien darin freigeben.

Erstellen Sie ein gemeinsames Verzeichnis (Ordner), damit es von anderen Rechnern aus angezeigt und bearbeitet werden kann.
Ich habe es der Übersichtlichkeit halber „share“ genannt.

Hier wird es direkt unter /home auf der gleichen Ebene wie das Home-Verzeichnis erstellt.
In diesem Fall wird zur Verdeutlichung auf dem Raspberry Pi /home/shareverwendet, aber es ist besser, /srv/samba/share zu verwenden.

sudo mkdir /home/share

Der Eigentümer und die Gruppe sind zunächst root, werden aber später geändert.
Wir erstellen zunächst die Benutzer und Gruppen, die mit Samba verwendet werden sollen, und ändern dann die Eigentümerschaft, um Rechte mit erhöhter Sicherheit zu vergeben.

Benutzer anlegen und Passwörter festlegen

Wenn der in smb.conf konfigurierte gemeinsame Ordner in der Netzwerkliste der anderen Rechner erscheint, ist er zugänglich.
Sie können sie als Gäste zugreifen lassen, aber dieses Mal werden wir einen neuen Benutzer erstellen, der authentifiziert werden muss.

Zu meiner großen Verwirrung wird Samba oft mit dem gleichen Anmeldenamen wie das Raspberry Pi-Betriebssystem beschrieben (z.B. pi), was sehr verwirrend sein kann.

Sie können denselben Benutzer wie den Benutzer auf dem Raspberry Pi OS verwenden, aber es ist besser, einen separaten Benutzer speziell für Samba zu erstellen und den Benutzer mit diesem Benutzernamen und Passwort auf das System zugreifen zu lassen.
Dieser Benutzer muss jedoch zuerst auf dem Raspberry Pi OS angelegt werden.

Benutzer zur Systemseite hinzufügen

Die Registrierung eines neuen Benutzers, der nicht auf der Betriebssystemseite angemeldet ist, wird vor smbpasswd durchgeführt.
Erstellen Sie einen neuen Benutzer als dedizierten Benutzer für die Verwendung mit Samba.
Da es sich um einen dedizierten Benutzer handelt, muss er nicht in der Lage sein, sich beim Raspberry Pi-Betriebssystem anzumelden, daher habe ich ihn mit Optionen erstellt (kein Home-Verzeichnis, keine Anmeldeoption).

sudo adduser --system --group --no-create-home ユーザー名

Wenn er ausgeführt wird, sieht er wie folgt aus.

sudo adduser --system --group --no-create-home cm4smb
システムユーザ `cm4smb' (UID 111) を追加しています...
新しいグループ `cm4smb' (GID 123) を追加しています...
新しいユーザ `cm4smb' (UID 111) をグループ `cm4smb' に追加しています...
Not creating `/nonexistent'.

Es ist möglich, den angemeldeten Benutzer (z.B. pi) zu einem Samba-Benutzer zu machen, aber das würde die Dinge kompliziert machen, wenn Sie Berechtigungen trennen oder Protokolle einsehen möchten. Natürlich ist dies auch für Sicherheitszwecke ungeeignet.

Wenn es nur innerhalb eines geschlossenen Haushalts von einer Person verwendet wird, ist es einfach und ich habe es anfangs oft benutzt.
Obwohl es nur anfangs lästig ist, ist es nicht empfehlenswert, den angemeldeten Benutzer zu einem Samba-Benutzer zu machen, denn es ist einfacher, das Gegenteil zu verstehen, wenn die Benutzer getrennt sind.

Benutzer und Kennwörter für Samba einrichten

Nachdem wir nun einen neuen Benutzer (in diesem Fall cm4smb) auf der Betriebssystemseite hinzugefügt haben, können wir ihn nun zu Samba hinzufügen.

sudo smbpasswd -a cm4smb

Nach der Ausführung werden Sie aufgefordert, ein Passwort festzulegen.
Es ist eine gute Idee, ein neues Passwort getrennt von dem Benutzer festzulegen, der sich gerade anmeldet.

New SMB password:
Retype new SMB password:
Added user cm4smb.

Fahren Sie fort, um den von Ihnen erstellten Benutzer zu aktivieren.

sudo smbpasswd -e cm4smb

Zur Gruppe sambashare hinzufügen

Fügen Sie den lokalen Benutzer (in diesem Fall raspida) und den von Ihnen erstellten Benutzer (in diesem Fall cm4smb) zur Gruppe sambasharehinzu.
sambashare ist bei dieser Installation von Anfang an vorhanden. Wenn Sie ihn nicht haben, erstellen Sie ihn. ( sudo addgroup sambashare)

sudo usermod -aG sambashare raspida
# 現セッションを変更して反映
newgrp sambashare
# もしくはログオフ、再起動

Auf diese Weise kann ein mit dem Raspberry Pi OS angemeldeter Benutzer (in diesem Fall raspida) lokal auf das Verzeichnis zugreifen, auch wenn das Verzeichnis die Berechtigung 0770 hat, da er zur selben Gruppe gehört.

Erteilen von Berechtigungen für das erstellte Verzeichnis

Die Berechtigungen (Permissions) des Verzeichnisses /home/share, das Sie gerade erstellt haben, sollten 0770 sein.
Wenn Sie sich in einer vollständig lokalen Umgebung befinden, sind die vollen Berechtigungen von 0777 für Sie vielleicht nicht von Belang, aber wir werden mit 0770 fortfahren.
Wenn Sie später unter smb.conf eine sambashare-Gruppe einrichten, haben Sie vollen Zugriff wie die Berechtigungen der Eigentümergruppe.

Die Berechtigung lautet 0770, der Besitzer ist der neu erstellte Benutzer und die besitzende Gruppe ist sambashare.

sudo chmod 0770 /home/share
sudo chown cm4smb:sambashare /home/share

Nun haben wir die Vorarbeit geleistet.
Lassen Sie uns als nächstes die Konfigurationsdatei bearbeiten ( smb.conf).

Hinzufügen zur Samba-Konfigurationsdatei (.conf)

Die Samba-Konfiguration ist unter smb.conf zu beschreiben. Normalerweise gibt es keine grafische Oberfläche.

Sichern Sie die Standard-Conf-Datei, die von Anfang an existiert.
Wenn Sie einen Fehler machen und später den Überblick verlieren, können Sie ihn mit einem Schlag rückgängig machen.

Sicherung der conf-Dateien

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

Beschreibung in smb.conf

Wir werden beschreiben, wie wir auf den gemeinsamen Ordner unter smb.conf zugreifen wollen.

sudo nano /etc/samba/smb.conf

Legen Sie die folgenden Bedingungen fest

/home/share → Ich möchte eine Verbindung herstellen und mit dem hinzugefügten Benutzer und Passwort lesen/schreiben können

Fügen Sie die folgende Konfiguration in die letzte Zeile der geöffneten conf-Datei ein.

[share]
    comment = Share
    path = /home/share
    browseable = Yes
    read only = No
    valid users = cm4smb
    force group = sambashare
    create mask = 0666
;    force create mode = 0666
    directory mask = 0777

Das Freigabeverzeichnis ist auf valid users = cm4smbeingestellt, weil wir es so einrichten wollen, dass nur der Benutzer, der es erstellt hat (cm4smb), Verbindungen herstellen kann.
Da es sich jedoch auch in der Gruppe sambashare ( force group = sambashare) befindet, können auch lokale Benutzer (in diesem Fall raspida) darauf zugreifen, und kein anderer Samba-Benutzer.

Ich erkläre es in der Reihenfolge von oben nach unten.

Da der Ordner dieses Mal auf SHARE eingestellt war, wurde auch der Name des Abschnitts auf denselben [share] eingestellt.

Einstellung (eines Computers oder einer Datei, etc.)Beschreibung.
comment=Ein Kommentar, der angezeigt wird, wenn die Datei im Dateibrowser betrachtet wird. Er kann weggelassen werden.
path =Der erstellte SHARE-Ordner wird durch einen absoluten Pfad angegeben.
browsable =Setzen Sie auf Ja, um die Datei im Dateibrowser anzuzeigen (zu durchsuchen). Wenn Sie die Datei nicht anzeigen möchten, setzen Sie sie auf Nein.
read only =Es wird lesbar und beschreibbar mit no, was gleichbedeutend ist mit writable = yes. read onlyDie Grundeinstellung ist, dass Sie es mit
valid users =Für den angegebenen Benutzer ist eine Authentifizierung erforderlich.
force group =Lokale Benutzer, die der gleichen Gruppe angehören, können ebenfalls auf das System zugreifen.
create mask =Da es sich um eine Maske handelt, hat sie eine etwas andere Bedeutung als die tatsächlichen Dateiberechtigungen.
Dies ist der maximale Wert, der nach der Berechnung der Berechtigung gewährt werden kann.
directory mask =Dies ist eine verzeichnisseitige Einstellung, die die gleiche Bedeutung wie create mask hat.
;force create mode =Setzen Sie dies, wenn Sie die angeforderte Berechtigung erzwingen möchten (z.B. 0666).

*Ein Semikolon (;) in smb.conf kommentiert eine Einstellung aus. Ein Schrägstrich (#) kommentiert eine Zeichenkette aus.

force group = sambasharezu sambashare. Dadurch können lokale Benutzer, die der gleichen Gruppe angehören, darauf zugreifen.

create mask = 0666und directory mask = 0777sind Masken, so dass sich ihre Bedeutung leicht von den tatsächlichen Dateiberechtigungen unterscheidet.
Wenn Sie die gewünschten Berechtigungen (z.B. 0666) erzwingen wollen, müssen Sie zusätzlich force create mode = 0666 schreiben.
Es ist mit einem Semikolon auskommentiert, aber Sie können es bei Bedarf entfernen, um es zu aktivieren.

Ich werde nicht näher auf die Maske eingehen, aber ich habe sie angegeben, weil der Standardwert 0744 und 0755 in Raspberry Pi OS und Ubuntu’s Samba ist.
Die Erstellungsmaske muss auch entsprechend den Berechtigungen des erstellten gemeinsamen Ordners und den Berechtigungsregeln, die Sie gewähren möchten, geändert werden.

*Ein Semikolon (;) in smb.conf kommentiert eine Einstellung aus. Ein Schrägstrich (#) kommentiert eine Zeichenkette aus.

Conf-Datei prüfen

Überprüfen Sie die Datei smb.conf, die Sie angehängt haben, auf Fehler.
testparmDer Befehl ist ein sehr einfaches Programm zur Überprüfung der conf-Datei.

testparm

Loaded services file OK.Wenn Sie eine Fehlermeldung erhalten, ist dies in Ordnung.
Wenn es Fehler gibt, korrigieren Sie diese bitte. Sie werden wahrscheinlich doppelte Leerzeichen, Rechtschreibfehler usw. finden. Dies dient dazu, Fehler zu finden.

Damit ist die gesamte Einrichtung abgeschlossen.

Samba-Dienst neu starten

Da nun alles eingerichtet ist, starten Sie nur den Dienst neu, nicht das System. Es ist in Ordnung, das System neu zu starten.

sudo systemctl restart smbd nmbd

Greifen Sie von einem anderen PC/Mac darauf zu, um zu sehen, ob es funktioniert.

Versuchen Sie den Zugriff von einem anderen Rechner aus

Geben Sie die Adresse des Raspberry Pi mit installiertem Samba in das Adressfeld des Windows Explorers ein.
Wenn Sie unter macOS arbeiten, verwenden Sie die Befehlstaste (⌘) + K im Finder, um das Adressfeld für die Verbindung mit dem Server einzugeben.

Windows: ¥¥192.168.1.12
macOS:smb://192.168.1.12

Alternativ können Sie auch einen Hostnamen anstelle einer IP-Adresse verwenden.

Windows: ¥¥rpicm4.local
macOS:smb://rpicm4.local

smb.confWenn Sie browsable = noauf eingestellt haben, können Sie eine Verbindung herstellen, indem Sie direkt den entsprechenden Path (Pfad) angeben. ( ¥¥rpicm4.local¥share)

Versuchen Sie, eine Datei zu schreiben

Ich habe jede der entsprechenden Dateien von meinem PC/Mac kopiert.
Was die Berechtigungen und Eigentümer betrifft, so gehören die Dateien jetzt wie konfiguriert cm4smb:sambashareund die Dateiberechtigungen sind 666.
Das Verzeichnis hat den Wert 777.
Das von dem lokalen Benutzer (raspida) erstellte Verzeichnis hat den Eigentümer und die Gruppe raspidaund die Berechtigungen 755.

Versuchen Sie, auch in Ihrer lokalen Umgebung zu browsen.browsable = YesDann sollten Sie den Inhalt sehen und lesen können.
Wenn Sie mit einer Fehlermeldung nicht auf den gemeinsamen Ordner zugreifen können, sind die Einstellungen wahrscheinlich nicht detailliert genug oder die Berechtigungen für den von Ihnen erstellten gemeinsamen Ordner sind anders.
Bitte überprüfen Sie das noch einmal.

Auf CM5 + Ubuntu 24.04 waren die Dateiberechtigungen sogar bei den gleichen Einstellungen 664, und obwohl Sie sowohl auf Samba als auch lokal mit Gruppenberechtigungen lesen und schreiben können, waren die Ergebnisse etwas anders.

Zusammenfassung der Dateiberechtigungen (rwx)

Die Dateiberechtigungen (File Permissions), die in Mac- und Linux-Systemen häufig vorkommen, sind schwierig.
Zum Beispiel ist rw-rw-rw-in diesem Fall 666 in numerischer Darstellung. Es ist ein Zustand, in dem jeder lesen und schreiben kann.

Bitte beachten Sie die folgende kurze Zusammenfassung.

Bedeutung der Erlaubnis-Symbole

SymbolBedeutungIm Falle einer DateiIm Falle eines Verzeichnisses
RadiuslesenLesbar (Inhalt wird angezeigt)Kann eine Liste von Dateien im Verzeichnis
LOLSchreiben SieBeschreibbar (ändern und löschen)Erstellen und Löschen von Dateien möglich
ein Unbekannterausführen.Ausführbar (z.B. Programme)Kann Programme ausführen
Kann Verzeichnisse „betreten“.

Betreff der Behörde und ls -l anzeigen

Gegenstand (der Besteuerung, etc.)Beschreibung.ls -l Beispiel anzeigen
Besitzer(Benutzer)Ersteller/Besitzer der Dateirwx------ Die ersten 3 Zeichen von
GruppeGruppenmitglied, zu dem der Besitzer gehört---rwx--- Die mittleren drei Buchstaben von
AndereAlle anderen Benutzer------rwx Die letzten 3 Zeichen von

Numerischer Ausdruck (wird vom Befehl chmod usw. verwendet)

Symbolnumerischer WertBedeutung
Radius4Lesen (z.B. durch einen Scanner)
LOL2Eingabe (z.B. in ein Formular)
ein Unbekannter1Ausführung (z.B. Programm)

Zahlen können summiert und als dreistellige Zahlen ausgedrückt werden
z.B. rwx = 4+2+1 = 7
z.B. rw-rw-rw-= 666

Beispiele für numerische Ausdrücke

Numerisches BeispielBedeutungBeispiel für einen Befehl
755Besitzer: Alle, Gruppen & Andere: Lesen + Ausführenchmod 755 ファイル名
644Besitzer: lesen/schreiben, andere: nur lesenchmod 644 ファイル名
700Alle Privilegien nur für Eigentümerchmod 700 sample.txt

Grund für 0770 in /home/share.

In diesem Fall wurde /home/share als 0770 autorisiert, d.h. der Eigentümer und die Gruppe haben alle Rechte und die anderen haben keine Rechte.
Dies ist auf der Seite des Betriebssystems, die sich wiederum von der von Samba unterscheidet. An dieser Stelle wird es kompliziert.
0770, d.h. ursprünglich sind andere Benutzerrechte 0, so dass es nicht möglich ist, zu lesen oder zu schreiben, aber dieses Mal hat Samba ihn in die Gruppe sambashare gezwungen.
Als die Datei geschrieben wurde, wurde sie in die Gruppe sambashare überschrieben und die Gruppenrechte (rwx=7) in 770 waren zum Lesen und Schreiben verfügbar, so dass sogar der lokale Benutzer (in diesem Fall raspida) lesen und schreiben konnte.

Wenn die Berechtigungen auf 0777 gesetzt sind, kann jeder die volle Kontrolle über das System haben und es ist nicht problematisch, aber aus Sicherheitsgründen ist es trotzdem nicht empfehlenswert. Wir möchten, dass die Berechtigungen auf der lokalen Seite (Betriebssystemseite) so wenig wie möglich auf 07777 gesetzt werden.
In diesem Fall wurde das freigegebene Verzeichnis unter 0770, auf das kein anderer Benutzer Zugriff hat, auch der Gruppe sambashare mit einem lokalen Benutzer hinzugefügt, so dass auf Samba nur cm4smb, das eine Authentifizierung erfordert, auf das Verzeichnis zugreifen kann, aber auf der lokalen Seite können auch angemeldete Benutzer dessen Inhalt bearbeiten. Auf der lokalen Seite kann sogar ein angemeldeter Benutzer den Inhalt des Verzeichnisses bearbeiten.

Es gibt viele mögliche Muster für diese Berechtigung, je nachdem, wie sie verwendet wird. Wenn Sie auf der lokalen Seite keine Berechtigungen benötigen, ist das Konzept vergleichsweise einfacher, da Sie nur die Samba-Seite berücksichtigen müssen.
Wenn Sie smb.conf ändern, müssen Sie den Dienst jedes Mal neu starten, um die Änderungen zu übernehmen.

Garbled Characters

Und schließlich, wenn Ihre Samba-Dateien unter Windows oder macOS verstümmelt sind, fügen Sie Folgendes in den Abschnitt [global]ein.
Es gibt kein Problem mit der Beschreibung, daher empfehlen wir Ihnen, sie hinzuzufügen.

#[global]の下に2行を追加。Unix系、Win系用の文字化け対策
   unix charset = UTF-8
   dos charset  = CP932

Wenn Sie einen Server für die Dateifreigabe auf Ihrem Raspberry Pi haben möchten, reicht es aus, Samba zu installieren.
In Anbetracht der Dateizugriffsrechte war der Samba-Dienst Dateifreigabe ein wenig zu ausführlich.


Artikel beigetragen von Raspida

Raspberry Pi-Informationsseite, die auch von Nicht-Ingenieuren genutzt werden kann raspida.com eine Raspberry Pi-Informationsseite, die auch für Nicht-Ingenieure interessant ist und mit der sie umgehen können. Er schreibt auch technische Blogartikel auf der PiLink-Website über den Raspberry Pi für den industriellen Einsatz.