In deze workshop ga je je eigen bestandsserver voor je (thuis)netwerk opzetten met behulp van Samba. Eerst leg ik kort uit wat Samba is en waarvoor je Samba, onder andere, kunt gebruiken. Daarna beschrijf ik hoe je Samba installeert. Het aanmaken van de via Samba te delen directory’s, het instellen van rechten op deze directory’s en de configuratie van Samba komt in het laatste deel van deze workshop aan de orde.

Auteur: André Fondse

Microsoft maakt voor het communiceren tussen computers en servers gebruik van het SMB protocol. Samba is een open source implementatie van dit protocol. Met Samba is het mogelijk om bestanden (en printers) op je Linux server te delen met MS Windows computers. Ook andere apparaten die gebruik maken van het SMB protocol kunnen op deze manier gebruikmaken van de bestanden die je hiervoor door middel van Samba ter beschikking stelt.

Samba installeren

In deze workshop maak ik in alle voorbeelden en commando’s gebruik van de Linux distributie Debian vanwege het feit dat deze distributie bekend staat om de stabiliteit. Als je gebruik maakt van een op Debian gebaseerde distributie (zoals Ubuntu, Linux Mint etc.), dan zullen de afwijkingen in voorbeelden en commando’s beperkt zijn. Gebruik je een heel andere distributie en je bent daar een beetje bekend in, dan zal je naar verwachting ook niet tegen al te veel problemen aanlopen. Ik ga ervan uit dat je voor de installatie en configuratie van Samba gebruik maakt van de command prompt en dat je ingelogd bent als root. Samba installeer je met het volgende commando:

apt-get install samba smbclient

Na het ingeven van een bevestigend antwoord wordt Samba geïnstalleerd (zie afbeelding 1). Bij de installatie van Samba onder Debian zorgt het installatiescript ervoor dat Samba automatisch opgestart is na de installatie en dat Samba automatisch opstart als je je (thuis)server opstart.

Afbeelding 1: Installatie van Samba

 

Gebruikers beheer

Na installatie van Samba vindt configuratie ervan plaats. Als eerste stel je in welke Linux gebruikersnamen gebruik gaan maken van de Samba shares. Dit betekent dat een gebruikersnaam zowel als Linux gebruikersnaam en tevens als Samba gebruikersnaam moet bestaan. Als de Samba gebruiker Jelle (behalve gebruik van Samba) bijvoorbeeld niets op je thuisserver doet, dan zal je toch een Linux gebruikersnaam moeten aanmaken. Andersom geldt dat niet. Als de Linux gebruiker Mariska niet gebruikmaakt van Samba, dan hoef je daarom ook geen Samba gebruikersnaam voor haar aan te maken. Ervan uitgaande dat op je (thuis)server een Linux gebruiker linuxmag is, maak je deze gebruiker onder Samba als volgt aan:

smbpasswd -a linuxmag

Na het geven van ‘Enter’ word je gevraagd om een wachtwoord voor de Samba gebruiker. Dit wachtwoord hoeft niet gelijk te zijn aan de Linux gebruikersnaam.

Directory’s configureren

In deze workshop ga je drie samba shares aanmaken, namelijk een gedeelde data directory, een directory voor je muziekverzameling en een deelmap waarbij iedereen in het netwerk (zonder login) bij kan. Voor de datadirectory en deelmap moeten op Linuxniveau lees- en schrijfrechten zijn. De muziekdirectory is voor alle gebruikers toegankelijk met leesrechten. De gebruiker linuxmag kan alleen in deze directory schrijven. Je krijgt alleen maar toegang tot een Samba-share als je de juiste rechten hebt. Dit betekent dat zowel de Linux- als de Sambarechten juist geconfigureerd moeten zijn. In listing 1 zijn de commando’s opgenomen om de directory’s voor deze drie Samba shares te maken en het toekennen van de juiste Linux rechten op deze directory’s. In het voorbeeld in deze workshop maken we een samba directory aan onder /srv en dan vervolgens de 3 subdirectory’s.

mkdir -p /srv/samba/data
groupadd data
usermod -a -G data linuxmag
chgrp -R data /srv/samba/data
chmod -R ug=rwx,o-rwx /srv/samba/data
mkdir /srv/samba/muziek
chown -R linuxmag:nogroup /srv/samba/muziek
chmod -R u=rwx,g=rx,o-rwx /srv/samba/muziek
mkdir /srv/samba/deelmap
chown -R nobody:nogroup /srv/samba/deelmap
chmod -R ugo+rwx /srv/samba/deelmap
Listing 1

 

