Linux: Samba

Bestanden delen tussen Ubuntu, Windows en Linux

Wat leer je vandaag?

  • Uitleggen wat Samba en SMB doen.
  • Een gedeelde map met een gebruikersaccount instellen.
  • Verbinden vanuit Windows en Linux.
  • Toegang testen en fouten gericht onderzoeken.

Wat is Samba?

  • Opensourcesoftware voor het delen van bestanden en printers.
  • Gebruikt SMB: Server Message Block.
  • Een Linux-server kan bestanden aanbieden aan Windows-clients.
  • Samba kan ook met domeinen werken; vandaag delen we bestanden.

Hoe werkt een gedeelde map?

Client → netwerk → Samba-server → map op schijf

  • Servermap: /srv/samba/lesmateriaal
  • Naam van de share: lesmateriaal
  • Windows-pad: \\192.168.56.10\lesmateriaal

Een share is een map die je via het netwerk aanbiedt.

Voorbereiding

  • Een Ubuntu-VM met internet en sudo-rechten.
  • Een Windows- of Linux-client die de VM kan bereiken.
  • Basiskennis van terminal, paden en bestandsrechten.
  • Voorbeeldaccount: student; voorbeeld-IP: 192.168.56.10.

Werk in het afgesproken oefennetwerk.

1. Samba installeren

Voer deze commando's uit op de Ubuntu-server:

sudo apt update
sudo apt install samba smbclient
smbd --version

samba levert de server; smbclient helpt bij het testen.

2. Een account voorbereiden

Maak het Linux-account alleen als het nog niet bestaat:

id student
sudo adduser student

Voeg dit account vervolgens toe aan Samba:

sudo smbpasswd -a student

3. De servermap maken

sudo mkdir -p /srv/samba/lesmateriaal
sudo chown student:student /srv/samba/lesmateriaal
sudo chmod 0700 /srv/samba/lesmateriaal
ls -ld /srv/samba/lesmateriaal

De eigenaar student mag de map lezen, wijzigen en openen.

4. De configuratie openen

Maak vóór je eerste wijziging een reservekopie:

sudo cp -n /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
  • Behoud de bestaande instellingen.
  • Voeg het shareblok van de volgende dia onderaan toe.
  • Opslaan: Ctrl+O, Enter. Afsluiten: Ctrl+X.

5. De share instellen

Voeg dit blok toe aan /etc/samba/smb.conf:

[lesmateriaal]
    path = /srv/samba/lesmateriaal
    browseable = yes
    read only = no
    guest ok = no
    valid users = student

Twee controles op toegang

  1. Samba: mag dit account de share gebruiken?
  2. Linux: mag dit account de map en bestanden wijzigen?

read only = no geeft geen extra Linux-bestandsrechten.

Vraag: waarom werkt schrijven niet als de map van root is
en alleen root schrijfrechten heeft?

6. Controleren en starten

testparm -s
sudo systemctl enable --now smbd
sudo systemctl restart smbd
systemctl status smbd --no-pager

Herstel configuratiefouten voordat je de dienst herstart.

7. IP-adres en firewall

ip -br address
sudo ufw status
sudo ufw allow from 192.168.56.0/24 to any port 445 proto tcp
  • Vervang het subnet door het afgesproken clientnetwerk.
  • TCP-poort 445 is voor directe SMB-verbindingen.
  • Een UFW-regel filtert alleen als UFW actief is.

8. Lokaal testen

Op de server: toon de shares en open lesmateriaal.

smbclient -L localhost -U student
smbclient //localhost/lesmateriaal -U student

Voer bij de prompt smb: \> het volgende in:

ls
quit

9. Openen vanuit Windows

  1. Open Verkenner.
  2. Typ in de adresbalk: \\192.168.56.10\lesmateriaal.
  3. Meld je aan als student met het Samba-wachtwoord.
  4. Maak test-windows.txt en open het opnieuw.

