Nachdem ich in meinem letzten Artikel erklärt habe, wie man den Futro S400 aufsetzt und Debian 7 "Wheezy" installiert, möchte ich nun meinen Weg erklären, wie ich mit dem kleinen und stromsparenden System eine Art Mini-NAS aufgesetzt habe. Ein NAS ist ein "Network Attached Storage", also quasi ein Netzlaufwerk was als Medien-, Backup- oder sonstwas-Festplatte dienen kann. Da man auf die Daten dann über das ganze Netzwerk zugreifen kann, kann man die Fotos auf der Festplatte nicht nur auf dem eigenen Rechner, sondern auch auf dem TV im Wohnzimmer über die Playstation 3 oder ähnliche Wege anschauen. Da ich in meinem Fall die Daten auf einer lokalen 2 TB Western Digital Festplatte habe, wird die Netzwerkplatte als Backup-Festplatte verwendet und die Backup-Daten dienen dann zusätzlich zum Beispiel zum streamen an den Fernseher oder wenn man mittels VPN auf das Heimnetzwerk zugreift als Zugriffspunkt auf benötigte Daten.
1. Das Prinzip
Da der Futro S400 nur einen internen IDE Anschluss hat, eignet sich dieser nicht wirklich als echtes NAS System. Ist aber auch nicht weiter schlimm, da man in einem solchen Fall eher auf echte NAS Lösungen setzt oder sich einen ITX PC zusammenschraubt mit einem geeigneten Gehäuse, wo man mittels Hot-Swap bis zu 5 Festplatten unterbringen kann + noch mal 2 auf dem boden (System-Festplatte, am besten als SSD). Da ich aber eine externe Festplatte hier herumliegen habe, dachte ich, dass diese es vollkommen tut für das bisschen Backup und Zugriff. Also wird die Festplatte über USB mit dem Futro S400 verbunden und dieser wird dann so konfiguriert, dass er die Festplatte als Netzwerkfestplatte frei gibt, damit jede Person im Netzwerk auf die Platte zugreifen kann. Da aber immer wieder Freunde im WLAN sind, habe ich diese Freigabe noch passwortgeschützt. Wie das ganze geht, erkläre ich nun.
2. Die Festplatte einrichten
Da unser Debian keine grafische Oberfläche hat, müssen wir uns an den Terminal-Tools bedienen. Sämtliche Befehle führe ich als root aus (mit "su" als root anmelden)! Das Dollar-Zeichen ($) gibt an, dass dies der Eingabe-Prompt ist, wo ich einen Befehl eingebe, während alles andere Ausgabe ist. Wenn man eine Festplatte, oder ein anderes Laufwerk, ansteckt, so passiert exakt gar nichts. Jegliche Laufwerke, die erkannt werden (gilt für jede Hardware), wird im Verzeichnis /dev/ auftauchen. Festplatten (S-ATA, was heutzutage überall Standard sein sollte) tauchen dann als z.B. /dev/sda1, /dev/sdb, /dev/sdc5 auf. Jetzt ist nur die Frage, welche Festplatte die der externen Festplatte ist. Einfachster Weg: als root angemeldet (su) schauen wir uns erstmal die letzten Ausgaben an, was das System so gemacht hat:
$ dmesg
Da ist eigentlich erstmal egal, was da steht. Nun stecken wir die Festplatte an, warten einen Augenblick und geben erneut dmesg aus. Dann dürfte eine neue Ausgabe nach dem Teil erscheinen, der vorher schon da war, die etwa so ausschaut (gekürzte Ausgabe):
$ dmesg
[...]
[ 4392.852068] usb 1-3: new high-speed USB device number 2 using ehci_hcd
[ 4392.985446] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4392.985467] usb 1-3: Manufacturer: Western Digital
[ 4393.082281] Initializing USB Mass Storage driver...
[ 4393.083046] usbcore: registered new interface driver usb-storage
[ 4393.083057] USB Mass Storage support registered.
[ 4394.088746] sd 2:0:0:0: Attached scsi generic sg1 type 0
[ 4394.089541] sd 2:0:0:0: [sdb] Write Protect is off
[ 4394.090501] sd 2:0:0:0: [sdb] No Caching mode page present
[ 4394.090537] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[ 4394.095370] sd 2:0:0:0: [sdb] No Caching mode page present
[ 4394.095412] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[ 4394.139209] sdb: sdb1 sdb2
[ 4394.146856] sd 2:0:0:0: [sdb] No Caching mode page present
[ 4394.146895] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[ 4394.146925] sd 2:0:0:0: [sdb] Attached SCSI disk
Wie man nun unschwer erkennt, wurde am USB-Port 1-3 ein USB device von Western Digital erkannt. Nachdem der USB-Storage Treiber geladen wurde, wurde die Festplatte ins System gebracht (aber noch nicht eingebunden). Wie man leicht erkennt, ist die Festplatte als "sdb" erschienen. Nun lassen wir uns alle Partitionen der Festplatte anzeigen:
$ ls /dev/sdb*
/dev/sdb
/dev/sdb1
/dev/sdb2
So, die Festplatte (sdb) hat zwei Partitionen (sdb1 und sdb2). Da die Festplatte vorher an Windows hing und NTFS formatiert ist, mounten wir die Festplatte nun einfach mit dem NTFS-Treiber. Eine der beiden Partitionen ist eine typische zweite Partition, die automatisch von Windows angelegt wird beim formatieren. Diese ist aber nicht NTFS formatiert, weswegen es zu einem Fehler kommen müsste beim einbinden. Probieren wir es also aus! Standardmäßig ist kein passender NTFS Treiber bei Debian Wheezy installiert, welcher gut mit read/write und co. klar kommt, weswegen wir ihn zuerst installieren müssen. Danach wird die Festplatte unter /media/exthdd eingehängt.
$ apt-get install ntfs-3g
$ mkdir /media/exthdd
$ mount -t ntfs-3g /dev/sdb1 /media/exthdd
# Es kommt ein Fehler, dass sdb1 nicht NTFS-formatiert ist, also versuchen wir es mit sdb2
$ mount -t ntfs-3g /dev/sdb2 /media/exthdd
Bei sdb2 hat es nun funktioniert und die Festplatte wurde eingebunden. Wenn wir nun ins Verzeichnis "/media/exthdd" gehen, sehen wir den Inhalt der Festplatte. Also können wir das Verzeichnis "/media/exthdd" nun im Netzwerk freigeben.
3. Samba installieren und Nutzer anlegen
Wer mitgedacht hat, so wie ich, und beim installieren des Systems schon "Dateiserver" ausgewählt hat, dem erspart es nun hier eine Zeile. Denn dann muss man nicht mehr "samba" von Hand installieren. Samba, nein, wir sind nicht in Brasilien, ist eine nette Software für Linux, die dafür sorgt, dass man Ordner im heterogenen (Windows + Linux (+Mac)) Netzwerk freigeben kann. Von Linux zu Linux bzw. von Linux zu Mac ist NFS (Network File System) oftmals der bessere Weg, auf den ich hier aber nicht eingehen möchte, aufgrund zu geringer Erfahrung damit. Wir installieren also samba und legen dann direkt den Nutzer an, als den man sich dann bei Windows anmeldet, wenn man auf die Freigabe zugreifen möchte. Dieser bekommt auch direkt ein Passwort verpasst.
# Wenn noch nicht geschehen dann samba installieren
$ apt-get install samba
# Nutzer anlegen und Passwort setzen
$ adduser jose
$ smbpasswd -a jose
Wenn wir schon mit samba arbeiten, brauchen wir auch einen stilechten Samba-Tänzer, in dem Falle José, der Einfachheit halber jose genannt.
4. Samba konfigurieren
Im nächsten Schritt konfigurieren wir samba, sodass unsere Festplatte freigegeben wird, aber unter der Bedingung, dass man sich als José anmeldet. Die Konfigurationsdatei von samba finden wir unter "/etc/samba/smb.conf". Damit wir die Originaldatei behalten, benennen wir diese einfach um und erstellen uns unsere eigene kleine smb.conf Datei.
# smb.conf in smb.conf.orig umbenennen und smb.conf anlegen
$ mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
$ touch /etc/samba/smb.conf
# smb.conf bearbeiten, z.B. mit vim oder emacs, etc.
$ vim /etc/samba/smb.conf
So, jetzt haben wir eine leere smb.conf Datei in vim geöffnet (falls vim nicht gefunden wurde, dann mittels "apt-get install vim" installieren oder vi verwenden). Mit einem Druck auf "i" für Insert können wir Inhalt einfügen. Dieser schaut wie folgt aus:
[global]
workgroup = LOCAL
security = user
encrypt passwords = yes
[homes]
comment = Home Directories
browsable = no
read only = no
create mode = 0750
[festplatte]
path = /media/exthdd
available = yes
writable = yes
comment = smb share
guest ok = no
valid users = jose
create mask = 0644
directory mask = 2777
Ist der Inhalt eingefügt, beendet man den Insert-Mode mit einem Druck auf ESC, gibt dann ":wq" ein, damit geschrieben (w - write) und die Datei geschlossen (q - quit) wird. Diese muss persönlich angepasst werden. Workgroup beinhaltet die Arbeitsgruppe der Windows-PCs. Dies ist standardmäßig "WORKGROUP", kann aber auch verändert sein in z.B. wie bei mir "LOCAL". Die Sicherheit ist user, es wird also ein user verlangt, und das Passwort ist verschlüsselt abgelegt. Als nächstes folgen die home Verzeichnisse [homes] die wir nicht freigeben wollen (browsable = no; read only = no). Nun zum wichtigen Teil: [festplatte]. In den eckigen Klammern ist der Freigabename angegeben. Dieser kann einfach "festplatte" lauten oder etwas kreativer sein, wie zum Beispiel "SaoPaulo", um bei Brasilien zu bleiben. Der Pfad ist wie vorher in mount angegeben "/media/exthdd". Der comment kann nach belieben angepasst werden, der Rest ist so am besten. Es darf geschrieben werden, nur "jose" darf darauf zugreifen, create und directory mask sorgen dafür, dass die Dateiberechtigungen ideal sind, da habe ich mit den Werten die besten Erfahrungen gemacht.
Nun testen wir die smb.conf-Datei:
$ testparm
Wenn kein Fehler kommt, dann drückt man einfach enter, man bekommt die ganze config-Datei angezeigt und man kann zufrieden mit sich und seiner config-Datei sein. Sollten Fehler auftreten, dann darf man diese suchen, beheben und oft genug google und co. befragen.
Da beim installieren von samba (wann auch immer) samba automatisch gestartet wird, brauchen wir dies nicht erneut machen, sondern wir starten samba einfach neu.
$ /etc/init.d samba restart
Dies sollte fehlerfrei laufen, wenn testparm nichts ausgegeben hat. Ist dies der Fall, so läuft samba so, wie es soll. Erfolg!
5. Festplatte bei jedem Start automatisch einhängen
Die Festplatte haben wir vorhin mittels "mount -t" eingehängt. Das heißt, dass beim nächsten Systemstart dies erneut durchgeführt werden müsste. Das wollen wir aber nicht, sondern die Festplatte soll automatisch unter "/media/exthdd" zur Verfügung stehen. Damit das möglich ist, müssen wir sie in "/etc/fstab" eintragen. Dort wird dann auch der Eigentümer festgelegt. Da wir mit José auf die Festplatte zugreifen (mit root können wir eh immer darauf zugreifen und falls wir die Platte an Windows hängen, ist dem das eh egal), soll die Festplatte als Eigentümer unseren José haben. Dazu wird aber dessen User ID (uid) und Group ID (gid) benötigt. Dies finden wir einfach heraus:
$ cat /etc/passwd
# [...]
jose:x:1001:1001::/home/jose:/bin/sh
# [...]
Die genaue Bedeutung der einzelnen Bereiche kann hier nachgelesen werden. Für uns interessant ist das "1001:1001". Denn das ist die UID gefolgt von der GID.
Bei der Festplatte gibt es auch eine einzigartige ID, die UUID (Universally Unique Identifier). Denn unsere Platte wurde unter "/dev/sdb" im System bekannt, was meistens auch so bleibt, aber nicht muss. Durch einen USB-Stick oder ähnliches kann dies beim nächsten booten anders ausschauen und dann haben wir das Problem. Mit der UUID passiert das nicht. Wenn die UUID als /media/exthdd gemountet werden soll, dann passiert das immer. Also finden wir die UUID von /dev/sdb2 (unsere gemountete Partition) einmal heraus:
$ blkid /dev/sdb2
/dev/sdb2: LABEL='Amazonas' UUID='12345678912345E6' TYPE='ntfs'
Hier sehen wir "/dev/sdb2", die auf den Namen "Amazonas" hört, wie ich sie liebevoll am Windows-PC getauft habe. Daraufhin kommt die benötigte UUID und dahinter sehen wir auch noch einmal, dass es sich um NTFS handelt. Auf dem Weg kann man übrigens auch herausfinden, welches Dateisystem formatiert wurde, wenn man sich nicht sicher ist und kann dies beim "mount -t" Befehl oben ersetzen, zum Beispiel durch FAT32.
Nun bearbeiten wir die "/etc/fstab", damit die Amazonas-Festplatte bei jedem booten eingehängt (gemountet) wird.
$ vim /etc/fstab
# ganz unten in der Datei nach einer Leerzeile einfügen:
#externe Festplatte
UUID=12345678912345E6 /media/exthdd ntfs-3g rw,uid=1001,gid=1001,dmask=0002,fmask=0003 0 0
Dann die Datei speichern und vim verlassen. Wir mounten unsere Festplatte mit der UUID als "/media/exthdd" mit ntfs-3g, da es ein NTFS-System ist. Wir wollen schreiben und lesen (rw) und haben hier die uid und gid, die wir vorher herausgefunden haben (in beiden Fällen 1001). dmask und fmask habe ich so von anderen Seiten kopiert, weil dies einfach fehlerfrei lief. Wer da Interesse hat, muss das Internet befragen, da kann ich leider nicht weiter helfen. Das einzige, was ich weiß ist, dass es so wunderbar funktioniert.
Nun wird bei jedem Systemstart automatisch die Festplatte eingehängt und unter "/media/exthdd" bereitgestellt, worauf dann samba zugreif, was bei jedem Systemstart eh startet. Erfolg Nummer zwei!
6. Zugriff über Windows (oder Mac)
Das System läuft. Jetzt können wir auch von Windows aus auf unsere Netzwerkfreigabe zugreifen. Also gehen wir auf den Arbeitsplatz und geben oben in die Adressleiste zwei Backslashes und die IP-Adresse vom Server ein, also zum Beispiel:
192.168.0.5
Daraufhin öffnet sich der Login-Prompt von unserem samba-Server und verlangt die Login-Daten von unserem José, dem Sambatänzer aus Sao Paulo. Daten eingegeben und schon haben wir Zugriff auf die Freigaben, wo sofort der Ordner "festplatte" auftaucht. Doppelklick darauf und es passiert meist erstmal nichts. Warum? Weil die Festplatte im Ruhezustand ist und hochfahren muss. Man hört also schön, während Windows lädt, wie die Festplatte sich andreht und immer schneller wird. Einen kurzen Augenblick später sehen wir den Inhalt der Festplatte. Kopieren von Dateien, löschen sowie anlegen von Dateien klappt problemlos. Also haben wir unser Ziel erreicht!
Wir haben nun an unseren kleinen Fujitsu Futro S400 mit Debian 7 "Wheezy" eine externe Festplatte angeschlossen, welche bei jedem Systemstart eingebunden wird. Ebenso können wir über das Netzwerk auf diese zugreifen, aber nur diejenigen, die die Zugangsdaten haben. Somit kann nicht jeder Gast, welcher vom WLAN Zugriff auf das LAN hat, auch noch auf unser NAS zugreifen. Zwar nicht so schnell wie ein dediziertes NAS (dank USB 2.0) und nicht so schön, aber für den Anfang reicht es und für Backup über Netzwerk ist es wunderbar, dank Gigabit Ethernet am Futro S400. Habt ihr auch eine ähnliche Lösung zuhause laufen oder dreht bei euch ein "echtes" NAS? Ich hoffe, dass ich mit dieser Anleitung ein wenig beim Einstieg helfen konnte. Sollte jemand tatsächlich nach meiner Anleitung vorgehen und es treten Fehler auf, so hinterlasse doch bitte einen Kommentar und ich werde schauen, was ich für dich machen kann!
2 comments
Reply to comment
28 Jun 2014, 19:07
Peterhi sven, habe bisher puppy linux oder tinycorelinux benutzt, bei denen das mounten anderer partitionen der festplatte eingebaut war. habe gerade debian wheezy + lxde (live) runtergeladen und auf freier partition installiert, konnte allerdings keine andere partition mounten. habe deine beschreibung nach viel lesen in docs und manuals angewendet: SUPER !!! alles mountet beim start. ganz herzlichen dank. peter
02 Dec 2013, 16:07
RolandHi Sven, habe soeben anhand Deiner Super-Beschreibung mein RaspberryPi zum NAS gemacht. Bin ein Linux_Neuling, aber dank Deiner Hilfe hat alles wunderbar geklappt. Was würden wir ohne Menschen wie Dich machen????
Frohe Weihnachten und einen guten Rutsch
Roland