{"id":265,"date":"2016-08-26T16:39:04","date_gmt":"2016-08-26T14:39:04","guid":{"rendered":"http:\/\/blog.rollnut.com\/?p=265"},"modified":"2019-03-29T23:02:05","modified_gmt":"2019-03-29T21:02:05","slug":"file-server-einrichten","status":"publish","type":"post","link":"http:\/\/blog.rollnut.com\/file-server-einrichten\/","title":{"rendered":"File-Server einrichten (Samba)"},"content":{"rendered":"
Mit einem File-Server (oder auch Datei-Server) werden Dateien an\u00a0einem zentralen Ort im Netzwerk bereitgestellt anstatt auf dem eigenem PC. Dies hat den Vorteil das andere Benutzer\u00a0(mit Berechtigung) auf diese jederzeit zugreifen k\u00f6nnen (auch wenn der eigenen PC offline ist).\u00a0Da die Daten zentral einmalig vorliegen ist auch ein Backup sehr einfach.<\/p>\n
<\/p>\n
Ich ben\u00f6tige einen File-Server um\u00a0Dateien zentral zu speichern die ich nicht oft ben\u00f6tige und die sich in der Regel nie \u00e4ndern (z.b. Installer von Programmen oder fertige Versionen von\u00a0Produkten). Hier verzichte ich bewusst auf eine Synchronisationsfunktion um Ressourcen zu schonen.<\/p>\n
Dieser Artikel ist Bestandteil der Artikelserie \"<\/strong>Home Server mit dem Raspberry Pi\"<\/strong>. Zum Inhaltsverzeichnis gelangt ihr hier<\/a>.<\/p>\n Der zuk\u00fcnftige File-Server soll bequem von meinem Windows PC, aus dem\u00a0Explorer, erreichbar sein und als\u00a0virtuelles Netzlaufwerk eingebunden werden.<\/p>\n Es wird mehrere Netzlaufwerke geben die sich physikalisch alle auf der USB Platte befinden. Drei\u00a0Netzlaufwerke sollen es werden. Je ein Netzlaufwerk f\u00fcr private Dinge<\/strong> und\u00a0f\u00fcr gesch\u00e4ftliches<\/strong> (Ordnung ist das halbe Leben). Auf das\u00a0Root-Laufwerk soll nur der Admin Zugriff haben.\u00a0Die anderen beiden Laufwerke sollen auch mit unterschiedlichen Passw\u00f6rtern gesch\u00fctzt werden.<\/p>\n Bevor wir mit Samba loslegen ben\u00f6tigen wir eine formatierte USB-Festplatte (Anleitung zur Formatierung<\/a>). Auf dieser k\u00f6nnen wir bereits die fertige Ordnerstruktur erstellen (dies erleichtert\u00a0eventuelle\u00a0Fehlersuche).<\/p>\n Mein FileServer wird zwischen privaten (family)<\/strong> und gesch\u00e4ftlichen (rollnut)<\/strong>\u00a0getrennt. Die Daten liegen zwar alle\u00a0auf demselben Datentr\u00e4ger aber mit der passenden\u00a0Rechtesteuerung l\u00e4sst sich eine Trennung dennoch realisieren. Empfehlenswert ist es im Root-Verzeichnis der Festplatte den Ordner fileserver<\/strong>\u00a0anzulegen (falls die Festplatte weitere Aufgaben erledigt). Folgend habe ich\u00a0meinen Verzeichnisbaum aufgebaut:<\/p>\n fileserver<\/strong><\/span> Es empfiehlt sich in jedem Unterverzeichnis eine neue Textdatei mit beliebigem Inhalt anzulegen. Damit k\u00f6nnt Ihr sp\u00e4ter Lese- und Schreibrechte testen.<\/p>\n Sp\u00e4testens jetzt muss die Platte\u00a0an eurem Pi angesteckt sein. Wie man eine Festplatte \u00fcber Mounting einbindet hatte ich bereits erkl\u00e4rt:\u00a0Mounting<\/a><\/p>\n Wenn Ihr kein NTFS<\/strong> sondern ext4<\/strong> als Format gew\u00e4hlt habt k\u00f6nnt Ihr geschickt mit Linux-Benutzerrechten die Zugriffe auf euren FileServer steuern (Linux-Benutzerrechte werden von NFTS<\/strong>\u00a0nicht unters\u00fctzt, daher k\u00f6nnen Anwender von NTFS<\/strong> direkt zum Absatz\u00a0Samba<\/strong> springen).\u00a0Folgend eine Anleitung wie ich meine Ordner konfiguriert habe:<\/p>\n Wechselt in das\u00a0Verzeichnis fileserver<\/strong>:<\/p>\n Meine Ordner\u00a0family\u00a0<\/strong>und rollnut<\/strong> d\u00fcrfen nur verwendet werden wenn man der passenden Benutzergruppe angeh\u00f6rt. Mit folgenden Befehlen k\u00f6nnt Ihr die\u00a0Ordner anlegen und passende Rechte vergeben (ersetzt [dir]<\/strong> mit dem passenden Verzeichnisnamen und [group]<\/strong> mit der passenden Benutzergruppe, bitte auch die eckigen Klammern entfernen):<\/p>\n Ich erkl\u00e4re nun kurz was oben geschieht.<\/p>\n Der Ordner \"rollnut->releases<\/strong>\" ist nun ein Spezialfall. Ich m\u00f6chte das jeder Benutzer der Gruppe rollnut\u00a0<\/strong>den Inhalt lesen darf. Aber nur ich soll Schreibrechte erhalten. Dies habe ich folgend gel\u00f6st:<\/p>\n Zuerst \u00e4ndere ich den Owner von\u00a0dem Ordner releases<\/strong>. Anschlie\u00dfend entziehe ich der Guppe rollnut<\/strong>\u00a0die Schreibrechte (der Befehl unterscheidet sich nur darin das das w<\/strong>\u00a0bei\u00a0rwx<\/strong> fehlt).<\/p>\n \u00dcbrigens, wenn Ihr die Konfiguration von ACL<\/strong> sehen m\u00f6chtet k\u00f6nnt Ihr dies mit diesem Kommando machen:<\/p>\n <\/a><\/p>\n Mit dem Programm Samba<\/strong>\u00a0werden alle Anforderungen an den File-Server erf\u00fcllt. Samba bringt meinem Raspberry das SMB-Protokoll bei, womit es mit Windows im Netzwerk kompatibel wird.<\/p>\n Mit folgendem Befehl wird es installiert:<\/p>\n Wenn Ihr Samba anschlie\u00dfend neu startet\u00a0wird das Raspberry sogar schon im Windows Explorer gefunden (in der Netzwerk-Kategorie). Allerdings ohne\u00a0Ordnerfreigaben.<\/p>\n Samba ist bereits vorkonfiguriert (unter \/etc\/samba\/smb.conf<\/em>). In der Config stehen sehr viele Zeilen und auch Kommentare als Hinweis was alles m\u00f6glich ist. Im Praxis-Einsatz empfinde ich diese Datei allerdings als sehr un\u00fcbersichtlich.\u00a0Deswegen erstelle ich davon eine Sicherheitskopie und erzeuge eine Neue die noch leer ist und anschlie\u00dfend von mir beschrieben wird (die Kopie dient lediglich als Nachschlagewerk).<\/p>\n Samba kann wunderbar mit ext4<\/strong> formatierten Datentr\u00e4gern umgehen. Um Samba zu konfigurieren muss die smb.conf<\/strong> Datei mit einem Text-Editor ge\u00f6ffnet werden.\u00a0Ich verwende daf\u00fcr Nano:<\/p>\n Nun wird folgender\u00a0Text eingef\u00fcgt:<\/p>\n Bitte ersetzt [adminuser]<\/strong>\u00a0mit\u00a0einem Benutzer welcher, mit Root-Rechten, Zugriff auf die komplette Festplatte erhalten soll. Folgend eine Erkl\u00e4rung der einzelnen Punkte:<\/p>\n [global]:<\/strong> Allgemeine Konfiguration von Samba [Root], [Family], [RollNut]:<\/strong>\u00a0Der Name unter welcher eure Netzwerkfreigabe sp\u00e4ter zu finden ist. Im Anschluss kann die Datei\u00a0smb.conf<\/strong>\u00a0mit folgenden Befehl auf Validit\u00e4t gepr\u00fcft werden.<\/p>\n Samba Benutzer anlegen<\/strong><\/p>\n Nun m\u00fcsst Ihr noch einen Linux-Benutzer mit einem Samba-Passwort ausstatten. Ohne diesem Schritt kann Samba nicht verwendet werden da es keinen Standardbenutzer f\u00fcr Samba gibt.\u00a0Wenn ein Windows-Teilnehmer sich mit diesem\u00a0Benutzer \u00fcber Samba anmeldet wird Samba mit dessen Rechten auf Dateien zugreifen (das Root<\/strong>-Laufwerk ist hier eine Ausnahme). Das -a<\/strong> bedeutet das der User in Samba nach dem anlegen direkt aktiviert wird.<\/p>\n Wie schon mehrfach angesprochen funktionieren Linux-Benutzerrechte auf NTFS<\/strong>-Ger\u00e4ten nicht. Um einen vergleichbaren Effekt zu haben kann man dennoch folgende L\u00f6sung anwenden:<\/p>\n \u00d6ffnet die Samba-Config.<\/p>\n Als Inhalt f\u00fcgt folgenden Text ein:<\/p>\n Der Unterschied zu der Konfig von ext4<\/strong>\u00a0ist das valid users<\/strong> bei jedem Laufwerk verwendet wird.<\/p>\n Samba Benutzer anlegen<\/strong><\/p>\n Zugriffsrechte auf\u00a0Samba-Laufwerke erfolgen mittels speziellen Samba-Usern. Samba-User k\u00f6nnen mit\u00a0smbpasswd<\/strong>\u00a0angelegt werden, allerdings nur wenn\u00a0bereits ein Linux-User mit demselben Namen besteht (Samba-User werden nicht automatisch erstellt!).<\/p>\n In meinem Fall m\u00f6chte ich allerdings eher Samba-Gruppen anstatt User. Daher muss ich 'dummy'-User in Linux anlegen damit ich diese in Samba verwenden kann.<\/p>\n Das obere Kommando erstellt einen Linux-User der sich nicht einloggen kann, kein Home-Verzeichnis besitzt und sonst nix darf (au\u00dfer eben als Samba-User zu fungieren).<\/p>\n Da ich drei Samba-User ben\u00f6tige erzeuge ich diese nun, smb-pi<\/strong>, smb-<\/strong>family<\/strong>\u00a0und smb-<\/strong>rollnut<\/strong>. Anlegen kann man diese ganz einfach mit folgenden Kommando:<\/p>\n Das -a<\/strong> bedeutet das der User in Samba nach dem anlegen direkt aktiviert wird.<\/p>\n Wenn\u00a0im Windows Client bereits erfolgreich eine SMB-Verbindung zum Raspberry aufgebaut wurde, sich das Passwort aber sp\u00e4ter \u00e4ndert, hat Windows ein Problem (zumindest bei mir). Windows\u00a0speichert\u00a0Netzwerkpassw\u00f6rter (anscheinend auch wenn der Hacken nicht aktiv war) und macht eine erneute Verbindung mit einem anderen\u00a0Passwort unm\u00f6glich.<\/p>\n Bei mir hat es funktioniert in der Windows-Kommandozeile folgenden Befehl zu feuern (der\u00a0Stern<\/em> bedeutet das alle gespeicherten Verbindungen\u00a0gel\u00f6scht werden):<\/p>\n Mit folgendem Tool kann man bestehende\u00a0Netz-Passw\u00f6rter auslesen sollte mal eines verlegt worden sein nirsoft.net\/utils\/network_password_recovery.html<\/a>.<\/em><\/p>\n Bei meiner Recherche hatte ich ab und zu den Hinweis gelesen das\u00a0RDC (ab Windows 7 enthalten) zu Problemen mit Samba f\u00fchren kann, was sich dadurch \u00e4u\u00dfert das ein einfacher\u00a0Kopiervorgang ungew\u00f6hnlich lange dauert.<\/p>\n Sollte dies der Fall sein kann testweise der Hacken bei RDC deaktiviert werden: Die Artikelserie \u201eHome Server mit dem Raspberry Pi<\/a>\u201c geht jetzt mit dem Thema\u00a0File-Server mit Seafile<\/a>\u00a0<\/strong>weiter.<\/p>\n","protected":false},"excerpt":{"rendered":" Mit einem File-Server (oder auch Datei-Server) werden Dateien an\u00a0einem zentralen Ort im Netzwerk bereitgestellt anstatt auf dem eigenem PC. Dies hat den Vorteil das andere Benutzer\u00a0(mit Berechtigung) auf diese jederzeit zugreifen k\u00f6nnen (auch wenn der eigenen PC offline ist).\u00a0Da die Daten zentral einmalig vorliegen ist auch ein Backup sehr einfach.<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[19],"_links":{"self":[{"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/posts\/265"}],"collection":[{"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/comments?post=265"}],"version-history":[{"count":81,"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":703,"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/posts\/265\/revisions\/703"}],"wp:attachment":[{"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/media?parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/categories?post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.rollnut.com\/wp-json\/wp\/v2\/tags?post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}Anforderung<\/h1>\n
\nDas dritte Laufwerk ist f\u00fcr den Admin welcher Zugriff auf das Root-Verzeichnis<\/strong> des Laufwerks erhalten soll und damit indirekt Zugriff auf oben genannte hat (zus\u00e4tzlich auch auf Programmdateien die neben dem FileServer<\/strong> auf der USB-Platte gespeichert werden).<\/p>\nVorbereitung<\/h1>\n
\n\u27a5family\u00a0<\/strong>(Lesen+Schreiben nur f\u00fcr Gruppe family<\/strong>)<\/em>
\n...\u27a5images
\n...\u27a5music
\n\u27a5rollnut\u00a0<\/strong>(Lesen+Schreiben nur f\u00fcr Gruppe rollnut<\/strong>)<\/em>
\n...\u27a5releases (Schreibrechte nur f\u00fcr Benutzer\/Gruppe admin<\/strong>)<\/em>
\n...\u27a5software<\/p>\nOptional: Benutzerrechte<\/h2>\n
cd \/media\/pidisk1\/fileserver<\/pre>\n
sudo mkdir [dir]\r\nsudo chown :[group] [dir]\r\nsudo chmod 771 [dir]\r\nsudo chmod g+s [dir]\r\nsudo setfacl -Rdm g:[group]:rwx [dir]<\/pre>\n
\n
cd rollnut\r\nsudo mkdir releases\r\nsudo chown [username] releases\r\nsudo chmod 751 releases\r\nsudo setfacl -Rdm g:rollnut:rx releases<\/pre>\n
getfacl [dir]\r\n<\/pre>\n
Samba<\/h1>\n
Samba installieren<\/h2>\n
sudo apt-get install samba samba-common-bin<\/pre>\n
sudo \/etc\/init.d\/samba restart\r\n\r\noder \r\n\r\nsudo service nmbd restart\r\nsudo service smbd restart<\/pre>\n
\/\/ Rename the existing file.\r\nsudo mv \/etc\/samba\/smb.conf \/etc\/samba\/smb.conf.bak\r\n\r\n\/\/ Create a new empty samba config file.\r\nsudo touch \/etc\/samba\/smb.conf<\/pre>\n
Samba einrichten - ext4<\/h2>\n
sudo nano \/etc\/samba\/smb.conf<\/pre>\n
[global]\r\nsecurity = user\r\nencrypt passwords = yes\r\n\r\n[Root]\r\ncomment = root of external pidisk1 drive\r\npath = \/media\/pidisk1\r\nread only = no\r\nvalid users = [adminuser]\r\nforce user = root\r\nforce group = root\r\n\r\n[Family]\r\ncomment = files to share with family\r\npath = \/media\/pidisk1\/fileserver\/family\r\nread only = no\r\n\r\n[RollNut]\r\ncomment = contains business related files\r\npath = \/media\/pidisk1\/fileserver\/rollnut\r\nread only = no\r\n<\/pre>\n
\nsecurity:<\/strong> Setzt die Art der Anmeldung fest
\nencrypt passwords:<\/strong>\u00a0Verschl\u00fcsselt euer\u00a0Passwort. Es macht immer Sinn yes<\/strong> zu verwenden au\u00dfer ihr habt noch Windows 95 im Einsatz.<\/p>\n
\ncomment:<\/strong>\u00a0Eine Beschreibung der betroffenen Freigabe (kann\u00a0in Windows als Tooltip gelesen werden).
\npath:<\/strong>\u00a0Der physikalische Pfad zum Ordner welcher Freigegeben wird.
\nread only:<\/strong> Nur Leserechte oder auch Schreib-\/L\u00f6schrechte.
\nvalid users:<\/strong>\u00a0Nur bestimmte User d\u00fcrfen sich an diesem Laufwerk\u00a0anmelden.
\nforce user\/force group:<\/strong>\u00a0Das Laufwerk Root<\/strong>\u00a0gibt Zugriff auf die komplette Festplatte. Da neben dem FileServer auch mySQL und anderen Programmdaten liegen werden (welche spezielle Benutzerrechte haben)\u00a0wird Samba als Benutzer\u00a0root<\/strong>\u00a0auf diese zugreifen (die Logindaten werden ignoriert). Wenn eine Datei angelegt wird, wird dessen Owner root<\/strong> sein.<\/p>\ntestparm\r\n<\/pre>\n
\nHinweis: Hat euer Linux-User bereits ein Passwort, kann es empfehlenswert sein dasselbe Passwort auch in Samba wieder zu verwenden.<\/em><\/p>\nsudo smbpasswd -a [username]<\/pre>\n
Alternativ: Samba einrichten -\u00a0NTFS<\/h2>\n
sudo nano \/etc\/samba\/smb.conf<\/pre>\n
[global]\r\nsecurity = user\r\nencrypt passwords = yes\r\n\r\n[Root]\r\ncomment = root of external pidisk1 drive\r\npath = \/media\/pidisk1\r\nread only = no\r\nvalid users = smb-pi\r\n\r\n[Private]\r\ncomment = files to share with family\r\npath = \/media\/pidisk1\/fileserver\/private\r\nread only = no\r\nvalid users = smb-pi,smb-private\r\n\r\n[RollNut]\r\ncomment = contains business related files\r\npath = \/media\/pidisk1\/fileserver\/rollnut\r\nread only = no\r\nvalid users = smb-pi,smb-rollnut\r\n<\/pre>\n
sudo adduser --no-create-home --disabled-login --shell \/bin\/false <username><\/pre>\n
sudo smbpasswd -a smb-rollnut<\/pre>\n
Tipps & Tricks<\/h1>\n
Netzwerk-Cache l\u00f6schen (Windows)<\/h2>\n
net use * \/DELETE<\/pre>\n
Remote Differential Compression (RDC)<\/h2>\n
\n\"Programme -> Windows Features aktivieren\/deaktivieren -> Remote Differential Compression API Support<\/strong>\"<\/p>\nWeiter geht's ...<\/h1>\n