Raspberry Pi: Netzwerk-Ordner teilen mit Windows-Rechnern

Egal zu welchem Zweck ein Raspberry Pi vordergründig eingesetzt wird, ein geteiltes Verzeichnis ist eine Basisfunktion in jedem Heimnetzwerk und ein durchgehend betriebener Pi eignet sich hervorragend diese Aufgabe nebenbei zu übernehmen. Diese kurze Anleitung eignet sich für die Erstellung eines geteilten Verzeichnisses mittels Samba im Netzwerk, welches als NAS (network attached storage) für Windows- und Linuxgeräte gleichermaßen ansprechbar ist.

Voraussetzungen

  • Raspberry Pi
  • SD-Karte bzw. MicroSD-Karte (je nach Modell)
  • Ein Heimnetzwerk, üblicherweise über einen Router
  • Raspbian Betriebssystem (Aufspielen des Betriebssystems auf die Speicherkarte wurde bereits zu beginn dieser Anleitung ausführlich beschrieben)
  • Eines oder mehrere Geräte mit denen wir auf das Netzwerk zugreifen

Installation

Im Folgenden wird davon ausgegangen, daß Raspbian installiert, das Pi im Netzwerk erreichbar und wir mittels SSH darauf aufgeschaltet sind, also einen Zugang zur Konsole haben. Die ersten Schritte, von der Installation von Raspbian, dem Aufschalten im Netzwerk und Ansteuerung via SSH, wurden bereits im Rahmen dieser Anleitung ausführlich erklärt. Bitte schaut auch dort nach falls etwas unklar sein sollte, bevor ihr mit den weiteren Schritten fortfährt.

Wie zuvor erwähnt verwenden wir Samba zur Bereitstellung des Netzverzeichnisses. Die Installation erfolgt also mittels der folgenden Befehlszeilen.

sudo apt-get update

sudo apt-get install samba samba-common-bin

Nach der Installation sind wir bereit die Konfigurationsdateien anzupassen und rufen dazu „nano“ als Texteditor auf.

sudo nano /etc/samba/smb.conf

In der Datei suchen wir die folgenden beiden Zeilen und stellen die Parameter ein.

workgroup = WORKGROUP

wins support = yes

Als Namen für eure „Workgroup“ könnt ihr natürlich einstellen was ihr möchtet. Workgroup ist dabei der Parameter, der an allen Windows-Rechnern standardmäßig voreingestellt ist.

Verzeichnis einrichten

Das Shareverzeichnis richten wir am besten innerhalb des Homeverzeichnis des Standardbenutzers „pi“ ein. Wenn ihr hier ein anderes Setup mit anderen Benutzern verwendet, könnt ihr dies natürlich entsprechend abwandeln. Zunächst stellen wir sicher, daß wir uns im richtigen Verzeichnis befinden.

cd /home/pi

Und erzeugen ein neues Verzeichnis, hier „pi-share“ genannt.

 mkdir pi-share

Nachdem das Verzeichnis steht können wir nun die Konfiguration von Samba anpassen.

sudo nano /etc/samba/smb.conf

Wir blättern ganz ans Ende der Konfigurationsdatei und fügen folgende Zeilen hinzu.

[Pi-Share]
comment=Raspberry Pi Share
path=/home/pi/pi-share
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no

Die letzte Zeile schauen wir uns dabei noch einmal genauer an. Der Standardwert „no“ führt dazu, daß nur angemeldete Benutzer auf unseren neu erzeugten Netzwerkspeicher zugreifen können. Genauer gesagt sind dies Benutzer, die auf eurem Raspberry Pi angelegt sind (nicht dort wo der Zugriff ausgeht). Es ist allerdings kein Problem mehrere Nutzer über den Standardbenutzer „pi“ und demselben entsprechenden Passwort anzumelden. Es erlaubt uns allerdings auch Zugriffsrechte für jeden Benutzer individuell einzustellen. Die andere Möglichkeit wäre, einfach „public=yes“ einzusetzen, dann wäre eine Benutzeranmeldung nicht erforderlich und jeder Rechner mit Zugriff auf euer Heimnetzwerk hätte unbeschränkten Zugriff auf euer Verzeichnis. Bitte seid euch aber im Klaren darüber, daß dies Gefahren birgt, falls auf euer Heimnetzwerk irgendwie von außen zugegriffen werden kann. Normalerweise ist man durch ein Router-NAS geschützt aber es könnte andere Geräte in eurem Netzwerk geben, die eingehende Verbindungen zulassen.

