Windows-stijl File en Print Services met Samba

Linux kan in SMB-services voorzien (bv. het delen van bestanden & printers in de stijl van WfW, Win95, en NT netwerken), door gebruik te maken van het Samba package. In deze sectie zal worden beschreven hoe je gedeelde bronnen configureert, en hoe je ze vanaf client-machines kunt benaderen.

Het Samba package wordt met de Red Hat distributie meegeleverd, je kunt controleren of het is geïnstalleerd en welke versie je hebt, door het intikken van:

rpm -q samba

Als het niet is geïnstalleerd, zal je het nog moeten installeren met behulp van het RPM-utility. Zie de the section called Het gebruik van de Red Hat Package Manager (RPM) in Chapter 10 voor details over hoe je dit kan doen.

De belangrijkste van belang zijnde Samba-bestanden zijn:

/etc/smb.conf

Samba configuratiebestand waarin gedeelde bronnen en andere configuratieparameters kunnen worden ingesteld (zie onder)

/var/log/samba/

Locatie van Samba's logbestanden

/home/samba/

Aanbevolen lokatie waar bestanden voor gezamenlijk gebruik zouden moeten worden ingesteld. Je zou echter een lokatie uit moeten kiezen waar je voldoende ruimte op het bestandssysteem hebt passend voor de bestanden dit je op wilt slaan. Persoonlijk gebruik ik meestal een grote partitie gemount op /archive/ en plaats hier mijn bestanden voor gezamenlijk gebruik.

Het bestand ``/etc/smb.conf'' bevat configuratie-informatie over gezamelijk te gebruiken bestanden & printers. De eerste paar regels van het bestand bestaan uit globale configuratie richtlijnen, die voor alle gedeelde bronnen gelijk zijn (tenzij ze teniet worden gedaan op basis van één gedeelde bron), gevolgd door share secties.

De Samba-installatie bestaat onder andere uit een standaard smb.conf bestand dat in veel gevallen voldoende zou moeten zijn voor wat je nodig hebt en slechts een paar wijzigingen vereist.

Hier is een voorbeeld van dit bestand (dat ik flink heb aangepast om je een aantal van de meer belangrijke en interessante opties te laten zien):

# Items gelijk voor alle gedeelde bronnen (tenzij overschreven op basis van
één gedeelde bron)
[global]
   # Aantal minuten inactiviteit voor de verbinding met een client wordt
   # verbroken ter voorkoming van consumerende bronnen. Bij de meeste clients
   # zal de verbinding automatisch weer worden hersteld, dus is het verstandig
   # dit te activeren.
   dead time = 10

   # Laat gebruikers niet toe een verbinding te maken als “root”,
   # slechts voor het geval dat.  :-)
   invalid users = root

   # Specificeer het account voor guest shares (gedeelde bronnen waarvoor
   # geen wachtwoord is vereist om een verbinding mee te maken.
   # Deze gebruikersnaam moet een geldige gebruiker zijn in het bestand
   # /etc/passwd.
   guest account = guest

   # Geef aan waar logbestanden naartoe zouden moeten worden geschreven.
   # Het toevoegsel “%m” betekent dat logbestanden in het
   # formaat log.machine-name (bv. “log.twixel”) zullen worden
   # aangemaakt.
   log file = /usr/local/samba/logs/log.%m

   # Maximumgrootte van logbestand, in Kilobytes.
   max log size = 1000

   # Wachtwoordniveau 3 betekent dat het er bij het invoeren van wachtwoorden
   # niet toe doet of hoofd- of kleine letters worden gebruikt.
   # Iets minder veilig dan niveau 1 of 2 zou zijn, maar het schijnt een
   # tamelijk eerlijke compromis te zijn voor gebruikersgemak.
   password level = 3

   # Geef aan dat alle gedeelde bronnen in de browse list zouden moeten
   # verschijnen
   # (doe eventuele die je niet wilt teniet door die per gedeelde bron
   # in te stellen).
   browseable = yes

   # Als dit is geactiveerd, kun je actieve connecties bekijken met het
   # commando “smbstatus”.
   status = yes

   # Het niveau aan debug-informatie dat in de logbestanden wordt bijgehouden.
   # Hogere waarden genereren meer informatie (wat waarschijnlijk meestal niet
   # van zoveel nut is).
   debug level = 2

   # Hiermee zullen alle “POPUP”-berichten in de stijl van Windows
   # die op de server worden ontvangen via e-mail naar de postmaster worden
   # verzonden. Niet erg nuttig, maar een interessante demonstratie van wat
   # kan worden bewerkstelligd.
   message command = /bin/mail -s 'Message from %f on %m' postmaster < %s; rm %s &

   # Dit is een vorm van caching welke, wanneer geactiveerd, de performance
   # bij het lezen van bestanden kan verbeteren.
   read prediction = true

   # Een opsomming van services die automatisch aan de browse-list zou moeten
   # worden toegevoegd.
   auto services = cdrom

   # De locatie van je “printcap” bestand, een tekstbestand met
   # daarin de definities van je printers.
   printcap name = /etc/printcap

   # Als dit is geactiveerd zullen alle printers in het bestand
   # /etc/printcap in de browse-list worden geladen.
   load printers = yes

   # Het afdrukcommando waarmee gegevens worden gespoold naar een printer
   # onder Linux.
   print command = lpr -r -P%p %s

   # Het afdrukcommando waarmee wachtrij-informatie (printer status) over de
   # job kan worden verkregen.
   lpq command = lpq -P%p

   # Het afdrukcommando waarmee ongewenste jobs uit de wachtrij kunnen worden
   # verwijderd.
   lprm command = lprm -P%p %j

   # Het niveau waarop Samba zichzelf adverteert als browse uitverkorene.
   # Thans ingesteld op een hoge waarde om zichzelf “staande”
   # te houden tussen alle rondzwervende NT-servers op het netwerk.  :-)
   os level = 34

