Tips en Trucs 2022

Mappen delen met Samba

Samba is een krachtig open-source hulpprogramma waarmee op Windows-achtige wijze bestanden en printers op een netwerk kunnen worden gedeeld op Linux-systemen. Het stelt Linux- en Windows-computers in staat naast elkaar te bestaan en samen te werken op hetzelfde netwerk. Het wordt geïnstalleerd op het Linux-systeem waar de te delen bestanden zich bevinden. Deze gedeelde bestanden zijn dan toegankelijk voor elke geautoriseerde Linux- of Windows-client op hetzelfde netwerk.

De meeste NAS apparaten gebruiken eveneens Samba om opslag op het netwerk beschikbaar te maken.

Samba installeren

In openSUSE Leap 15.3 is Samba standaard geïnstalleerd, maar niet actief.

Samba configureren en activeren

Om de installatie te controleren, controleer je de status van de samba service.

dany@pindabook:~> sudo systemctl status smb.service
[sudo] wachtwoord voor root: 
● smb.service - Samba SMB Daemon
     Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
     Active: inactive (dead)
       Docs: man:smbd(8)
             man:samba(7)
             man:smb.conf(5)

Hieruit blijkt dat Samba geïnstalleerd is, maar niet actief is. Gebruik je Samba maar sporadisch, dan kan je Samba manueel starten met de opdracht:

dany@pindabook:~> sudo systemctl start smb.service

Bij frequent gebruik, laat je Samba automatisch starten bij het starten van het systeem:

dany@pindabook:~> sudo systemctl enable smb.service 
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.

De Samba service zorgt voor het effectieve delen van bestanden en printers. Een tweede service, de Nmb service zorgt voor het benoemen van de delende apparaten en het verspreiden van informatie erover op het netwerk. De Nmb service controleer en start je met de volgende opdrachten:

dany@pindabook:~> sudo systemctl status nmb.service 
● nmb.service - Samba NMB Daemon
     Loaded: loaded (/usr/lib/systemd/system/nmb.service; disabled; vendor preset: disabled)
     Active: inactive (dead)
       Docs: man:nmbd(8)
             man:samba(7)
             man:smb.conf(5)
dany@pindabook:~> sudo systemctl start nmb.service
dany@pindabook:~> sudo systemctl enable nmb.service 
Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service.

Publieke mappen delen

Publieke (openbare) mappen zijn zonder beperkingen voor iedereen toegankelijk. Je hebt dus geen gebruikersnaam en bijhorend wachtwoord nodig om de inhoud te bekijken, te openen, te beheren en aan te passen. Ideaal voor een veilige vertrouwde omgeving zoals thuis.

We beginnen met het maken van een map in de Home map die we met Samba willen delen:

dany@pindabook:~> mkdir Publiek

Om later de originele configuratie te kunnen herstellen, maken we eerst een reservekopie:

dany@pindabook:~> sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Daarna passen we het Samba configuratiebestand aan om de map Publiek te delen:

dany@pindabook:~> sudo nano /etc/samba/smb.conf

Voeg onderaan het Samba configuratiebestand de volgende sectie (regels) toe:

[publiek]
        comment = Openbaar gedeelde map
        path = /home/dany/Publiek
        read only = no
        public = yes  
        browseable = yes 
        force user = dany

Waarbij:

Sla de aanpassingen op met Ctrl+s en verlaat nano met Ctrl+x. Om de aanpassingen te activeren, herstart je de Samba service:

dany@pindabook:~> sudo systemctl restart smb.service

Aangezien we de map delen met andere apparaten op het netwerk, moeten we de Samba service toegang verlenen tot het netwerk via de firewall:

dany@pindabook:~> sudo firewall-cmd --permanent --add-service=samba
success
dany@pindabook:~> sudo firewall-cmd --reload
success

De eerste opdracht past de configuratie van de firewall aan, de tweede opdracht activeert de aanpassing. Je kunt de nu op een andere computer (main) opvragen wat Samba ter beschikking stelt op de computer (pindabook) met de pas ingestelde gedeelde map:

dany@main:~> smbclient -L \\\\pindabook
Password for [WORKGROUP\dany]:

        Sharename       Type      Comment
        ---------       ----      -------
        profiles        Disk      Network Profiles Service
        users           Disk      All users
        groups          Disk      All groups
        print$          Disk      Printer Drivers
        publiek         Disk      Openbaar gedeelde map
        IPC$            IPC       IPC Service (Samba 4.15.7-git.376.dd43aca9ab2150300.3.32.1-SUSE-oS15.0-x86_64)
SMB1 disabled -- no workgroup available

Gedeelde map gebruiken