Wenn wir diese Entscheidung getroffen haben können wir Samba mitteilen, welche Benutzer als Samba-Benutzer für den Zugriff auf das Netzlaufwerk eingerichtet werden sollen. Standardmäßig führen wir dies mit dem in Raspbian voreingestellen Nutzer „pi“ durch.

sudo smbpasswd -a pi

Danach das Passwort eingeben (für den Benutzer pi normalerweise „raspberry“). Falls ihr mehrere Benutzer eingerichtet habt, so führt diesen Schritt einfach entsprechend für jeden Weiteren aus.

Und voilá, euer Netzwerkspeicher ist fertig eingerichtet und kann bereits durch andere Geräte in eurem Netzwerk angesteuert werden unter folgenden Verbindungsdetails:

Domäne: raspberrypi
Benutzer: pi
Passwort: raspberry

(beziehungsweise was Ihr als Benutzer und Passwort alternativ eingestellt habt)

Unter Windows 7 / 8 & 10 verwendet ihr am besten den Windows-Explorer und die Funktion „Netzlaufwerk verbinden“.

Netzlaufwerk_verbinden
Netzlaufwerk verbinden

Bitte beachten, bei der Anmeldung müssen wir einen Benutzer auswählen, der auf unserem Raspberry Pi eingerichtet ist.

Verbinden_als_Benutzer
Verbinden als Benutzer pi

Weiterführende Tipps

Falls ihr euren Raspberry Pi bereits als Medienserver oder Musikserver verwendet, wie weiter oben verlinkt, dann könnt ihr euer Musikverzeichnis auch über Samba im Netzwerk erreichbar machen, was das Bestücken eurer Medienbibliothek natürlich extrem vereinfacht und Interkonnektivität zu allen anderen eurer Geräte herstellt wie Laptops, Smartphones usw.