Gebruik het werkelijke IP-adres van jouw Ubuntu-server.

10. Openen vanuit Linux

Bestandsbeheer: verbind met smb://192.168.56.10/lesmateriaal.

Terminal op de client:

sudo apt install smbclient
smbclient //192.168.56.10/lesmateriaal -U student

Gebruik ook hier het werkelijke serveradres.

11. Bestanden versturen en ophalen

Maak eerst in de Linux-terminal een lokaal testbestand:

printf 'Groeten vanaf Linux\n' > test-linux.txt
smbclient //192.168.56.10/lesmateriaal -U student

Voer daarna bij smb: \> uit:

put test-linux.txt
ls
get test-linux.txt teruggelezen.txt
quit

Als het niet werkt

  • Geen verbinding: controleer IP, VM-netwerk en firewall.
  • Aanmelding mislukt: controleer account en Samba-wachtwoord.
  • Access denied: controleer valid users en maprechten.
  • Share ontbreekt: controleer sharenaam en configuratie.

Op de server:

sudo journalctl -u smbd -n 30 --no-pager

Opdracht: lever een werkende share op

  1. Richt lesmateriaal in met toegang voor student.
  2. Test lokaal en vanaf een andere computer.
  3. Maak een bestand, lees het terug en wijzig het.
  4. Controleer dat toegang zonder account wordt geweigerd.

Lever op: configuratie, testresultaten en een korte uitleg
van de twee controles op toegang. Deel geen wachtwoorden.

Terugblik

  • Samba deelt bestanden via SMB.
  • Een share koppelt een netwerknaam aan een servermap.
  • Account, configuratie, maprechten en netwerk moeten kloppen.
  • Test lezen én schrijven, lokaal én vanaf de client.

Kun je uitleggen waarom smbpasswd nodig is naast adduser?

Bronnen en verder lezen

Vandaag gaan we bestanden delen tussen Ubuntu, Windows en Linux. Daarvoor gebruiken we Samba. Je richt zelf een gedeelde map in, meldt je aan vanaf een andere computer en controleert of je bestanden kunt lezen en schrijven. We werken stap voor stap op een Ubuntu-oefenmachine. Zo zie je niet alleen welke commando's je nodig hebt, maar ook waarom je ze uitvoert.

Na deze les kun je uitleggen wat Samba en SMB doen. Je kunt ook een gedeelde map instellen met een gebruikersaccount en die vanaf Windows of Linux openen. Het belangrijkste is dat je de verschillende stappen met elkaar kunt verbinden. Een werkende server alleen is namelijk niet genoeg: ook het netwerk, de aanmelding en de bestandsrechten moeten kloppen.

Samba is opensourcesoftware waarmee je onder andere bestanden en printers deelt. Het gebruikt SMB, de afkorting van Server Message Block. SMB is het protocol: de afspraken waarmee computers communiceren. Samba is de software die deze afspraken uitvoert. Windows ondersteunt SMB, waardoor een Windows-computer een map op onze Ubuntu-server kan openen. Samba heeft daarnaast functies voor domeinen, maar die behandelen we vandaag niet.

Een share is een map die je via het netwerk aanbiedt. Op de server staan de bestanden in de map srv, samba, lesmateriaal. De client ziet de sharenaam lesmateriaal. Die naam hoeft niet gelijk te zijn aan de naam van de map op schijf. De server controleert wie verbinding maakt en of die persoon toegang heeft. Het IP-adres op deze dia is een voorbeeld; straks gebruik je het adres van je eigen server.

We hebben een Ubuntu-machine nodig waarop je software mag installeren. Daarnaast hebben we een client nodig die deze machine via het netwerk kan bereiken. Dat kan je Windows-host zijn of een tweede Linux-machine. Gebruik de netwerkopstelling die voor de les is afgesproken. Als je VM achter een afzonderlijk NAT-netwerk zit, kan bereikbaarheid extra instellingen vereisen. Student en het IP-adres zijn voorbeeldwaarden die we in de uitleg steeds gebruiken.

