Kapitel 10. Linux som server i Windows-netværk (Samba)

Selv om denne bog handler om Linux, skal man ikke glemme, at der findes andre styresystemer. Et af de mere udbredte er Windows – herunder wfw/95/98/NT/2000, som alle har indbygget muligheden for at fungere i netværk. Hvis man allerede har et lokalnet med både Linux- og Windows-computere, kan man med fordel kigge nærmere på Samba.

Samba er frit programmel, og kan dermed erhverves og bruges helt gratis. I Danmark kan Samba lettest hentes fra http://sunsite.dk/samba/samba.html, ellers fra http://www.samba.org/.

Det som Samba først og fremmest kan tilbyde er at fungere som fil- og printerserver. Derudover kan Samba også fungere som Domain Controller for Windows-klienter.

Med Samba installeret (og ikke mindst sat op) vil serveren kunne ses, hvis man klikker på "andre computere" (på engelsk: "network neighbourhood") eller på samme netværk i Windows 95/98/NT.

Den letteste måde at installere eller opgradere Samba på er at bruge en færdigoversat pakke. Sådanne pakker kan hentes på http://sunsite.dk/samba/ftp/Binary_Packages/, og de findes til flere forskellige Linux-distributioner, bl.a. Red Hat, Caldera, Debian, Slackware og SuSE. Hvis man holder af at oversætte sin kildetekst selv, kan den hentes her: ftp://sunsite.dk/pub/unix/networking/samba.

Vi vil dog meget anbefale at bruge en færdigoversat pakke, og vi vil i eksemplet gå ud fra, at du har Red Hat installeret. Når du har hentet rpm-pakken, skriver du bare:


[root@linus /root]# rpm -ivh samba-*.i386.rpm


10.1. Opsætning af Samba-serveren i Linux

Når du har fået installeret Samba-serveren, skal du have den sat op. Dette kan gøres på flere måder. I sædvanlig Unix-stil kan man rette direkte i filen /etc/smb.conf. Denne fil kan virke meget skræmmende, da der er op mod 300 parametre, man kan sætte. Det skal du dog af to grunde ikke lade dig gå på af: For det første har de fleste parametre udmærkede forudvalgte værdier, så dem behøver man slet ikke at bekymre sig om. For det andet bliver der installeret en udmærket standard /etc/smb.conf, som virker uden de store ændringer.

Denne standard smb.conf er desuden meget velkommenteret, hvilket yderligere letter tilpasning. Her er et eksempel på en lille /etc/smb.conf-fil, som ud over at sætte Samba op som fil- og printerserver også sætter Samba op som domænekontroller.


[global]
   workgroup = hjemme

   printing = bsd
   printcap name = /etc/printcap
   load printers = yes

   log file = /var/log/samba-log.%m

   short preserve case = yes
   preserve case = yes

   lock directory = /var/lock/samba
   locking = yes
   strict locking = yes

   security = user

   socket options = TCP_NODELAY

   domain master = yes
   domain logons = yes
; Hvis du vil have Windows klienter med æ,ø og å
   client code page = 850
   character set = ISO8859-1
   valid chars = æ:Æ ø:Ø å:Å

[homes]
   comment = Home Directories
   read only = no
   create mode = 0750

[deskjet870cxi]
   comment = All Printers
   path = /var/spool/samba
   browseable = yes
   printable = yes
; Set public = yes to allow user 'guest account' to print
   public = no
   writable = no
   create mode = 0700


Tip: I Windows 2000 skal man udføre kommandoen chcp 850 i et terminalvindue. Hvis man ikke gør dette på Windows-maskinerne vil Samba oversætte ø:Ø forkert til o:O i stedet, da Windows 2000 ikke selv sætter codepage til 850 men derimod til 457 selvom man sætter sin locale til dansk under installationen.

10.1.1. Tillidsforhold mellem maskinerne

