Raspberry Pi: NAS Fileserver installieren

26 Mrz
26. März 2014

Ein NAS (Network Attached Storage) ist eine prima Sache, wenn mehrere Personen in einem Netzwerk auf Dateien zugreifen können müssen. Mit dem SMB (Server-Message-Block-Protokoll), welches maßgeblich von Microsoft geprägt wurde, existiert ein weitverbreitetes Protokoll für solche Netzwerkfreigaben und mit Samba ist eine freie Implementierung des Protokolls für Linux verfügbar. Man kann sich für nicht selten mehrere hundert Euro eine fertige Lösung kaufen, aber auch mit dem Raspberry Pi eine Low-Budget Umsetzung selbst basteln. Dazu benötigt man einen Raspberry Pi und Speichermedien, die man an diesen über USB anschließt. Seitens der Software wird Samba im eigenen Netzwerk eingehängt und fertig ist es. Wie man Schritt für Schritt ein NAS-System/-Fileserver mit dem Raspberry Pi umsetzen kann, erkläre ich im Folgenden auf Wunsch eines Lesers, der den Wunsch zu weitreichenden Erläuterungen zur Samba Anleitung in meinem Blog äußerte.

Step 1

Zunächst sollten wir alle benötigten Speichermedien (USB-Festplatten, -Sticks usw.) am Raspberry Pi anstecken und einbinden. Wie dies geht, erklärte ich bereits im Artikel USB-Stick und USB-Festplatte einbinden.

Step 2

Im zweiten Schritt benötigen wir Samba als Software für die Netzwerkfreigaben. An dieser Stelle ist es sinnvoll, dass der Raspberry Pi schon am selben Netzwerk wie die Computer, die später auf die Dateien zugreifen sollen, hängt. Dazu kann man das kleine Wunderwerk via SSH steuern. Zur Installation von Samba schrieb ich ebenfalls schon einen Artikel, der unter dem Titel Samba Server installieren erschien. In dieser Anleitung könnt ihr Step 4 bis einschließlich Step 6 auslassen, da wir uns mit der dort angerissenen Thematik im Folgenden genauer auseinandersetzen.

Wir haben nun die zu verwendenden Speichermedien eingebunden und die Software installiert, die wir für die Netzwerkfreigabe benötigen. Nun müssen wir beide Teile zusammenbringen. Dazu beschäftigen wir uns zunächst mit dem Thema User Management von Samba und anschließend werde ich konkret erklären, wie man eine Freigabe anlegt.

Benutzer anlegen

Samba verfügt über eine eigene Benutzerverwaltung, die aber an die Systembenutzer gebunden ist. Das bedeutet praktisch, dass wenn ein Benutzer in Samba angelegt werden soll, dieser auch als Systembenutzer existieren muss.

Daher legen wir zunächst einen Systembenutzer an, der sich im System nicht anmelden kann, sondern nur zur Anmeldung in Samba genutzt wird. Dabei muss [username] durch den gewünschten Benutzernamen ersetzt werden.

sudo adduser --disabled-login [username]

Nun können wir über das Programm smbpasswd auch in Samba einen Benutzer anlegen, der den gleichen Namen wie der Systembenutzer hat. Dabei werden wir aufgefordert, ein Passwort zu definieren, mit dem sich der Benutzer später in Samba anmelden kann.

sudo smbpasswd -a [username]

Benutzer entfernen

Das Entfernen eines Benutzers ist einfach mit folgendem Kommando zu bewerkstelligen ([username] muss wieder ersetzt werden).

sudo smbpasswd -x [username]

Falls gewünscht, kann man mit folgendem Kommando auch den zugehörigen Systembenutzer wieder löschen.

sudo deluser [username]

Benutzer deaktivieren

Möchte man einen Benutzer nicht gleich löschen, sondern diesem lediglich temporär den Zugriff sperren, ist das mit folgendem Kommando möglich.

sudo smbpasswd -d [username]

Benutzer aktivieren

Soll ein deaktivierter Benutzer wieder aktiviert werden, können wir dies mit folgendem Kommando vollbringen.

sudo smbpasswd -e [username]

Alle Benutzer anzeigen

Möchte man wissen, welche Samba Benutzer existieren, so kann man sich mit folgendem Kommando eine Liste aller angelegten Benutzer ausgeben lassen.

sudo pdbedit -w -L | awk -F: '{print $1}'