We beginnen op de Ubuntu-server. Apt update vernieuwt de lijst met beschikbare pakketten. Daarna installeren we Samba en smbclient. Samba levert de serverdienst; smbclient gebruiken we later om vanuit een terminal verbinding te maken. Met smbd en de optie version bekijk je welke versie is geïnstalleerd. Let op: het tonen van een versienummer bewijst nog niet dat een gedeelde map werkt. Daarvoor gaan we verder met de inrichting.

Samba gebruikt in deze opstelling een bestaand Linux-account. Met id student controleer je eerst of dat account al bestaat. Alleen als het ontbreekt, voer je adduser uit. Daarna voeg je met smbpasswd, optie a, het account toe aan de Samba-gebruikersdatabase. Daarbij stel je het wachtwoord voor de netwerkverbinding in. Dat wachtwoord wordt apart beheerd van het Linux-wachtwoord. Typ wachtwoorden bij de vraag van het programma, niet in een commando dat in je geschiedenis blijft staan.

Nu maken we de servermap. Met mkdir en de optie p worden ontbrekende bovenliggende mappen ook aangemaakt. Chown maakt student eigenaar en stelt de groep in op student. Dat past bij het account dat we met adduser hebben aangemaakt. Met chmod nul zeven nul nul krijgt alleen de eigenaar toegang tot deze map. Bij een map betekent uitvoeren dat je de map kunt binnengaan. Met ls bekijk je daarna de eigenaar en de ingestelde rechten.

De instellingen staan in het bestand smb.conf in de map etc, samba. We maken eerst een reservekopie. De optie n voorkomt dat een bestaande reservekopie wordt overschreven. Daarna openen we het configuratiebestand met nano. Behoud de bestaande instellingen en voeg onderaan één nieuw blok toe. Als je deze oefening opnieuw doet, werk dan het bestaande lesmateriaalblok bij in plaats van het een tweede keer toe te voegen.

Het blok tussen vierkante haken bepaalt de sharenaam: lesmateriaal. Path wijst naar de map op de server. Browseable maakt de share zichtbaar bij het opvragen van de beschikbare shares; automatisch verschijnen in Windows Netwerk is daarmee niet gegarandeerd. Read only no staat schrijven via Samba toe. Guest ok no schakelt gasttoegang uit. Valid users beperkt deze share tot student. Het account moet daarnaast nog steeds voldoende Linux-bestandsrechten hebben.

Er zijn twee controles op toegang. Eerst bepaalt Samba of het aangemelde account de share mag gebruiken. Vervolgens bepaalt Linux of dat account de gevraagde handeling op de map of het bestand mag uitvoeren. Read only no geeft dus geen extra bestandsrechten. Als alleen root in de map mag schrijven, kan student dat nog steeds niet. Kijk bij een fout daarom naar beide lagen. Iedereen alle rechten geven verbergt het probleem en is geen goede oplossing.

Testparm leest de configuratie en controleert of Samba die kan verwerken. De optie s onderdrukt de vraag om op Enter te drukken. Los gemelde configuratiefouten eerst op. Daarna zorgt systemctl enable now ervoor dat de dienst wordt ingeschakeld en gestart. Met restart laden we de gewijzigde configuratie door de dienst opnieuw te starten. Status laat zien of de dienst actief is. Een geslaagde testparm-controle bewijst nog niet dat gebruikers toegang hebben; dat testen we afzonderlijk.

Met ip bekijk je de adressen van de netwerkinterfaces. Kies het adres op het netwerk dat je client kan bereiken, niet het loopbackadres. We gebruiken directe SMB-verbindingen via TCP-poort vierhonderdvijfenveertig. De firewallregel staat die verbinding alleen vanuit het voorbeeldsubnet toe. Pas dat subnet aan je oefennetwerk aan. UFW status laat zien of de firewall actief is. Als die inactief is, werkt deze regel nog niet als filter. Stem wijzigingen aan de firewall af op de lesopstelling.

