Server::Samba
SAMBA
Introductie Samba
Een netwerkomgeving is vaak een samenvoeging van verscheidene types servers (Windows 2000 Server, Windows NT 4.0, Linux en Novell Netware) en werkstations (Windows NT/2000/XP/9x/Me en Linux).
Het Network File System (NFS) protocol maakt het mogelijk heterogene bestandssystemen met elkaar te delen. Helaas wordt deze standaard niet ondersteund door Microsoft, die over een eigen systeem voor bestandsdeling beschikt.
Het Server Message Block (SMB) protocol van Microsoft en Intel laat Windows systemen toe bronnen als disks en printers te delen.
Samba is het netwerkprotocol dat de interface van Linux vormt voor een Windows netwerk. Het is een groep programma’s die het SMB-protocol implementeren en die een Linux-systeem omvormen tot een SMB cliënt of server.
M.a.w. Samba laat toe Linux disks en printers ter beschikking te stellen aan gebruikers van Windows systemen. Evenzo kan je bronnen van Windows gebruikers ter beschikking stellen aan Linux gebruikers.
Het SMB-protocol is gebaseerd op de NetBIOS service (API). Dit is een software interface, ontworpen voor communicatie tussen machines, die voorziet in een naamdienst. Om dit te kunnen doen werken, moet men natuurlijk over één of ander transportprotocol beschikken. Dit protocol werd het NetBIOS Extended User Interface (NetBEUI) protocol genoemd. Dit protocol maakte het mogelijk dat elke machine een unieke naam kon claimen voor het LAN, een naam die 15 karakters lang mocht zijn. In de begindagen was NetBEUI zeer populair, maar met de opkomst van TCP/IP dienden zich nieuwe problemen aan. NetBEUI was bovendien niet routable, zodat een implementatie van NetBIOS over TCP/IP al snel een noodzaak werd. Men moest dus in mechanismen voorzien om de enkelvoudige NetBIOS namen te mappen naar sockets. Hoe dit gebeurt maakt het onderwerp uit van twee RFC's (RFC 1001 en RFC 1002) en wordt NBT (NetBIOS over TCP) genoemd.
Tegenwoordig spreekt men over het SMB/CIFS protocol. CIFS is de nieuwe naam die Microsoft probeert te promoten en verwijst naar de internetmogelijkheden van het protocol (Common Internet File System).
Samba biedt bestands- en printdeling, verificatie en autorisatie, naamresolutie en bladerdiensten. Bestands- en printerdeling, verificatie en autorisatie worden beheert door de smbd daemon, terwijl de nmbd daemon de naamresolutie en de bladerfunctie controleert. Een Linux werkstation wordt op deze wijze een volwaardig lid van een Microsoft-netwerk.
Samba installeren
Zie ook How to Install Samba on Ubuntu
Voor de installatie van Samba is het volgende nodig:
- Een Ubuntu 16.04-server of hoger met een niet-root sudo-gebruiker. Raadpleeg de Initial Server Setup with Ubuntu 16.04 voor meer informatie.
Samba heeft bescheiden RAM- en CPU-vereisten en zal goed functioneren op een server van 1 GB. - In de Firewall Inkomende TCP-verbindingen toestaan op de poort 445.
Vóór het installeren van nieuwe packages is het raadzaam de lokale repository index te updaten zodat deze de meest up-to-date versies bevat.
root@testserver:~# apt update All packages are up to date.
Installeer Samba
root@testserver:~# apt install samba
Dit commando installeert en start zowel de Samba server smbd als de Samba NETBIOS server nmbd.
Om problemen te voorkomen die kunnen ontstaan door hety draaien van een ongeconfigureerde en netwerk-anablede service is het verstandig de Samba server te stoppen totdat alle configuratie details geinstalleerd zijn.
systemctl stop smbd.service
Maak gedeelde mappen aan
De Samba Network Server wordt op deze server ingezet voor het delen van geselecteerde gebruikersmappen (shares) zijnde:
- /home/files
de netwerk file shares - /home/archief
beperkt toegankelijke archiefmappen - /var/www/html
beperkt toegankelijke webroot - /home/pwgdata/galleries
locatie van de Piwigo images
Maak te delen mappen, zet permissies en owners
/home/files:
We zetten de permissies van de sub-mappen naar 755.
Als laatste zetten we '/home/files' naar 555, waarmee we de mappenstructuur vergrendelen.
Voor de Mediaserver Serviio is het noodzakelijk dat ook de 3de partij 'guests' leestoegang krijgt tot naar in ieder geval de mappen afbeeldingen, muziek en video.
root@testserver:~# mkdir /home/files/afbeeldingen root@testserver:~# mkdir /home/files/documenten root@testserver:~# mkdir /home/files/e-books root@testserver:~# mkdir /home/files/muziek root@testserver:~# mkdir /home/files/video root@testserver:~# chown -R files:lanshare /home/files root@testserver:~# chmod -R 755 /home/files root@testserver:~# chmod 555 /home/files root@testserver:~# find /home/files -type f -name '*' -exec chmod 644 '{}' \;
/home/archief:
root@testserver:~# mkdir /home/archief root@testserver:~# chown archief:lanshare /home/archief root@testserver:~# chmod 700 /home/archief
/var/www/html:
Al aangemaakt door installatie apache2.
Owner en groep zijn: www-data
Zie ook
var-www-owner-for-apache2-and-ftp-access
Plaats geen normale gebruikers in de www-data groep! www-data is bedoeld als een user en groep zonder schrijftoegang en uitsluitend gebruikt door de webserver zelf.
Gebruik een willekeurige bestaande user zoals bijv root en zorg dat wereld read access heeft (geen write!). Plaats de www-data user ook niet in een andere groep!
root@testserver:~# chown -R root:lanshare /var/www root@testserver:~# chmod -R 755 /var/www root@testserver:~# find /var/www/html -type f -name '*' -exec chmod 644 '{}' \;
/home/pwgdata:
root@testserver:~# mkdir /home/pwgdata root@testserver:~# mkdir /home/pwgdata/galleries root@testserver:~# chown -R www-data:lanshare /home/pwgdata root@testserver:~# chmod -R 751 /home/pwgdata root@testserver:~# find /home/pwgdata/galleries -type f -name '*' -exec chmod 644 '{}' \;
Samba configureren
Edit /etc/samba/smb.conf (maak eerst kopie en noem smb.conf.org)
Zie hier eindresultaat /etc/samba/smb.conf inclusief nadere informatie van de verschillende directives in het confuguratiebestand.
Global Opties:
workgroup = MSHOME server string = Homeserver interfaces = lo eno1 bind interfaces only = yes log file = /var/log/samba/log.%m max log size = 1000 panic action = /usr/share/samba/panic-action %d
Vind de homeserver interfaces met commando # ip link
Authenticatie:
server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* pam password change = yes map to guest = bad user
Sla smb.conf op en test:
root@homeserver:~# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Samba-gebruikersaccounts
De Samba server is alleen voor alle gebruikers op het Thuisnetwerk.
Dat zijn in dit geval:
- ububen
- ben
- benjamin
- erica
- files
- archief
Hiervoor zijn op de server al systeem-accounts en home mappen aangemaakt. Zie Server::Configureren > Gebruikers en Groepen
Voor deze gebruikers moeten nu ook Samba-accounts aangemaakt worden. Om het eenvoudig te houden gebruiken we dezelfde wachtwoorden.
root@testserver:~# smbpasswd -a ububen New SMB password: Retype new SMB password: Zie LastPass 006-Homeserver /user/admin Added user ububen. root@testserver:~# smbpasswd -a ben New SMB password: Retype new SMB password: Zie LastPass 014a-Homeserver user Added user ben. root@testserver:~# smbpasswd -a benjamin New SMB password: Retype new SMB password: Zie LastPass 016-Homeserver user Added user benjamin. root@testserver:~# smbpasswd -a erica New SMB password: Retype new SMB password: Zie LastPass 015a-Homeserver user Added user erica. root@testserver:~# smbpasswd -a files New SMB password: Retype new SMB password: Added user files. root@testserver:~# smbpasswd -a archief New SMB password: Retype new SMB password: Added user archief.
Het resultaat kan bekeken worden met commando # pdbedit -L
root@testserver:~# pdbedit -L ububen:1000:ben makkink benjamin:1006: files:1004: ben:1003: erica:1001: archief:1005:
Of met meer details (in dit geval als voorbeeld alleen user 'files')
root@testserver:~# pdbedit -L -v files
Unix username: files
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2461247913-2905059558-3070338486-1004
Primary Group SID: S-1-5-21-2461247913-2905059558-3070338486-513
Full Name:
Home Directory: \\HOMESERVER\files
HomeDir Drive:
Logon Script:
Profile Path: \\HOMESERVER\files\profile
Domain: HOMESERVER
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 16:06:39 CET
Kickoff time: Wed, 06 Feb 2036 16:06:39 CET
Password last set: Sat, 23 Nov 2024 16:07:06 CET
Password can change: Sat, 23 Nov 2024 16:07:06 CET
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Samba Network Server
Beperking toegang tot 'trusted-IP's'
De feitelijke toegang van de specifieke mappen wordt vervolgens beperkt tot specifieke netwerkstations (hosts) gebaseerd op IP. Toegang zal alleen verleend worden aan de IP's gespecificeerd in de directives van de shares in smb.conf. Zie ook Securing Samba van de Samba HOWTO and Reference Guide.
In de router worden de geselecteerde netwerkstations een vast IP-adres toebedeeld en gebonden aan het MAC-adres.
Zie ook Server::Installeren Connectietype DHCP en IP reservering op router
Selecteer deze vaste IP's in de range 192.168.1.0/26 (192.168.1.0 t/m 92.168.1.63) . Deze IP-range is bedoeld voor 'trusted' hosts.
Zorg ervoor dat in de router de DHCP pool begint buiten deze range van 0-63!
Voor security is het dus wel belangrijk dat de router beveiligd is met een sterk wachtwoord.
Voorbeeld mainserver configuratie in Fritz!Box router:
File Server
Bewerk het bestand /etc/samba/smb.conf en voeg aan het einde toe:
[files] comment = Gedeelde bestanden en mappen path = /home/files force user = files force group = lanshare read only = No create mode = 0644 directory mask = 0755 hosts deny = ALL hosts allow = 192.168.178.0/26 browsable = Yes valid users = @lanshare
Verklaring smb.conf directives
Zie ook Introduction to Samba en/of Slackwiki Samba
|
File Server vs Lokale Opslag Strategie
Het zou mooi zijn de gehele administratie van alle netwerkgebruikers te delen op de server in /home/files/documenten.
Hieraan kleeft echter een risico.
Als om wat voor reden dan ook de server niet bereikbaar is dan zijn mogelijk kritische gegevens niet bereikbaar!
Omdat de gezinsadministratie voor 99% beheerd wordt op de PC 'ben-xps' worden deze bestanden daarom dan ook lokaal opgeslagen op 'ben-xps'.
Om vervolgens deze bestanden toch ook beschikbaar te hebben in de file server share '/home/files/documenten' maken we in deze laatste gedeelde map een nieuwe map aan met de naam 'Mirror-bens-pc'.
Met het programma 'SyncBack' op de PC 'ben-xps' kopieren we vervolgens dagelijks de bestanden in 'D:\Data\documenten\' naar de fileserver map '/home/files/documenten/mirror-bens-pc'. Vanwege de 'mirror' optie worden bestanden alleen in het doel verwijderd. Zo doende blijven deze mogelijk kritische bestanden altijd bereikbaar, ook vanaf het internet via VPN.
Zie op de windows PC 'ben-xps' de instellingen van het programma SyncBackFree in het profiel 'mirror'.
Van deze lokale data op 'ben-xps' wordt met BackupPC al dagelijks een een backup gemaakt dus bij de backup van 'server-documenten' sluiten we de map 'Mirror-bens-pc' uit. Zie hiervoor Server::Backup en Restore Host 'server-documenten' configuratie
Webserver
De Webserver bestanden bevinden zich op locatie '/var/www/html'. Zie sectie Server: Apache > Sites Virtual Hosts
Omdat de server binnen het locale netwerk ondergebracht is kunnen de websites eenvoudig via Samba geplaatst en onderhouden worden.
De opzet is in grote lijnen gelijk aan wat hierboven voor de 'File Server' beschreven is.
Toegang is alleen toegestaan voor een bestaande gebruiker vanaf een LAN PC met IP 192.168.1.2 (ben-pc).
Bewerk het bestand /etc/samba/smb.conf en voeg aan het einde toe:
[website] comment = Website Makkink.eu path = /var/www/html force user = www-data force group = lanshare read only = No create mode = 0644 force create mode = 644 directory mask = 0751 force directory mode = 0755 hosts deny = ALL #alleen ben-pc hosts allow = 192.168.178.2 browsable = No
Archief
In het archief bewaart de beheerder historisch materiaal en is alleen bereikbaar via zijn werkstation met IP 192.168.1.2
Bewerk het bestand /etc/samba/smb.conf en voeg aan het einde toe:
[archief] comment = Archief path = /home/archief force user = archief force group = lanshare read only = No create mode = 0644 directory mask = 0755 hosts deny = ALL #alleen ben-pc hosts allow = 192.168.178.2 browsable = No
PIWIGO
In /home/pwgdata/galleries plaatst de beheerder de afbeeldingen voor Piwigo en is alleen bereikbaar via zijn werkstation met IP 192.168.1.2
Uit de doos slaat piwigo de data op in de webroot, naar mijn inzicht een slechte gewoonte, al is het alleen al maar voor de overzichtelijkheid en backupopties van de waardevolle data.
De Piwigo mappen die waardevolle eigen data bevatten plaatsen we daarom op buiten de webroot onder /home/pwgdata.
Zie hiervoor PIWIGO::Beveiliging Piwigo data buiten webroot
Zie ook Piwigo::Albums Inrichten Samba setup
Bewerk het bestand /etc/samba/smb.conf en voeg aan het einde toe:
[piwigo] comment = Piwigo Gallery path = /home/pwgdata/galleries force user = www-data force group = lanshare read only = No create mode = 0644 directory mask = 0751 hosts deny = ALL #allow ben-pc, benovo en benovo vpn hosts allow = 192.168.178.2 192.168.178.15 192.168.178.37 browsable = No
Windows links naar Samba shares op LAN
De hierboven beschreven Samba Shares op de LAN kunnen op PC's op de LAN in Windows verkenner geopend worden met:
- \\testserver\files beschikbaar voor alle 'trusted' LAN hosts
- \\testserver\website alleen host 192.168.178.2 (werkstation beheerder)
- \\testserver\archief alleen host 192.168.178.2 (werkstation beheerder)
Om een share beschikbaar te stellen op een Windows host selecteer Windows verkenner > Deze PC > Netwerkverbinding maken.
- Selecteer een station, bijvoorbeeld S:
- Voer het pad in, bijvoorbeeld \\thuisserver\files
- Vink aan 'Opnieuw verbinding maken bij aanmelden
Samba link naar Windows share
Om aan de prompt van de server Windows shares op het lokale netwerk te benaderen gaat met behulp van Samba vrij eenvoudig volgens onderstaand voorbeeld:
- Maak mountpoint:
# mkdir /mnt/ben - Mount '/data' share op IP 192.168.178.2:
# mount -o username=ben,passwd="<windows-pc-wachtwoord>" //192.168.178.2/data /mnt/ben - Haal listing:
# ls -l /mnt/ben
Unmount:
# umount /mnt/ben
Bulktransfer van Windows naar Linux met Samba
Transfer met Samba van bestanden van Windows naar Linux mislukt als deze groter zijn dan +/- 17 GB.
Grote TAR bestanden moeten eerst opgesplitst worden naar hapklare brokken. Zie hiervoor ook # man split en # man cat
Voorbeeld
De '/home/pwgdata/' directory (> 150 GB) inpakken en overzetten van de Linux homeserver naar een andere Linux testserver met Windows Verkenner.
Inpakken:
- Ga naar directory die de 'pwgdata' sub-directory bevat:
# cd /home - Pak de 'pwgdata' sub-directory in opgesplitst in tarballs van 15 GB
# tar czf - pwgdata | split -b 10000m - backup/pwgdata.tar.gz.
Met dit commando wordt tar '-' gecrëerd van directory '/home/pwgdata' en via de pipe naar split gestuurd. Met split wordt het tar bestand '-' gesplitst op -b (bits) en wel 15000m (15 GB). De bestanden worden geschreven naar '/home/backup' met extenties .aa, .ab, .ac, etc.
Transfer:
- Kopieer de bestanden met Windows Verkenner van de Administrator van de ene Linux server naar de andere en plaats ze daar in '/home/'
Uitpakken:
- Ga naar de directory waar de tarballs geplaatst zijn en waar ze samengevoegd en uitgepakt moeten worden:
# cd /home - # cat pwgdata.tar.gz.* | tar xzvf -
Lees alle pwgdata tarballs als één tarball '-' en pak deze via de pipe uit in '/home/' - Om alleen alle tarballs weer samen te voegen tot 1 tarball:
# cat pwgdata.tar.gz.* > pwgdata.tar.gz