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.
Activeren met Webconfig
Ga naar Webconfig > Server > Windows netwerk > Windows instellingen: Start de server.
![]()
|
Samba shares
In Webconfig wordt alleen de optie geboden de diverse home directories te delen door de optie 'home mappen' in te schakelen. In dat geval wordt een home-directory van een gebruiker gedeeld en kan benaderd worden door deze gebruiker na authenticatie met het wachtwoord.
Daarnaast wordt door ClearOS de door mij hier niet gebruikte module Flexshare aangeboden met daarvoor in Webconfig zeer uitgebreide mogelijkheden voor het delen van bestanden via de webserver, ftp, e-mail en/of samba. Zie hiervoor: ClearOS Userguide Flexshares
Samba Network Server
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
Netwerk Profiel en Security
Hier de beschrijving van het op de hand opzetten van de Windows Server shares door het bewerken van het Samba configuratiebestand /etc/samba/smb.conf.
Authenticatie van Samba cliënten
Enkele jaren terug bestond de optie alle Samba gebruikers als "gast" te verbinden met het netwerk met gedeelde content zonder dat hiervoer ingelogd moest worden.
Dit werd gefaciliteerd door in het Samba configuratie bestand /etc/samba/smb.conf de [global] directive security naar 'shared' te zetten.
Deze directive werd uitgephaseerd en in plaats hiervan werden de volgende directives in de smb.conf [ global] sectie opgenomen:
security = user map to guest = Bad User
In 2020 is Microsoft nog verder gegaan en blokkeert om veiligheidsredenen per default SMBv1 sinds Windows 10 versie 1709, waardoor onderandere verbinden als gast niet meer mogelijk is.
Het verbinden als gast ondersteunt namelijk niet standaard veiligheidsvoorzieningen zoals authentiseren en versleuteling.
Windows-sambaclients inloggen op Server
Microsoft vereist al jaren het inloggen op Windows PC's. Dit wel met de optie van automatisch inloggen bij het opstarten.
Met de hierbij gebruikte credentials kan nu ook ingelogd worden op de ClearOS sambaserver.
Op de ClearOS server authentiseert Samba gebruikers via LDAP en is het dus niet nodig afzonderlijk smbusers aan te maken.
Het volstaat gebruikers aan te maken in Webconfig > System > Accounts > Users.
Hierbij is het belangrijk dat voor elke Windows-sambaclient op de server een gebruiker aangemaakt wordt met dezelfde gebruikersnaam en wachtwoord als die van de Windows-client PC en dat de gebruiker toegevoegd wordt aan de groep 'lanshare'.
Voorbeeld
- Windows-sambaclient Microsoft gebruikersnaam: 'gradus' met wachtwoord 'voorbeeldww'.
(De Windows gebruikersnaam is op de Windows PC te vinden onder C:\Gebruikers). - Maak op de server een gebruiker aan met dezelfde credentials in Webconfig > System > Accounts > Users.
- Als de Windows (admin)gebruiker inlogt met zijn Microsoft account heeft deze gebruiker in feite een tweede gebruikersnaam zoals 'gradusjansen@outlook.com'
Om te voorkomen dat samba de gewenste gebruikersnaam niet kan vinden maken we op de server een bestand /etc/samba/smbusers aan.
Plaats in dit bestand voor elke Windows-sambaclient een regel als volgt:
gradus = gradusjansen@outlook.com - Plaats een referentie naar dit bestand in het Samba configuratiebestand /etc/samba/smb.conf
username map = /etc/samba/smbusers - Maak in Webconfig > System > Accounts >Groups een Samba gebruikersgroep aan voor de shares, bijvoorbeeld 'lanshare', en voeg hier de sambagebruikers aan toe.
- Maak de te delen mappen aan zoals verderop beschreven en zet darvan groep naar 'lanshare' en permissies naar 0770
SMB.CONF
Zie hier /etc/samba/smb.conf inclusief nadere informatie van de verschillende directives in het confuguratiebestand.
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 readonly = No create mode = 0644 directory mask = 0755 hosts deny = ALL hosts allow = 192.168.178.0/26 browsable = Yes
Verklaring smb.conf directives
Zie ook Introduction to Samba en/of Slackwiki Samba
|
Mappenstructuur share [files]
In de share maken we een aantal sub-mappen aan om structuur aan te brengen, zijnde:
- afbeeldingen
- documenten
- e-books
- muziek
- video
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.
# mkdir /home/files/afbeeldingen # mkdir /home/files/documenten # mkdir /home/files/e-books # mkdir /home/files/muziek # mkdir /home/files/video # chown -R files:lanshare /home/files # chmod -R 755 /home/files # chmod 555 /home/files # find /home/files -type f -name '*' -exec chmod 644 '{}' \;
We zetten de permissies van map /home/files en submappen naar 755 en als laatste de bestanden hierin naar 644.
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 Webserver: HTTPD.CONF Apache configuratie: Zet DocumentRoot
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 hiierboven voor de 'File Server' beschreven is.
Toegang is alleen toegestaan voor één gebruiker, genaamd 'website' vanaf een LAN PC met IP 192.168.1.10.
Bewerk het bestand /etc/samba/smb.conf en voeg aan het einde toe:
[website] comment = Website Makkink.eu path = /var/www/html force user = apache force group = lanshare readonly = No create mode = 0644 force create mode = 644 directory mask = 0751 force directory mode = 0755 hosts allow = 192.168.178.10 hosts deny = ALL browsable = No
De map /var/www/html is bij de installatie door Apache aangemaakt.
We zetten de permissies van map /var/www/html naar 770, de submappen naar 751 en de bestanden hierin naar 644.
# chown apache:lanshare /var/www/html # chown -R apache:lanshare /var/www/html/* # chmod 770 /var/www/html
# chmod -R 755 /var/www/html/*
# find /var/www/html -type f -name '*' -exec chmod 644 '{}' \;
Archief
In het archief bewaart de beheerder historisch materiaal en is alleen bereikbaar via zijn werkstation met IP 192.168.1.10
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 readonly = No create mode = 0644 directory mask = 0751 hosts allow = 192.168.178.10 hosts deny = ALL browsable = No
We zetten de permissies van de map naar 700 waardoor alleen door gebruiker 'archief' te openen
# chown archief:lanshare /home/archief # chmod 700 /home/archief
PIWIGO
In /home/pwgdata/galleries plaatst de beheerder de afbeeldingen voor Piwigo en is alleen bereikbaar via zijn werkstation met IP 192.168.1.10
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 = apache force group = lanshare readonly = No create mode = 0644 directory mask = 0751 hosts deny = ALL hosts allow = 192.168.178.10 browsable = No
We zetten de permissies van map /home/pwgdata/galleries naar 755, de submappen naar 751 en de bestanden hierin naar 644.
# chown -R apache:lanshare /home/pwgdata/galleries # chmod 755 /home/pwgdata/galleries # chmod -R 755 /home/pwgdata/galleries/* # find /home/pwgdata/galleries -type f -name '*' -exec chmod 644 '{}' \;
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:
- \\mainserver\files beschikbaar voor alle 'trusted' LAN hosts
- \\mainserver\website alleen host 192.168.178.10 (werkstation beheerder)
- \\mainserver\archief alleen host 192.168.178.10 (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 \\mainserver\files
- Vink aan 'Opnieuw verbinding maken bij aanmelden
Samba link naar Windows share
Om aan de prompt van de ClearOS 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.199:
# mount -o username=ben,passwd="<windows-pc-wachtwoord>" //192.168.178.199/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