Eerst testen we op de server zelf. Smbclient met optie L vraagt de lijst met shares op. Met de tweede opdracht openen we specifiek lesmateriaal. Gebruik het Samba-wachtwoord dat je eerder hebt ingesteld. Je komt daarna in de interactieve smbclient-prompt terecht. Daar toont ls de inhoud van de share en sluit quit de verbinding. Als deze lokale test lukt maar een andere computer niet kan verbinden, richt je onderzoek dan eerst op het netwerk en de firewall.

Op Windows openen we Verkenner en typen we het netwerkpad rechtstreeks in de adresbalk. Gebruik twee backslashes vóór het IP-adres en één vóór de sharenaam. Meld je aan met student en het Samba-wachtwoord. Als Windows al andere gegevens voor deze server gebruikt, kan die eerdere verbinding de aanmelding beïnvloeden. Maak na het openen een klein testbestand en lees het opnieuw. Alleen een map zien is nog geen bewijs dat schrijven werkt.

Vanuit Linux kun je de share via bestandsbeheer openen. Kies bijvoorbeeld Andere locaties of Verbinden met server en gebruik een adres dat begint met smb, dubbele punt, twee schuine strepen. De precieze knop hangt af van je desktop. In de terminal installeren we smbclient op de client als dat nog ontbreekt. Daarna verbinden we met het IP-adres van de server. Let op het verschil met de lokale test: localhost zou hier de client zelf aanwijzen.

We maken eerst in de gewone Linux-terminal een testbestand. Start smbclient vanuit dezelfde lokale map, zodat het dat bestand kan vinden. In de smbclient-prompt uploadt put het bestand naar de share. Ls toont de bestanden op de server. Met get downloaden we het bestand onder de nieuwe lokale naam teruggelezen.txt. Na quit ben je weer in je gewone terminal en kun je het teruggelezen bestand openen. Zo controleer je zowel uploaden als downloaden.

Als het niet werkt, kijk dan eerst naar de foutmelding. Geen verbinding is iets anders dan een afgewezen wachtwoord. Een geweigerde schrijfactie kan weer aan bestandsrechten liggen. Test eerst lokaal en daarna vanaf de client, zodat je het probleem kleiner maakt. Journalctl toont recente berichten van de Samba-dienst. Niet elk detail staat daar; aanvullende logs kunnen in de map var, log, samba staan. Verander steeds één instelling en test opnieuw, zodat je weet wat het verschil maakt.

Nu voer je de stappen zelfstandig uit. Je eindresultaat is een share die je vanaf een andere computer kunt openen met het account student. Laat zien dat je een bestand kunt maken, teruglezen en wijzigen. Controleer ook dat iemand zonder account geen toegang heeft, bijvoorbeeld met smbclient en de optie N bij het openen van de share. Die optie laat de wachtwoordvraag weg. Noteer je testresultaten en leg uit welke rol Samba en Linux-bestandsrechten spelen.

Samba deelt bestanden via SMB. Een share verbindt een naam op het netwerk met een map op de server. Voor een werkende oplossing moeten het account, de configuratie, de bestandsrechten en het netwerk allemaal kloppen. Daarom testen we lokaal en vanaf een andere computer, en controleren we lezen én schrijven. Denk tot slot terug aan de twee soorten accounts: adduser maakt het Linux-account en smbpasswd voegt de aanmelding voor Samba toe.

Wil je later een instelling opzoeken, gebruik dan de officiële documentatie van Ubuntu en Samba. De Ubuntu-handleidingen geven voorbeelden van inrichting en toegangscontrole. De Samba-handleidingen beschrijven de afzonderlijke instellingen en opdrachten. Onze les gebruikt een eenvoudige share voor één account. Een gedeelde teammap met groepsrechten of een koppeling aan een domein vraagt extra keuzes die je met behulp van deze documentatie kunt onderzoeken.