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.
In openSUSE Leap 15.3 is Samba standaard geïnstalleerd, maar niet actief.
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 (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
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.
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
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.
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.
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:
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/