Raspberry Pi: NAS Fileserver installieren
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.
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.
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.
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]
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]
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]
Soll ein deaktivierter Benutzer wieder aktiviert werden, können wir dies mit folgendem Kommando vollbringen.
sudo smbpasswd -e [username]
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.
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
# Name der Freigabe [Test Freigabe] # Pfad zum Verzeichnis, das freigegeben werden soll path = /pfad/zum/ordner # Definiert, ob diese Freigabe aktiv ist available = yes # Freigabe ist direkt sichtbar für den angemeldeten Benutzer (yes) browseable = yes # Gäste dürfen im freigegebenen Bereich lesen (yes) guest ok = no # Angemeldete Benutzer dürfen lesen und schreiben (yes) oder nur lesen (no) writeable = no
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
# Angemeldete Benutzer dürfen lesen und schreiben (yes) oder nur lesen (no) writeable = no # Benutzer, die trotzdem schreiben dürfen write list = jan,paul,georg
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
# Name der Freigabe [Test Freigabe] # Pfad zum Verzeichnis, das freigegeben werden soll path = /pfad/zum/ordner # Definiert, ob diese Freigabe aktiv ist available = yes # Freigabe ist direkt sichtbar für den angemeldeten Benutzer (yes) browseable = yes # Gäste dürfen im freigegebenen Bereich lesen (yes) guest ok = no # Angemeldete Benutzer dürfen lesen und schreiben (yes) oder nur lesen (no) writeable = no # Benutzer, die Zugriff auf diese Freigabe haben sollen valid users = jan,paul,georg
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
# Name der Freigabe [Meine kopierte Freigabe] # Die Einstellungen dieser Freigabe werden übernommen copy = Test Freigabe
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.
48 Kommentare. Hinterlasse eine Antwort
danke für deine Umsetzung
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?
Du solltest zwischen NAS und Cloud Lösung unterscheiden. Aber prinzipiell kannst du beides gleichzeitig laufen lassen.
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.
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.
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.
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!
Zu 1: Sollte mit dem Paket ntfsprogs gehen.
Zu 2: Das geht ganz easy mit folgendem Kommando:
df -h
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 ?
Interessante Idee. Klingt nach dieser Anleitung auf jeden Fall machbar.
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 ^^
Zu a: Steht auch so im Tutorial 😉
Zu b: Stimmt, aber da bekommt man ja der Fehlermeldung geworfen.
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
ich kann absolut keinen neuen samba user anlegen es kommt immer Failed to add entry
Hast du vielleicht das sudo vergessen abzutippen (benötigt um volle Rechte zu erhalten)?
Das habe ich gemacht es geht nur wenn ich den User als Sytemuser angebe ist das normal?
Um einen neuen Nutzer anzulegen benötigst du root-Rechte, weshalb dies im Tutorial auch so beschrieben ist (sudo).
[…] Ein weiterführenden Artikel u.a. zum Thema Usermanagement und Berechtigungen in Samba findest du in meinem Blog unter dem Titel NAS Fileserver installieren. […]
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….
Du hast das sudo vor dem nano nicht abgetippt. Daher hast du nicht die nötigen Rechte.
Ich gebe immer sudo ein und dennoch muss ich erst einen nutzer fur das pi einrichten und kann dann duesen nutzer als samba nutzer einrichten. .. ist da normal
Wenn du pi nicht verwenden möchtest ja, siehe Artikel.
[…] Quelle (Stand 04.08.2014): Jan Karres Blog […]
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?!
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.
Rasobmc mountet die Festplatten ja automatisch unter /media. Wenn ich mich als pi anmelde habe ich in der tat zugriff aber als benutzer mathias oder petra nicht obwohl die namen angelegt sind und unter valid user eingetragen sind. Welcher gruppe gehört den der normale benutzer pi an?
Der Benutzer pi gehört der Gruppe pi an.
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?
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.
Hab jetzt diverse Raspberry Anleitungen aus deinem Blog abgearbeitet. Es war immer als super und sehr übersichtlich beschrieben. Vielen Dank!
Freut mich zu lesen!
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?
Das hat zwar wenig mit dem obigen Thema zu tun, aber HD-idle wäre da wahrscheinlich eine Lösung. Eine Anleitung dazu findest du im Blog chalblog.
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?
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
Ich bekomme immer die Meldung, dass mir die benötigte Berechtigung zur durchführung des Vorgangs fehlt.
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.
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?
Hast du denn einen Benutzer angelegt und dich am Client mit diesem angemeldet?
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
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
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
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.
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
[…] https://jankarres.de/2014/03/raspberry-pi-nas-fileserver-installieren/ […]
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.
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.
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