# Dit zijn de persoonlijke gedeelde bronnen van de gebruiker. Als de
# gebruikersnaam van de client met die op de server overeenkomt, kunnen zij
# hun homedirectory benaderen (op voorwaarde dat ze het juiste wachtwoord
# invoeren).
[homes]
   # De tekst die in de browse-list verschijnt.
   comment = Home Directories

   # Dit vergelijkt de gebruikersnaam van de client met dat van de gedeelde
   # bron. Als die niet overeenkomen, zal in de browse list geen gedeelde bron
   # worden weergegeven, of beschikbaar zijn om een verbinding mee te maken.
   user = %S

   # Het pad naar de gedeelde bron. Bijvoorbeeld, aan “smithj” 
   # zou “/home/smithj” worden toegekend
   path = /home/%S

   # Maakt read/write toegang tot de gedeelde bronnen mogelijk, als dit is
   # geactiveerd.
   writeable = yes

   # Slechts een omgekeerd synoniem voor “writeble”. We hebben
   # ze niet *echt* beiden nodig. :-)
   read only = no

   # Houd dit gedeactiveerd zodat een wachtwoord is vereist voor het benaderen
   # van deze gedeelde bronnen.
   public = no

   # We willen niet dat deze gedeelde bron (per slot van rekening is het
   # privé) in de browse-list van andere gebruikers verschijnt.
   browseable = no

# Dit is een voor het publiek beschikbare gedeelde printer, genaamd 
# “hp_laser”. Het verschijnt in de 
# browse lists en kan zonder een wachtwoord door iedere client worden
# benaderd.
[hp_laser]
   # De tekst die in de browse-list verschijnt.
   comment = Main office printer (HP Laserjet 400)

   # De gebruikersnaam van door wie de gedeelde bron wordt benaderd
   # (guest betekent alle gebruikers).
   user = guest

   # Alle gegenereerde afdrukbestanden zullen eerst in de directory /tmp
   # worden aangemaakt.
   path = /tmp

   # Sta de aanmaak van bestanden niet toe behalve via print spooling.
   writeable = no

   # Stel overeenkomstig de permissies in -- alleen root-toegang om de taken
   # af te drukken.
   create mode = 0700

   # Als dit is geactiveerd, is een wachtwoord niet vereist om de gedeelde
   # bron te benaderen
   public = yes

   # Dit zou moeten worden geactiveerd om aan te geven dat dit een 
   # gezamenlijke printer is.
   printable = yes

# Dit is een service die voorziet in het benaderen van het CD-ROM apparaat.
[cdrom]
   comment = Gedeeld CD-ROM station onder Linux
   user = guest
   path = /cdrom
   writeable = no
   read only = true
   browseable = yes
   public = yes
   guest ok = yes

Tip

Tip: Recente versies van Samba, vanaf versie 2.0, voorzien in een zeer handig op web gebaseerd configuratie utility genaamd ``swat'', wat het proces veel gebruikersvriendelijker maakt. Het utility luistert op TCP-poort 901 van je server, dus om het utility te gebruiken verwijs je je favoriete webbrowser als volgt:

mijndomein.naam:901

(Uiteraard zal je een webserver, zoals Apache, draaiend moeten hebben, wil je het SWAT-utility kunnen gebruiken. Zie de the section called Web Server en HTTP Caching Proxy Beheer voor details).

De laatste Samba-versies voegen ook opmerkelijke mogelijkheden toe in vergelijking met versies van voor 2.0. Het is het waard tijd te steken in het upgraden van dit package.

Een client moet een TCP/IP-netwerkstack hebben draaien om een verbinding met gedeelde bronnen te kunnen maken. Verder moet, wil het browsen functioneren, het TCP/IP-protocol worden verbonden met NETBEUI. Onder Windows 95 kan dit via het “Netwerk” ikoon vanuit het Configuratiescherm worden geconfigureerd.

In de veronderstelling dat de client juist is geconfigureerd, zou je de gedeelde bronnen op de server in hun “Netwerkomgeving” moeten zien verschijnen (of equivalent browsing scheme als je Windows 95/NT niet gebruikt). Je kunt netwerkstations dan vanuit de netwerkomgeving toekennen, of een absoluut pad naar de gedeelde bron intikken (bv. “\\mail\cdrom”). Als voor de gedeelde service een wachtwoord nodig is, zal ernaar worden gevraagd.

Meer informatie over Samba kan worden verkregen vanaf de Samba Home Page op http://samba.anu.edu.au/samba/.