19 Gedanken zu “Raspberry Pi: Netzwerk-Ordner teilen mit Windows-Rechnern

  1. Moin,
    habe den Pi seit einiger Zeit problemlos als smb-server laufen. Wollte nun einen zweiten benutzer Hinzufügen, dabei ist mir aufgefallen das ich mit beiden Nutzern zugriff auf beide Verzeichnisse habe, was natürlich nicht sein soll. die Freigabeordner gehören nur dem jeweiligen Benutzer. Wie komme ich um diesen „Fremdzugriff“ von andeen nutzern herum?

    • Hallo,
      die Antwort findest du in dieser Anleitung zu Samba. Dort bitte insbesondere den Absatz Users and Groups und insbesondere den Parameter valid users = username anschauen. Damit sollte es klappen.

  2. Hallo Patrick,
    vielen Dank für die super Anleitung.
    Ich würde gerne Dateien in diesem Verzeichnis auch löschen bzw. verschieben können.
    Muss dazu die Konfigurationsdatei angepasst werden?

  3. Hallo,
    Danke erstmal für die Anleitung, leider bin ich noch Anfänger und habe da noch ein paar Fragen.
    Ich konnte als erstes keine Verbindung herstellen, als ich public=no auf public=yes gestellt hatte, hab ich unter Windows das LW gesehen und bin wie beschrieben vorgangen. Ich wollte als nächstes eine Datei von Windows auf den Pfad schieben und bekam dann die Meldung sie haben keine Berechtigung. Was mache ich falsch? VG

    • Prüfe mal die Schreibberechtigung auf das Share-Verzeichnis.

      sudo chmod 777 /home/pi/pi-share

      Als zweites teste mal mit der Einstellung „public=no“ und versuche dann das Verzeichnis wie oben beschrieben zu mounten. Windows gibt bei der Verbindung oft die Einstellungen des angemeldeten Nutzers in das Netzwerk mit, was dann zu solchen Berechtigungsfehlern führt.

      Desweiteren kann man noch mit einem weiteren Parameter Gästen Schreibzugriff gewähren.

      guest ok = yes

      Hoffe das hilft.

  4. Ahoi,

    als erstes möchte ich mich für diese tolle Anleitung bedanken! Dies ist mein erster näherer Kontakt mit einem Linux-System, also entschuldige diese DAU Fragen.
    Mein Plan war eine USB Festplatte über den Raspi freizugeben, damit ich einfach im Netzwerk auf meine Daten zugreifen kann. Dies hat soweit auch gut funktioniert, zumindest das lesen. Wenn es aber an das Ändern der bestehenden oder neuer Daten geht habe ich keine Berechtigung. Selbst wenn ich direkt mit dem Raspi auf die Platte zugreife kann ich keine Daten ändern oder löschen. Ich hatte schon ein bisschen gegooglet, aber von den Ansätzen hat leider nichts funktioniert.
    Ich melde mich mit meinem Win Rechner, wie oben beschrieben, als Beutzer „pi“ auf dem Raspi an, wie kann ich diesem Benutzer den Vollzugriff erteilen?

    Danke und Grüße
    Leon

    • Das könnte mehrere Gründe haben. Wie hast du die Festplatte am Pi gemountet?
      Wenn USB-Speicher am Pi automatisch gemountet werden sollen, benutze ich gerne usbmount. Dieses installiert man mit

      sudo apt-get update
      sudo apt-get install usbmount

      Danach wird die Festplatte automatisch gemountet unter /media/usb0/
      ein zweites Gerät unter usb1 – und so weiter.

      Anstatt mehrere Verzeichnisse einzeln freizugeben, erstellt man dann einfach ein Freigabeverzeichnis, wie oben beschrieben. Für die gemountete Festplatte kann man dann einfach einen Symlink erstellen mittels:

      ln -s /media/usb0 /home/pi/pi-share

      Möglicherweise hilft das bereits. Ansonsten bitte nochmal die smb.conf prüfen auf die folgenden Zeilen:

      browseable=Yes
      create mask=0777
      directory mask=0777

      Viel Erfolg!

  5. Hallo Patrick!

    Vielen Dank erst einmal für die gut verständliche Anleitung. Das hat soweit auch alles gut geklappt, nur hänge ich an einem Problemchen fest. Auf dem Pi werkelt nebenher noch ein Druckserver namens Octoprint. Um mir die wilde Klickerei zum Upload von Dateien über den Browser zu ersparen wollte ich das Upload-Verzeichnis freigeben um auf dem PC beim Speichern einfach die Datei direkt dort hinein zu speichern.
    Mein Problem weshalb das nicht klappt dürfte vermutlich die Tatsache sein dass der Pfad dorthin folgender ist
    /.octoprint/uploads
    Und soweit ich weiß (und ich weiß nicht doll viel über Linux) sind die Verzeichnisse, welche mit einem Punkt beginnen doch unsichtbar.
    Im Netzwerk finde ich nach dem Neustart auch den Raspberry, aber der Zugriff scheitert wenn ich speziell auf diesen Ordner will.
    Wie weise ich denn diesen Pfad in der Konfigurationsdatei zu? Oder geht das gar nicht?

    Gruß
    Ulf

    • Hallo Ulf,

      in der oben genannten Konfigurationsdatei ist eingestellt, welcher Ordner auf dem Raspberry Pi über Samba freigegeben wird. Nur Verzeichnisse unterhalb des eingestellten Ordners, in diesem Beispiel /home/pi/pi-share, sind auf dem Client-Rechner sichtbar.
      Das Problem lässt sich mit einem Symlink lösen. Ich gehe davon aus, daß Octoprint auf das Verzeichnis „upload“ zugreift um daraus zu drucken. Dieses Verzeichnis ersetzen wir durch einen Symlink auf ein bestehendes Verzeichnis in unserem Samba-Share.

      Zunächst das vorhandene Verzeichnis löschen

      rm -R /home/pi/.octoprint/uploads ((bitte bei Bedarf Pfad anpassen, Dateien vorher sichern!)

      und erstellen einen Ordner im Shareverzeichnis und verlinken darauf

      mkdir /home/pi/pi-share/octoprint-uploads
      ln -s /home/pi/pi-share/octoprint-uploads /home/pi/.octoprint/uploads

      Dateien die du nun unter pi-share/octoprint-uploads ablegst können unter .octoprint/uploads abgerufen werden. Die umgekehrte Richtung funktioniert auch, falls über das Webinterface dort etwas abgelegt wird.
      Wenn ich dein Problem richtig verstanden habe, lässt es sich so lösen ohne Konfigurationsdateien anzurühren.
      Berechtigungsprobleme könnte es geben, falls Octoprint von einem anderen Benutzer ausgeführt würde, wovon ich hier nicht ausgehe.

      • Wooohoooo!!!

        Das hat geklappt. Dass man die Ordner verlinken kann war mir nicht bewusst. Aber nun klappt es. Danke für Deine Hilfe!

    • Also zunächst verwendet man Samba eigentlich, wie eine Windows-Freigabe, nur im LAN. Mittels Port-Forwarding könnte man vermutlich von außen auch zugreifen, allerdings handelt man sich dadurch ein ziemliches Sicherheitsrisiko ein.
      Möglichkeit A: Du öffnest dein SSH für Zugriffe von außen (ist beim Raspberry Pi per default abgeschaltet). Mit einer Authentifizierung per Key ist das ziemlich sicher. Vorteil: Mit Bordmitteln uns sehr wenig Aufwand umsetzbar. Als Client könntest du z.b. Krusader, Gigolo (Linux) oder Filezilla (Windows) verwenden.
      Möglichkeit B: Die elegante Lösung – OpenVPN einrichten. Damit erweitert sich dein Netzwerk über den VPN-Tunnel, man kann auf alle Freigaben zugreifen. Das wäre einen weiteren Artikel wert.
      Für DynDNS einfach ein Port-Forwarding für die entsprechenden Ports einrichten, je nachdem welche Lösung man favorisiert.

      Als genialen DynDNS-Anbieter kann ich übrigens DuckDNS empfehlen. Zwei Adressen kostenlos, genialer Support und zuverlässig seit vielen Jahren.

  6. Funktioniert es auch, wenn ich eine USB-Festplatte an den PI 3 schließe, und auf dir USB-Platte zugreifen will? Muss ich dabei noch etwas beachten, außer das der Dateipfad anders ist?

    • Ja, das geht natürlich wenn man den „path“-Parameter entsprechend einstellt. Falls es danach zu Berechtigungsproblemen beim Zugriff kommt, müssen die Berechtigungen mittels chown und chmod nochmal angepasst werden. Wie genau hängt wiederum davon ab, ob nur mit dem Benutzer „pi“ zugegriffen wird oder andere Benutzer im System angelegt sind. Zusätzliche Benutzer, außer „pi“ müssen dann in eine Benutzergruppe rein, die auf das Verzeichnis auch zugreifen kann.
      Falls das wirklich ein Problem gibt, einfach nochmal konkret nachfragen.

  7. Bei mir ist etwas schief gelaufen. Ich habe alles gemacht aber dann sagt man mir am Laptop: „Sie benötigen Berechtigungen.“ Darunter die Details der Speichernutzung und die Buttons „Wiederholen“ und „Abbrechen“. Was ist falsch gelaufen???

    • Hallo,

      leider ist es unmöglich mit diesen spärlichen Informationen eine Fernanalyse durchführen zu wollen. Ein Berechtigungsproblem – aber für was?

  8. Super Anleitung!
    Bei mir hat es auf Anhieb geklappt mit dem Netzwerk-Ordner auf dem Rasperry Pi.
    Ich kann jetzt mit meinem Windows-Rechner auf den Raspberry Pi zugreifen.
    Cool!

    • Klar kann man da was machen:
      Unter Raspbian wird sudo verwendet um temporär Rootrechte zu bekommen und es gibt ab Installation bereits einen Benutzer „pi“, welcher alle Befehle ausführen darf.
      Weitere Rechte erteilt man dann über die Datei /etc/sudoers
      Um diese zu Bearbeiten benötigt man natürlich wieder Rootrechte, siehe oben 😉

      Zunächst legt man also einen neuen Benutzer an und trägt ihn dann in die sudoers Datei ein.

      # User privilege specification
      Benutzername ALL=(ALL) ALL

      Oder man erlaubt einer ganzen Benutzergruppe das Ausführen von Rootrechten:

      # Allow members of group sudo to execute any command
      %sudo ALL=(ALL:ALL) ALL

      Die entsprechenden Benutzer muß man dann der Gruppe „sudo“ zuweisen.

      Mehr Information gibt es auch hier:
      https://help.ubuntu.com/community/Sudoers

Schreibe einen Kommentar