Nachdem wir nun wissen, wie man Benutzer in Samba anlegt, müssen wir für diese natürlich auch noch Ordner freigeben. Wie dies geht, erkläre ich exemplarisch im Folgenden. In diesem Tutorial verwende ich den Editor nano in dem man mittels STRG + X, Y und Enter speichern kann. Die Zeilen, in denen am Anfang eine Raute steht, sind Kommentare, die den darauf folgenden Parameter beschreiben. Dabei ist zu wissen, dass alle der folgenden Änderungen ihre Wirkung erst entfalten, wenn Samba neugestartet wird, was im letzten Abschnitt erklärt wird.

Freigabe für alle Benutzer

Möchte man einen Ordner für alle Samba Benutzer freigeben, so kann man am Ende der Konfigurationsdatei folgende Zeilen eintragen.

sudo nano /etc/samba/smb.conf

Freigabe für alle Benutzer, aber nur bestimmte dürfen schreiben

Möchte man, dass der freigegebene Ordner von allen Samba Benutzern gelesen werden kann, aber nur bestimmte Benutzer darin schreiben (Dateien ablegen, bearbeiten und löschen) können, so muss man die Einstellungen aus Freigabe für alle Benutzer um folgende Zeilen erweitern. Erstere ist bereits oben erwähnt, muss aber zwingend auf no stehen. Die Namen der Benutzer sind mit Komma und ohne Leerzeichen zu trennen.

sudo nano /etc/samba/smb.conf

Freigabe für bestimmte Benutzer

Sollen nur bestimmte Benutzer Zugriff auf einen Ordner bekommen, so kann man dies mit folgendem Eintrag realisieren. Dabei müssen bei valid users die Benutzernamen ohne Leerzeichen aber mit Komma getrennt geschrieben werden.

sudo nano /etc/samba/smb.conf

Freigabe kopieren

Eine weitere nützliche Funktion ist das Kopieren vorhandener Freigaben. Wenn man bspw. einem Teil der Benutzer andere Einstellungen bei der Freigabe zuweisen möchte, als einem anderen Teil, muss man die Freigabe nicht händisch kopieren, sondern kann sie mit folgendem Abschnitt automatisch kopieren. Alle nach dem copy Kommando definierten Einstellungen überschreiben die Einstellungen aus der ursprünglich definierten Freigabe in der Kopie.

sudo nano /etc/samba/smb.conf

Samba neustarten

Mit Hilfe des folgenden Kommandos können wir Samba ganz einfach neustarten.

sudo /etc/init.d/samba restart

Das sollten die gängigsten Anwendungsfälle gewesen sein, die man bei einem NAS Fileserver, realisiert mit Samba, benötigt. Erwähnenswert ist auch noch, dass es in Samba Freigaben standardmäßig keinen Papierkorb gibt. Diesen kann man bei Bedarf jedoch ebenfalls anlegen. Wie dies geht, wird im UbuntuUsers Wiki recht einfach erklärt.

Wenn man alles richtig gemacht hat, werden die konfigurierten Freigaben nun im Netzwerkfreigabe Center des jeweiligen Betriebssystems angezeigt bzw. man kann sich dort mit dem angelegten Benutzer anmelden, damit man die Freigaben sieht.

Dieses Tutorial wurde am 01. März 2015 überarbeitet.