Door in regel 1 de optie -p mee te geven, hoef je niet eerst de directory /srv/samba aan te maken voordat je /srv/samba/data kunt aanmaken. De Linux groep data wordt in regel 2 aangemaakt. In regel 3 wordt de gebruiker linuxmag lid van de groep data. In regels 4, 7 en 10 krijgen de juiste gebruikers en groep toegang tot de 3 directory’s. De toegangsrechten worden vervolgens door middel van de regels 5, 8, en 11 geregeld. In afbeelding 2 zie je het resultaat op de terminal als je alle commando’s van listing 1 hebt uitgevoerd.

Afbeelding 2: resultaat aanmaken directory’s en de rechten daarop voor Samba gebruik.

 

Samba configureren

In listing 2 wordt het Samba configuratie bestand weergegeven op basis van het voorbeeld van de drie samba shares (data, muziek en deelmap).

#======================= Global Settings =====================================
[global]
workgroup = linuxmag
server string = Samba
server role = standalone server
hosts allow = 192.168. 127.
log file = /var/log/samba/%m.log
max log size = 50
passdb backend = tdbsam
dns proxy = no
map to guest = Bad User

#============================ Share Definitions ==============================
[data]
path = /srv/samba/data
valid users = +data
writable = yes
create mask = 0660
directory mask = 0750
force create mode = 0660
force directory mode = 0750
forcegroup = data

[muziek]
path = /srv/samba/muziek
guest ok = yes
forcegroup = nogroup
valid users = linuxmag, nobody
writable = yes
create mask = 0740
directory mask = 0750
force create mode = 0740
force directory mode = 0750

[deelmap]
path = /srv/samba/deelmap
guest only = yes
guest ok = yes
writable = yes
force user = nobody
force group = nogroup
create mask = 0664
directory mask = 2775
force create mode = 0664
force directory mode = 2775

Listing 2

 

Onderstaand een toelichting op de regels uit dit configuratiebestand:

  • 2, 14, 24, 35: De naam van een share staat altijd tussen vierkante haken. Uitzondering is [global]. Dit betreft de configuratie van de Samba-server.
  • 6: Hier geef je aan welke IP reeksen gebruik mogen maken van de Samba server.
  • 11: Hiermee wordt het mogelijk om zonder loginnaam in te loggen op shares die gastgebruik toestaan.
  • 15, 25 en 36: De directory waar de bestanden van de Samba-share fysiek opgeslagen zijn op je server.
  • 16, 28: De gebruikers die toegang hebben tot de share. Het plusteken gebruik je om een hele Linux gebruikersgroep toegang te geven.
  • 17, 29, 39: Standaard zijn Samba-shares alleen lezen.
  • 18, 19, 20, 21, 30, 31, 32, 33, 42, 43, 44, 45: De combinatie van create mask en force create mode zorgt ervoor dat je bestanden en directory’s die je via Samba aanmaakt de rechten krijgen zoals hier gedefinieerd.
  • 22, 41: Met force group wordt een specifieke Linux groep van een Samba gebruiker geselecteerd.
  • 40: Force user gebruik je om bestanden en directory’s altijd onder een bepaalde gebruikersnaam weg te schrijven.

Sla het configuratiebestand bestand op in /etc/smb.conf. Om gebruik te kunnen maken van dit configuratiebestand herstart je de Samba server met:

systemctl restart smbd

Inloggen op de Samba shares

Het IP-adres van je Samba-server kun je onder andere achterhalen via het commando:

ip addr

Vanuit Linux Mint krijg je vanuit de bestandsbeheerder toegang tot de Samba-shares via Bestand -> Verbinding maken met server. Vul bij server het IP-adres in van je Samba-server. Kies voor type Gedeelde Windowsmap en klik daarna op de knop ‘Verbinden’ (afbeelding 3).

Afbeelding 3: verbinding maken met samba share onder Linux Mint

 

Daarna zie je de beschikbare shares en kun je deze openen door erop te klikken. Als er een loginnaam en wachtwoord nodig is, dan wordt erom gevraagd. Onder MS Windows type je in de adresbalk van de verkenner 2 backslashes met daarachter het IP-adres (bijvoorbeeld: \\192.168.2.233) en daarna druk je op ‘Enter’ (zie afbeelding 4).

Afbeelding 4: toegang Samba share in MS Windows

 

Tot slot

Je hebt nu een werkende samba server en je kunt de configuratie verder naar wens aanpassen. Als je Samba eerst wilt uittesten, dan kun je de Virtualbox-image van deze workshop downloaden via https://bit.ly/2GuvvQi. Het wachtwoord van de gebruiker linuxmag is Reshift. Alle gebruiksnamen en wachtwoorden staan in /home/linuxmag/wachtwoorden.txt.