Iedereen op elk apparaat dat op hetzelfde netwerk is aangesloten, kan nu gebruik maken van de openbaar gedeelde map Publiek. Dit kan zowel in de grafische omgeving met een bestandsbeheerder zoals Dolphin (KDE) waarbij je in de adresbalk het protocol (smb://) gevolgd door de hostnaam (computernaam) met de gedeelde map typt.
Samba
Na het openen van de gedeelde map, kan je er in werken juist zoals je een andere map gebruikt. Maak als test eens een nieuwe map aan, open deze map en maak een nieuw bestand aan.

Ook via de terminal kan je de gedeelde map koppelen aan het bestandssysteem:

dany@main:~> sudo mount -t cifs //pindabook/publiek /mnt
[sudo] wachtwoord voor root: 
🔐 Password for root@//pindabook/publiek:                          
dany@main:~> tree /mnt/
/mnt/
└── Nieuwe map
    └── Tekstbestand.txt

1 directory, 1 file

Na het opgeven van het root wachtwoord, moet je geen wachtwoord (Password) voor root@//pindabook/publiek ingeven, dit is namelijk een publieke (openbare) gedeelde map zonder gebruiker en bijhorend wachtwoord. M.a.w. druk gewoon Return. De tweede opdracht toont de inhoud van de gedeelde publieke map.

De gedeelde map terug loskoppelen van het bestandssysteem gebeurt met:

dany@main:~> sudo umount /mnt
[sudo] wachtwoord voor root: 
dany@main:~> tree /mnt/
/mnt/

0 directories, 0 files

Een gedeelde map beveiligen met een gebruiker en bijhorende wachtwoord

Eerst maken we een Samba gebruiker (dany) met bijhorende wachtwoord aan:

dany@pindabook:~> sudo smbpasswd -a dany
[sudo] wachtwoord voor root: 
New SMB password:
Retype new SMB password:
Added user dany.

Pas de Samba configuratie van de gedeelde map aan naar:

[publiek]
        comment = Gedeelde map
        path = /home/dany/Publiek
        read only = no
        valid users = dany      
        browseable = yes
        force user = dany

Zo werd de optie public vervangen door de optie valid users waarbij wordt opgegeven welke gebruikers toegang hebben tot de gedeelde map.

Sla de aanpassingen op en activeer deze door de Samba service te herstarten:

dany@pindabook:~> sudo systemctl restart smb.service

Je kunt de gedeelde map in de terminal nu aan het bestandssysteem koppelen door de correcte gebruikersnaam op te geven en bijhorende wachtwoord in te typen:

dany@main:~> sudo mount -t cifs //pindabook/publiek /mnt -o username=dany
[sudo] wachtwoord voor root: 
🔐 Password for dany@//pindabook/publiek:  ********                
dany@main:~> tree /mnt/
/mnt/
└── Nieuwe map
    └── Tekstbestand.txt

1 directory, 1 file

Afkoppelen blijft identiek:

dany@main:~> sudo umount /mnt

In de grafische omgeving (Dolphin, KDE) krijg je een extra dialoogvenster waarmee je de authentificatie gegevens kunt ingeven.
Samba authenticatie

Het Samba wachtwoord voor een specifieke gebruiker (hier: dany) kan je aanpassen met de volgende opdracht:

dany@pindabook:~> sudo smbpasswd -U dany
New SMB password:
Retype new SMB password:

De Samba service in zijn oorspronkelijke staat herstellen

Eerst stoppen we de Samba service manueel:

dany@pindabook:~> sudo systemctl stop smb.service
[sudo] wachtwoord voor root:

En zorgen we ervoor dat deze niet meer automatisch opstart bij het opstarten van het systeem:

dany@pindabook:~> sudo systemctl disable smb.service 
Removed /etc/systemd/system/multi-user.target.wants/smb.service.

Deze werkwijze herhalen we voor de Nmb service:

dany@pindabook:~> sudo systemctl stop nmb.service 
dany@pindabook:~> sudo systemctl disable nmb.service 
Removed /etc/systemd/system/multi-user.target.wants/nmb.service.

De oorspronkelijke Samba configuratie herstellen we door de reservekopie terug te zetten. Daarbij wordt de reservekopie zelf verwijderd (mv opdracht).

dany@pindabook:~> sudo mv /etc/samba/smb.conf.backup /etc/samba/smb.conf

Ook de aangemaakte Samba gebruiker hebben we niet langer nodig en verwijderen we met:

dany@pindabook:~> sudo smbpasswd -x dany
Deleted user dany.

Ook de Samba netwerktoegang mag dan door de firewall afgesloten worden:

dany@pindabook:~> sudo firewall-cmd --permanent --remove-service=samba
[sudo] wachtwoord voor root: 
success
dany@pindabook:~> sudo firewall-cmd --reload
success

De gedeelde map zelf met inhoud verwijder je met:

dany@pindabook:~> rm -r Publiek/