Dir hat der Artikel gefallen?
Teile ihn mit deinen Freunden!
48 Antworten
  1. Thomas says:

    danke für deine Umsetzung

    Antworten
  2. Nix0n says:

    kann ich parallel dazu auch noch Owncloud oder alternativen auf meinem Raspberry Pi installieren? Das ich quasi beides am laufen hab, eine NAS und auf diese NAS dann auch von unterwegs zugreifen kann?

    Antworten
  3. Anonym says:

    Hi Jan,

    ich hab schon sehr viele verschiedene Anleitungen bezüglich Samba ausprobiert und schon unzählige Configfiles. Die Schreibgeschwindigkeit ist jedoch meist unterhalb von 1MB/s. Ist das normal oder kann man da noch was dran machen? Danke schon mal 🙂

    Liebe Grüße
    L.

    Antworten
    • Jan Karres says:

      Je nachdem wie schnell das Speichermedium ist sollte man schon 2Mb/s hinbekommen. Mehr jedoch packt man meiner Erfahrung nach mit dem Raspberry Pi nicht.

      Antworten
      • hablo says:

        Hallo,

        vorausgesetzt es handelt sich um eine große Datei, kann ich bis zu 10 Mb/s schreibend und lesend auf mein Raspberry Pi zugreifen.

        Antworten
  4. Michael says:

    Hallo,

    ich habe dank der Anleitung und den ganzen anderen Tuts hier meinen Raspberry erfolgreich aufsetzen können. Somit läuft die kleine Kiste als Printserver, DLNA-Server, NAS (Samba) ….

    Beim Arbeiten mit dem Nas sind mir jedoch zwei Fragen aufgekommen, deren Antworten ich bisher auch über google nicht richtig gefunden habe:

    1. Gibt es die Möglichkeit, über Kommandozeile (putty) die über USB angeschlossene Festplatte zu überprüfen und ggf. zu reparieren (ähnlich wie Checkdisk) – Dateisystem ist NTFS

    2. Kann ich mir über Kommandozeile den belegten / freien Speicherplatz der USB-Festplatte (NTFS) anzeigen lassen?

    Vielen Dank für Deine Hilfe!

    Antworten
  5. Sascha Flach says:

    Guten Morgen, kann ich auch ein (z.B.) Gdrive mounten und dann mit Samba verfügbar machen ? Quasi, ein Cloudstorage als Locale Festplatte für alle Geräte ?

    Antworten
  6. John1994 says:

    Also falls jemand auch das Problem hat, weil er sich mit Linux nicht auskennt. bitte a) die Klammern entfernen bei adduser und b) der Benutzername muss kleingeschrieben werden ^^

    Antworten
  7. Jonny says:

    Hey! =)
    Ich habe mit meinem Pi und Samba, sowie einer EXT4-HDD, 3 TB ganze 6 Megabytes pro Sekunde erreicht. 🙂

    Jetzt verwende ich 100er Kabel und einen Cubietruck und bekomme 11 MB..Das ist die Grenze des Kabels.

    Grüße

    Antworten
  8. riccardo says:

    ich kann absolut keinen neuen samba user anlegen es kommt immer Failed to add entry

    Antworten
  9. Marco says:

    Hallo Jan,
    egal wie ich die Freigaben einrichte, wenn ich was reinkopieren / löschen will, kommt immer folgende Fehlermeldung:
    Sie benötigen Berechtigungen zur Durchführung des Vorgangs.
    Sie müssen die erforderlichen Berechtigungen vom „Unix User/root“ erhalten, um Änderungen an dieser Datei durchführen zu können.

    woran kann das liegen? eingerichtet hab ich alles nach deinem Tut….

    Antworten
  10. Mathias Möllenbeck says:

    Hallo,
    danke für die tollen Tutorials. Habe das Problem das ich nicht auf die Freigabe direkt zugreifen kann. Habe meine Ext. Fetplatte unter Media gemountet öffnen kann ich sie allerdings nicht ausser ich setzte den Punkt “ force user = root “ in der samba config?!

    Antworten
    • Jan Karres says:

      Hast du die Festplatte vielleicht als Root-User gemountet und versucht nun von einem anderen Benutzer darauf zuzugreifen? Es sollte der selbe Benutzer oder ein Benutzer, der in der selben Gruppe wie es gemountet wurde sein.

      Antworten
  11. Christoph says:

    Hi Jan, vielen Dank für das Tutorial. Ein kleiner Schönheitsfehler ist bei mir noch, dass ich keine Ordner und Dateien mit Umlauten usw. hochschieben kann. Das scheint schon ein Problem in der Raspbian Shell zu sein (greife mit putty zu), da führt jedenfalls schon ein

    > touch äöüß

    zu dem Fehler

    touch: Setzen der Zeiten für „äöüß“: Datei oder Verzeichnis nicht gefunden

    Kannst Du da helfen?

    Antworten
    • Jan Karres says:

      Das sind u.a. UTF-8 Zeichen. Versuch diese mal den String (Ordnernamen) in Anführungsstriche zu setzten. Allgemein gilt es, genau so wie Leerzeichen, diese in Namensgebungen zu vermeiden.

      Antworten
  12. Jibber says:

    Hab jetzt diverse Raspberry Anleitungen aus deinem Blog abgearbeitet. Es war immer als super und sehr übersichtlich beschrieben. Vielen Dank!

    Antworten
  13. Oliver Alff says:

    Hallo Jan. Gibts auch eine möglichkeit die Festplatte auszuschalten wenn sagen wir mal 5 minuten kein zugriff erfolgt? Und wenn dann ein Zugriff erfolgt das die Platte dann nochmal eingeschaltet wird?

    Antworten
  14. Marvin G says:

    Super Anleitung!

    Ich habe noch ein kleines Problem. Folgendes will ich:

    Freigaben für zwei Nutzer, Daten und einen Public Ordner
    Max
    Maxima
    Public
    Daten

    Ich habe auch die beiden Benutzer für die Ordner angelegt.
    Dann habe ich die Freigaben eingerichtet und bei den Ordnern Public und Daten guest ok = yes gesetzt. Leider kann ich aber ohne anmeldung nicht auf die Freigabe zugreifen. Kannst du mir sagen warum?

    Antworten
    • Marvin G says:

      Okay, hab das hinbekommen. Nun habe ich jedoch keine Rechte Ordner anzulegen, reinzukopieren oder ähnliches. Meine Berechtigungen sehen so aus:

      [Marvin]
      path = /media/revoltecHDD/marvin
      available = yes
      browseable = yes
      guest ok = no
      writeable = no
      write list = marvin
      valid users = marvin

      [Saskia]
      path = /media/revoltecHDD/saskia
      available = yes
      browseable = yes
      guest ok = no
      writeable = no
      write list = saskia
      valid users = saskia

      [Public]
      path = /media/usbstick
      available = yes
      browseable = yes
      guest ok = yes
      writeable = yes

      [Daten]
      path = /media/revoltecHDD/daten
      available = yes
      browseable = yes
      guest ok = no
      writeable = yes
      write list = marvin
      valid users = marvin

      Antworten
      • Marvin G says:

        Ich bekomme immer die Meldung, dass mir die benötigte Berechtigung zur durchführung des Vorgangs fehlt.

        Antworten
        • Jan Karres says:

          Dann würde ich mal annehmen, dass nicht alle Benutzer, die Zugriff auf den Ordner haben sollen, auf Unix Rechte System Ebene die benötigten Rechte haben. Ich habe erst diese Woche den Artikel Linux Zugriffsrechte System erklärt veröffentlicht, der dir ausführlich erklären sollte die das Rechtesystem funktioniert, was du auf deine Ordnerstruktur anwenden solltest.

          Antworten
  15. eddy says:

    Hallo,

    ich habe mir mit Hilfe der Anleitung den Fileserver eingerichtet und über den Benutzer pi funktioniert auch alles. Leider kann ich aber über keinen anderen Benutzer auf die mit samba freigegebene externe Festplatte (1TB NTFS) zugreifen, ich bekomme dann immer die Meldung das ich keine Berechtigung dafür habe.
    Mithilfe von valid users in der smb.conf hatte ich auch keinen Erfolg.

    Nach dem lesen des Artikels „Linux Zugriffsrechte System erklärt“ habe ich erfolglos versucht die Berechtigungen zu ändern da momentan nur der Besitzer zugriff hat.

    Was kann ich da jetzt tun?

    Antworten
    • Jan Karres says:

      Hast du denn einen Benutzer angelegt und dich am Client mit diesem angemeldet?

      Antworten
      • eddy says:

        ja das war nicht das Problem.
        ich habe jetzt die Festplatte über einen fstab Eintrag eingebunden:

        UUID=5C800892800874B4 /media/usb/Dateien ntfs uid=1000,gid=plugdev,umask=0000 0 0

        mit dem hat sich das Problem dann gelöst.
        habe beim Mount die gruppe plgdev angegeben und dieser mit umask sämtliche rechte gegeben. und halt den Benutzern ebenfalls der gruppe plgdev zugewiesen. Die Restlichen lese- und schreibrecht hab ich dann mit samba zugewiesen.

        Auf diese Lösung kam ich vorgestern Abend als ich eigentlich für meine Prüfung hätte lernen müssen. xD

        Antworten
  16. Bernd says:

    Hallo Jan,

    danke für die gelungene Beschreibung.

    Noch eine Anmerkung: Nachdem ich alles eingerichtet hatte (Dateisystem der USB-Festplatte 32 Bit nach Windows-Standard) konnte ich zwar unter Windows auf die share zugreifen, unter Linux jedoch nicht.

    Immer kam die Meldung:
    „Interner Fehler Bitte senden Sie einen ausführlichen Problembericht an http://bugs.kde.org Unbekannte Fehlersituation in stat: Keine Route zum Zielrechner“.

    Auffällig war auch, dass nach statischer Vergabe der IP auf dem Raspberry dessen Hostname im Router nicht mehr erschien, sondern durch PC- ersetzt war. Abhilfe konnte ich nur dadurch schaffen, indem ich den Hostnamen des Pi in die /etc/hosts in den Clients (u.a. openSUSE 13.1) eingetragen habe.

    Meine Vermutung ist, dass smb im Linux den Hostnamen irgendwie über den Router auflösen möchte, während Windows den eventuell direkt beim Host über die IP abfragt?

    Gruß, Bernd

    Antworten
  17. Corono says:

    Hallo

    Sehr schöne Anleitung. Habe auch fast alles hinbekommen. Der Raspberry ist im Netzwerk sichtbar, ich kann mich mit dem angelegten Benutzer einloggen und komme dann auch auf den eingebundenen USB-Stick. Was ich hingegen nicht hingekriegt habe, ist Schreibrecht. Wenn ich mich von meinem Windows-PC anmelde, kann ich nur lesen. In der Samba-Config steht:

    [Test Freigabe]
    path = /media/usbstick
    available = yes
    browseable = yes
    guest ok = no
    writeable = yes

    Verschiedene andere Versuche mit valid user oder write list haben auch nichts gebracht. Weiss jemand, an was das liegen könnte? Kann es etwas mit dem Raspberry-Benutzer sein, den ich zuerst erstellt und nicht gelöscht habe? Muss man dem noch Schreibrechte oder so geben?

    MFG Corono

    Antworten
    • Cane says:

      Am naheliegendsten scheint mir, dass der aktive user (pi) für den gemounteten USB-Stick (/media/usbstick) nicht die Rechte hat.

      wenn der USB-Stick als Pi oder gar Root gemountet ist, dann hat der angelegte User darauf natürlich keinen Zugriff.

      Antworten
  18. Corono says:

    Hallo

    Sehr schöne Anleitung. Ich habe auch fast alles so hingekriegt, wie ich es wollte. Der Raspberry ist im Netzwerk sichtbar und ich kann mit dem angelegten Benutzer auf den eingebundenen USB-Stick zugreifen. Was aber nicht geht sind die Schreibrechte auf dieses Verzeichnis. Im Samba-Config-File steht:

    [Test Freigabe]
    path = /media/usbstick
    available = yes
    browseable = yes
    guest ok = no
    writeable = yes

    Verschiedene Kombinationen mit write list und valid users habe ich auch versucht, ohne Erfolg, ich kann immer nur lesen. Kann mir da jemand weiterhelfen? Kann es evtl. etwas mit dem neuen Benutzer zu tun haben, den ich anlegen musste? Den habe ich nicht wieder gelöscht. Der USB-Stick wird aber, wie im Tutorial beschrieben, mit dem User pi und der Gruppe pi gemounted. Kann das zu Problemen führen?

    MFG Corono

    Antworten
  19. Klaus Wieland says:

    Bin ein Neuling mit Raspberry. Habe erfolgreich den Raspberry als NAS installiert. Nun möchte ich auf den Fileserver aus den Internet zugreifen ohne OwnCloud oder Seafile zu installieren. Wie geht das?. Ich habe ein lokales Netzwerk mit der Fritzbox 7490.

    Antworten
  20. Aircan says:

    Hallo,

    ich habe das selbe Problem, daß alles nach Anleitung abgearbeitet wurde. Auf dem Windows PC sehe ich nun den freigegebnen USB Stick. Nach Anklicken mußte ich ein Benutzernamen und Passwort eingeben. Aber schreiben kann ich nicht darauf (vom Windows PC aus).

    Gibt es hierfür eine Lösung?
    Was muß ich tun und wie?

    Besten Dank im Voraus.

    Antworten
  21. timo says:

    Hallo,

    mich irritiert da etwas.

    Wenn ich alles eingerichtet habe und über meinen Windowsrechner auf Netzwerk gehe, klicke ich auf raspberrrypi.
    Im Ordner raspberrypi liegt dann der in Samba angelegte Ordern (in meinem Fall) „Timo NAS“.
    Mit Doppelklick auf Timo NAS muss ich mich mit meinem User (timo) anmelden.
    Klappt alles…

    Wenn ich jetzt zurück in den Ordner raspberrypi gehe befindet sich dort nun ein zweiter Ordner mit dem Namen „timo“.

    Was hat der Ordner für ein Nutzen?
    Ignoriere ich ihn einfach?
    Denn um meine Dateien auf dem NAS zu verwalten nutze ich ja den Ordner „Timo NAS“ oder irre ich mich da?

    Danke schonmal im voraus.

    Gruß timo

    Antworten

Trackbacks & Pingbacks

  1. […] Ein weiterführenden Artikel u.a. zum Thema Usermanagement und Berechtigungen in Samba findest du in meinem Blog unter dem Titel NAS Fileserver installieren. […]

Antworten

Kommentar verfassen

JanKarres.de © 2007-2018