For at dine Windows NT/2000/XP-klienter skal få lov til at logge sig på Samba-serveren, skal Samba kende til dem – ikke brugerne, men de enkelte maskiner. Første gang en maskine tilsluttes genereres et ID-nummer for maskinen som serveren skal huske, til dette formål bruger Samba såkaldte "Machine Trust Accounts" (MTA). Med samba består sådanne af to dele:

  • En sambakonto, sædvanligvis gemt i din smbpasswd-fil.

  • En tilhørende Unix-konto, sædvanligvis gemt i /etc/passwd.

Der er flere måder at klare oprettelsen af disse på:

  • Man kan oprette begge dele direkte på serveren, før man slutter arbejdsstationerne til domænet. Det åbner en mulighed for at andre kan nå at tilslutte en maskine og "stjæle" kontoen. Hvis man kan overskue netværket eller stoler på de folk der har adgang til bygningen er dette næppe et problem.

  • Man kan få samba til at oprette det hele undervejs. Det kræver at root er oprettet som sambabruger (bemærk at root skal være den første bruger i smbpasswd-filen), men til daglig kan man jo deaktivere kontoen. Brug for en sikkerheds skyld også forskellige kodeord for root som unix- og sambabruger. Derudover kræver det lidt arbejde at få lavet et script der kan klare oprettelsen af Unixkontoen.

  • Man kan oprette Unixkontoen på forhånd, og lade samba oprette sambakontoen undervejs. Det kræver at root er oprettet som sambabruger (bemærk at root skal være den første bruger i smbpasswd-filen), men til daglig kan man jo deaktivere kontoen. Brug for en sikkerheds skyld også forskellige kodeord for root som unix- og sambabruger. Til gengæld slipper man for at skriver et script til oprettelse af Unixkontoen og for at oprette sambakontoerne ved håndkraft.

Hvis windowsmaskinen hedder WS1 (hvor det sættes afhænger lidt af windowsversionen, men det er noget i retning af "kontrolpanel/netværk"), skal Unix- og sambakontoen hedde WS1$. Dette dollartegn fortæller serveren at der er tale om en maskinkonto.

Da forfatteren ikke kan se nogen god grund til ikke at oprette unixkontoerne på serveren, vil vi ikke gennemgå metode 2. Lige meget hvilken af de to andre metoder du vil benytte skal du læse næste afsnit, og hvis du vil benytte metode 1 skal du også læse det næste igen.

10.1.1.1. Oprettelse af unixkontoen

Unixkontoen skal oprettes i filen /etc/passwd. Dette kan enten gøres med en kommando i stil med useradd -u 801 -g 800 -c "Arbejdsstation 1" -d /dev/null -s /bin/false ws1$ , eller ved at indsætte en linje (brug din favoriteditor) à la:


ws1$:801:800:Arbejdsstation 1:/dev/null:/bin/false


Det er selvfølgelig en forudsætning af der findes en gruppe med gid 800 til maskinerne. Du kan oprette gruppen med en kommando i stil med:


groupadd -g 800 maskiner


10.1.1.2. Oprettelse af sambakontoen

Når vi har tilføjet vores Windows-klient i /etc/passwd, skal vi få Samba til at generere vores MTA. Det gøres med kommandoen


[root@linus /root]# smbpasswd -a -m WS1


Når man har afviklet smbpasswd, vil man kunne se følgende linje i filen /etc/samba/smbpasswd (hvor noget af linjen er forkortet):


WS1$:801:996FE367692....05AA1BE70:[W    ]:LCT-397A3E6E


N.B. Det kan være at smbpasswd ligger i /etc/.

10.1.2. Samba som primær domænekontroller

Som noget nyt i version 2.x.x har man nu mulighed for at sætte Samba op som primær domænekontroller for et Windows-netværk med 95-, 98-, ME- og NT-klienter. Det vil dog føre for vidt at komme ind på det her. Hvis man har mod på at prøve, kan man finde mere information her http://us1.samba.org/samba/ftp/docs/htmldocs/Samba-PDC-HOWTO.html