FileServer Raspberry pi {Raspbian Jessie}
1. Inleiding
Als u denkt aan een fileserver, dan denkt u waarschijnlijk aan een centraal gelegen node in een netwerk dat voor iedereen toegankelijk is of toch voor iedereen toegankelijk zou moeten zijn met de juiste rechten verkregen door de administrator. Hierbij denken we dan vooral aan NAS (network attached storage), waarbij foto’s, muziek, films, etc… centraal gelegen zijn opgeslagen. Je kan dit eveneens bekijken als een back-up van uw bestanden aangezien de meeste van deze netwerkapparaten met meerdere harde schijven werken (raid configuraties). De raspberry pi kan eveneens goed dienen als een fileserver, zeker nu de rpi een update heeft gekregen naar een snellere cpu (https://www.raspberrypi.org/products/raspberry-pi-2-model-b/)
2. Eerste stappen
De raspberry pi werkt met het besturingssysteem Raspbian, In de tutorial welbepaald Raspbian Jessie. Deze is een uitgeklede versie van debian. Er bestaan uiteraard meerdere Besturingssystemen voor de RPI, Raspbian is de meest bekende.
U gaat de RPI opstarten, van uitgaande dat deze al klaargestoomd is om opgestart te worden. Is de installatie nog niet gebeurd dan kan u hier terecht (http://computertotaal.nl/overige-elektronica/cursus-deel-1-raspberry-pi-de-ultieme-knutselcomputer-50709/pagina-3). U kan ook altijd verbinding maken via putty.
2.2 Statisch IP adres
Het eerste wat u doet eens ingelogd op de RPI, is deze van een statisch IP adres voorzien. Bij de vorige versie van Raspbian (Wheezy) moest u onder /etc/network/interfaces zijn. Als u het commando cat /etc/network/interfaces uitvoert in Jessie, zal deze u doorverwijzen naar /etc/dhcpcd.conf. U kan ook gewoon het IP blijven gebruiken dat de DHCP u toegewezen heeft, wenst u deze te gebruiken dan kan u dit onderdeel overslaan en rechtstreeks verder gaan naar punt
3. Update en upgrade.
2.2.1 Welke gegevens hebt u nodig:
Voer het volgende commando uit:
Ifconfig
Eth0 Is de vaste internetverbinding
De gegevens in het gele kader hebt u nodig, deze kunnen verschillen.
Etho0: is de vaste internetverbinding die u zal gebruiken als u een fileserver wil maken.
Inet addr: 10.10.10.6 is het IP adres momenteel verkregen door de DHCP van uw router
Bcast: 10.10.10.255 is een broadcast, is het versturen van een boodschap naar alle werkstations van een netwerk. Het bericht wordt naar een standaardadres gestuurd, dat door alle computers wordt geaccepteerd. Dit adres is in een TCP/IP-netwerk het IP-adres 255.255.255.255, hier werkt u op een C-netwerk dus 10.10.10.255 in dit geval. In de meeste gevallen zal dit 192.168.0.255 of 192.168.1.255 zijn.
Mask: 255.255.255.0 is het subsnetmask. Heeft te maken met het soort netwerkklasse, meest gebruikte zijn A,B,C. U hebt ook nog de D en de E klasse.
Meest gebruikte | Eerste adres | Laatste adres | subnetmasker | Aantal adressen |
Klassa A | 0.0.0.0 | 127.255.255.255 | 255.0.0.0 | 16.777.214 |
Klasse B | 128.0.0.0 | 191.255.255.255 | 255.255.0.0 | 65.524 |
Klasse C | 192.0.0.0 | 223.255.255.255 | 255.255.255.0 | 254 |
Sudo nano /etc/dhcpcd.conf
Na dit commando zal u in het configuratiebestand terecht komen waar u het IP adres gaat kunnen vastleggen. In het goed gevulde configuratiebestand gaat u helemaal onderaan enkele regels intypen. Deze informatie hebt u net verkregen aan de hand van het commando ifconfig.
2.2.2 Gegevens ingeven
Eens onderaan het configuratie bestand geeft u volgende gegevens in:
#interface eth0
iface eth0 inet static
static ip_address=10.10.10.6/24 of u geeft hier uw eigen adres in, vergeet /24 niet
netmask=255.255.255.0
static routers=10.10.10.1 is de default gateway: vindt u met het commando: cat /etc/resolv.conf
static domain_name_servers=195.130.131.2 195.130.130.2 deze zijn de dns van telenet. U kan ook 8.8.8.8 8.8.4.4 gebruiken, welke de dns van google zijn.
Nadat u de gegevens hebt in gevoerd, moet u de server herstarten met het volgende commando:
Sudo /etc/init.d/networking restart
Herstart? Uw server heeft nu een statisch IP adres.
3. Update en upgrade
Het updaten en upgraden van het OS (operating-system), zodat u met een volledig up-to-date besturingssysteem kan werken. Hiervoor voert u het volgende commado uit:
sudo apt-get update
sudo apt-get upgrade
Het is mogelijk dat er een bevestiging gevraagd wordt, u kan deze bevestigen met y.
Bij apt-get -u krijgt u volgende output te zien:
-u, –show-upgraded Show upgraded packages; print out a list of all packages that are to be upgraded. Configuration Item: APT::Get::Show-Upgraded. |
Het verschil tussen updaten en upgraden is:
Upgrade: een applicatie wordt vernieuwd. De nieuwe versie is een verzameling upgrades, maar ook mogelijk is een nieuwe user interface. Het versienummer verandert bijvoorbeeld van versie 1.0 naar versie 2.0. Updat HYPERLINK “https://nl.wikipedia.org/wiki/Update_(software)” HYPERLINK “https://nl.wikipedia.org/wiki/Update_(software)” HYPERLINK “https://nl.wikipedia.org/wiki/Update_(software)”e: een applicatie wordt vernieuwd. Kleine foutjes worden bijgewerkt. Het programma is vaak maar op één of enkele plaatsen gewijzigd. Het versienummer verandert bijvoorbeeld van 2.0 naar 2.1. |
Na het updaten en upgraden van ons besturingssysteem, gaat u NTFS-3G installeren.
4. NTFS-3G
Dit wil zeggen dat u een NTFS geformatteerde schijf kan mounten op het linux systeem. Hier wordt getoond hoe u een NTFS geformatteerde HDD op het linux OS mount, het is in dit geval niet aangeraden. Dit omdat u later in de problemen gaat komen met de rechten. U kan dit overslaan en verder gaan naar stap 4.2.1 ext4 mounten.
Met het volgende commando installeert u NTFS-3G:
Sudo apt-get install ntfs-3g
4.1.1 NTFS Schijf mounten (optioneel, u gaat EXT4 gebruiken)
Eens de installatie van de NTFS voorbij is kan u beginnen de HDD via usb te mounten, deze kan u mounten onder /mnt (u kan ook een andere plaats kiezen maar /mnt is de meest voor de hand liggende).
U gaat naar de directory /mnt door in de terminal: cd /mnt uit te voeren.
Eens in de directory /mnt gebruikt u het commando: sudo fdisk -l
Fdisk wordt gebruikt om partities te maken, te verwijderen en/of te formatteren op harde schijven die zijn geformatteerd met het FAT32-bestandssysteem en andere FAT-bestandssystemen.
U zal deze schijf ongetwijfeld herkennen omdat u weet welke hoeveelheid GB’s u wil koppelen.
In onderstaand voorbeeld zal er een 2TB grote HDD gekoppeld worden:
Fdisk -l toont U Disk /dev/sda: 1.8 TB ect.., onderaan ziet u dan /dev/sda1. sda1 is de te koppelen schijf, de 1 na sda verwijst naar 1 partitie. Om deze schijf te koppelen gaat u eerst onder de directory /mnt een map aanmaken.
Volgend commando om de map aan te maken:
sudo mkdir /mnt/externaldrive
let op: geen spatie tussen external en drive, anders maakt u 2 mappen aan. Als u nu het commando ls -l /mnt uitvoert zal u zien dat er een map externaldrive is aangemaakt.
Om de harde schijf nu te koppelen aan het OS voert u het volgende commando uit:
Sudo mount -t auto /dev/sda1 /mnt/externaldrive
Om te controleren kan u het volgende commando uitvoeren: df -Th
Df: wordt gebruikt om de diskspace te tonen. De T staat voor optie en wordt gevolgd door het filesystem weer te geven, h maakt het human leesbaar.
4.1.2 Ext4 Mounten
Als u een NTFS harde schijf heeft, en u hebt bovenstaande uitgevoerd: NTFS schijf mounten. formatteert u deze op volgende wijze:
Eest zorgt u ervoor dat deze volledig umounted is van het filesystem: sudo umount –f /dev/sda1 /mnt/externaldrive waarna u sudo mkfs.ext4 /dev/sda1 uitvoert en y selecteert.
U zal met het commando sudo fdisk -l zien dat de partitie sda1 is, meer info bij NTFS mounten.
Nu gaat u het ext4 filesystem mounten aan het OS, sudo mount –t auto /dev/sda1 /mnt/externaldrive
4.1.3 fstab
De harde schijf is nu fysiek gekoppeld aan het systeem, wanneer u de RPI reboot zal de schijf umounted zijn. U kan dit oplossen door in het configuratiebestand fstab de mount de definiëren.
Volgend commando:
Sudo cp /etc/fstab /etc/fstab.bckp om een backup te nemen van het configuratie bestand.
Sudo nano /etc/fstab om het configuratie bestand te openen.
U plaatst het volgende onderaan het bestand: /dev/sda1 /mnt/externaldrive gevolgd door de format system ntfs of ext4. Zie afbeelding.
Ctrl o ctrl x om op te slaan en af te sluiten, systeem rebooten met sudo reboot.
5. Installeren van samba
Bij deze is de harde schijf gekoppeld aan het OS, nu kan u deze schijf nog niet bereiken via het netwerk.
Daarvoor is het netwerkprotocol samba voor nodig, met samba kan u netwerkshares aanmaken die beschikbaar kunnen zijn in o.a. Windows, Apple computers etc. U kan samba installeren met het volgende commando:
sudo apt-get install samba
Als het bovenstaande commando niet werkt gebruikt u het volgende:
Sudo apt-get install samba samba-common-bin
Eens de installatie van samba gedaan is, maakt u best een back-up van het configuratiebestand smb.conf. Dit is het configuratiebestand dat gebruikt wordt om o.a. de netwerkconfiguratie, beveiliging, shares, etc… in aan te passen. Daarom is het verstandig hiervan een back-up te nemen. Doe dit voor alle configuratie bestanden die u in de toekomst zou willen aanpassen. Back-up neem je met het commando:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Fouten in het originele configuratiebestand? Ga terug naar het originele configuratiebestand met het omgekeerde commando.
sudo cp /etc/samba/smb.conf.backup /etc/samba/smb.conf
5.1 Samba verder uitwerken
Nu samba geïnstalleerd is kunnen we gebruikers en shares aanmaken. Wat wil dit concreet zeggen: u hebt gebruikers op uw RPI, standaard staat de gebruiker pi voor u geconfigureerd met het paswoord raspberry. Alleen is deze nog niet toegevoegd aan samba. Om meerdere gebruikers toe te voegen gebruikt u het commando:
Sudo useradd –m bitfix
U hebt de gebruiker bitfix aangemaakt met useradd, door de optie –m mee te geven hebt u voor de gebruiker bitfix ook een home-directoy aangemaakt. Wil u de gebruiker bitfix toevoegen aan een groep dan is dit mogelijk met het commando: sudo usermod –g mythras bitfix mythras is hier de groep. Hebt u geen groep dan kan u er een aanmaken met het commando sudo groupadd mythras, mythras verandert u uiteraard naar uw eigen gekozen groep.
In bovenstaand voorbeeld zijn de gebruikers kathy en maaike toegevoegd aan het OS en in de groep thuis geplaatst.
U gaat elke gebruiker een paswoord toewijzen omdat samba dit vraagt, dit doet u met het commando: sudo smbpasswd –a wil u dat de gebruiker een nul paswoord heeft, gebruikt u het commando: sudo smbpasswd –an
VB: sudo smbpasswd –an maaike
Sudo smbpasswd –a kathy
Sudo smbpasswd -a bitfix
Sudo smbpasswd -a pi
Samba zal u vragen het paswoord 2x in te voeren, eens dit gebeurd is, zijn de gebruikers toegevoegd aan samba en kan u verder met de shares aan te maken.
5.1.1 Directories
De gebruikers en de groepen zijn aangemaakt, op deze manier gaat u meer inzicht krijgen voor de aan te maken directories.
De volgende Directories gaat u aanmaken:
De publieke shares en de private shares, volgende bestaan uit:
De publieke shares
- Video
- Afbeeldingen
- Muziek
- Allerlei
De private shares
- Bitfix
- Pi
- Maaike
- Kathy
5.1.2 Directories aanmaken
Volgende directories maakt u aan:
Sudo mkdir /mnt/externaldrive/publiek
Sudo mkdir /mnt/externaldrive/prive
Met ls –l /mnt/externaldrive kan u zien dat de 2 directories zijn aangemaakt.
U gaat nu onder de directory publiek (cd /mnt/externaldrive/publiek) onderstaande mappen aanmaken.
- Video
- Afbeeldingen
- Muziek
- Allerlei
Eens onder de directory /mnt/externaldrive/publiek voert u volgende commando’s uit:
Sudo mkdir video afbeeldingen muziek allerlei
Daarna gaat u onder de directory prive (cd /mnt/externaldrive/prive) volgende mappen aanmaken. U gebruikt uiteraard uw eigen aangemaakte gebruikers.
Sudo mkdir bitfix maaike pi kathy vergeet de spaties niet.
U zal ondertussen al gezien hebben dat de directory’s en mappen onder /mnt/externaldrive toegewezen zijn aan root, dit komt omdat momenteel root de eigenaar is van deze directory’s en mappen alsook de groep. Dit gaat u nu juist zetten.
5.1.3 permissies
Om de rechten juist te zetten gebruikt u volgende commando’s, u gaat eerst naar cd /mnt/externaldrive/.
Sudo chgrp –R thuis publiek
Sudo chmod –R 755 publiek
U zal zien dat de groep root nu is aangepast naar beheerder, beheerder is de groep die u hebt aangemaakt door het commando sudo groupadd thuis ( of uw eigen groepsnaam). Door het commando sudo chmod -R 755 publiek, gaat u de rechten op de directory en alles wat eronder ligt aanpassen. Hierdoor heeft de gebruiker alle rechten en kunnen de groep en others niet schrijven.
- -R is recursief en zal de opdracht van onder naar boven uitvoeren, hierdoor hebben alle onderliggende mappen dezelfde rechten.
755 zijn de rechten, deze zijn octaal in unix systems, schematisch voorbeeld.
Dit doet u ook voor de directory prive, uiteraard gaat u onder de directory /mnt/externaldrive staan.
Sudo chgrp –R thuis prive
Sudo chmod –R 755 prive
Daarna gaat u de rechten van de gebruikers aanpassen onder de directory /mnt/externaldrive/prive,.
In de afbeelding hieronder ziet u hoe de rechten nog van root zijn, terwijl de groep als is aangepast naar thuis.
eens onder directory prive of hoe u deze ook genoemd heeft, gaat u voor elke gebruiker de rechten aanpassen zodat de gebruiker eigenaar is van zijn eigen directory.
- Sudo chown -R maaike:thuis maaike/
- Sudo chown -R pi:thuis pi/
- Sudo chown -R bitfix:thuis bitfix/
- Sudo chown -R kathy:thuis kathy/
Na het ingeven van de commando’s moet dit er als volgt uitzien.
5.2 Smb.conf
Shares aanmaken in samba is niet zo moeilijk, het belangrijkste is dat u een back-up genomen heeft van het configuratiebestand. Zo kan u steeds, wanneer u een fout begaan hebt terug naar het origineel. Scrol even naar boven om het te bekijken wanneer u dit hebt overgeslagen.
U opent het smb configuratiebestand door het commando: sudo nano /etc/samba/smb.conf er zal een configuratiebestand openen. Nano zorgt hiervoor, deze is een editor.
Het eerste wat u doet is de workgroup instellen, normaal heet deze standaard in een windows netwerk workgroup. Moest u deze aangepast hebben naar iets anders dan voert u dit in, in het configuratiebestand.
Samba moet weten welke shares je wil delen, u gaat onderaan het configuratiebestand voor elke share een nieuwe blok toevoegen. Dit blok bevat de locatie, toegangscontrole etc. van de share.
U zal in alle waarschijnlijkheid mogelijke data willen uitwisselen aan vrienden, kennissen of familie. Hiervoor hebt u de directory publiek aangemaakt met de onderliggende mappen.
- Allerlei
- Afbeeldingen
- Foto
- video
Nu de share: onderaan uw configuratiebestand plaatst u…
[Public share]
comment = Public share
path = /mnt/externaldrive/publiek/
writable = yes
write list = @thuis
public = yes
browsable = yes
guest ok = yes
Eens u dit heeft ingevoerd, drukt u op CTRL O en enter om op te slaan, CTRL X om af te sluiten. U herstart de samba server met het commando: sudo /etc/init.d/samba restart.
Nu hebt u de publieke share geplaatst, tijd voor de private shares, onder de publieke share die u net gemaakt hebt gaat u voor elke gebruiker die u hebt aangemaakt een share plaatsen in het smb.conf bestand.
U plaatst het volgende onderaan het configuratiebestand…
[Prive kathy]
comment = prive kathy
path = /mnt/externaldrive/prive/kathy
valid users = kathy
read only = no
writable = yes
Wederom drukt u op CTRL O en enter om op te slaan, CTRL X om af te sluiten. U herstart de samba server met het commando: sudo /etc/init.d/samba restart.
6. Samba shares benaderen Windows
Hoe kan u deze aangemaakte shares nu banaderen in Windows, hiervoor opent u de verkenner.
Aan de linker zijde, onder netwerk zal u de naam van je raspberry pi zien staan. Standaard zal dit RASPBERRY zijn. Staat deze er niet, gaat u bovenaan het IP adres invoeren van de raspberry pi.
Eens u entert komt u onder de directory RPI en zal u de shares kunnen bekijken, de private mappen zullen toegankelijk zijn onder uw gebruikersnaam en paswoord.
Als u niet inlogt in uw private map, zal u niet kunnen schrijven onder de publieke share, deze zal u aanzien als guest.