Home

 

Server::Samba

Naar index

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.

Naar index

Samba installeren

Zie ook How to Install Samba on Ubuntu

Voor de installatie van Samba is het volgende nodig:

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

Naar index

Maak gedeelde mappen aan

De Samba Network Server wordt op deze server ingezet voor het delen van geselecteerde gebruikersmappen (shares) zijnde:

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 '{}' \;

Naar index

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

Naar index

Samba-gebruikersaccounts

De Samba server is alleen voor alle gebruikers op het Thuisnetwerk.
Dat zijn in dit geval:

  1. ububen
  2. ben
  3. benjamin
  4. erica
  5. files
  6. 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

Naar index

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:

Naar index

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

Naar index

Verklaring smb.conf directives

Zie ook Introduction to Samba en/of Slackwiki Samba

  • force user = files
    force group is lanshare

    Hiermee worden gebruiker en groep van alle mappen en bestanden op de fileserver vastgelegd.
  • create mode = 0644
    De bestanden die samba plaatst krijgen permissies 644, dwz de eigenaar 'files' heeft alle permissies en de rest alleen read.
  • directory mask = 755
    De mappen die samba plaatst krijgen permissies 755, dwz de eigenaar 'files' heeft alle permissies, de groepen 'lanshare' en 'others' kunnen de map openen.
  • host deny = ALL
    Alle hosts wordt de toegang tot de samba share [ files] ontzegd
  • hosts allow = 192.168.178.0/26
    De hosts met een IP in de 'trusted' range 192.168.178.0-63 hebben wel toegang tot deze share
  • browsable = Yes
    De share [ files] is zichtbaar in Windows Netwerk

Naar index

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

Naar index

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

Naar index

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

Naar index

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

Naar index

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:

  1. \\testserver\files        beschikbaar voor alle 'trusted' LAN hosts
  2. \\testserver\website    alleen host 192.168.178.2 (werkstation beheerder)
  3. \\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.

Naar index

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:

  1. Maak mountpoint:
    # mkdir /mnt/ben
  2. Mount '/data' share op IP 192.168.178.2:
    # mount -o username=ben,passwd="<windows-pc-wachtwoord>" //192.168.178.2/data /mnt/ben
  3. Haal listing:
    # ls -l /mnt/ben

Unmount:
# umount /mnt/ben

Naar index

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:

Transfer:

Uitpakken:

Naar index