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.