Kapitel 6. Linux som fil- og printerserver for Windows-maskiner

Af: Søren Ulrik

Selvom Microsofts Windows-styresystemer er væsensforskellige fra GNU/Linux og andre *NIX'er, kan det alligevel lade sig gøre at få dem til at "tale sammen". En Linux-server kan dele filer og printere ud til Windows-klienter, og en Linux-boks kan bruge delte ressourcer på Windows-maskiner.

Softwaren, der muliggør denne kommunikation hedder The Samba Software Suite.

6.1. Samba

The Samba Software Suite er en samling programmer, der gør det muligt for Linux- (og andre *NIX-) systemer at tale sammen med Microsoft-netværk via SMB/CIFS-protokollen.

Samba kan bruges til flere forskellige ting:

Som standard følger Samba-2.0.6-9 med RedHat 6.2, men der findes en nyere version på ftp://ftp.sslug.dk/pub/mirror/redhat/ - du skal bruge samba-2.0.*.i386.rpm, samba-client-2.0.*.i386.rpm og samba-common-2.0.*.i386.rpm.

Samba-2.0.7 (samba-2.0.7-21ssl.i386.rps, samba-common-2.0.7-21ssl.i386.rpm og samba-client-2.0.7-21ssl.i386.rpm) følger som standard med Redhat 7.0.

Samba-teamet arbejder for øjeblikket på Samba - The Next Generation, som får fuld implementering af Windows NT Domæne-modellen.

6.1.1. Installation af Samba

Når Samba-2.0.7 RPM'en er hentet, opgraderer vi ved først at afinstallere samba-2.0.6-9 (for at undgå fejlmeddelelser - fx er ...client...-pakken afhængig af common...-pakken) ved at skrive:

[root@gnuskole /root]# rpm -e samba
[root@gnuskole /root]# rpm -e samba-client
[root@gnuskole /root]# rpm -e samba-common

Derefter installeres de nye pakker med

[root@gnuskole /root]# rpm -Uvh samba-common*.i386.rpm
[root@gnuskole /root]# rpm -Uvh samba-2*i386.rpm
[root@gnuskole /root]# rpm -Uvh samba-client*.i386.rpm

Konfigurationen af Samba foregår i en tekst-fil ved navn /etc/smb.conf (Redhat 7.x:/etc/samba/smb.conf). Filen er inddelt i afsnit: et afsnit ved navn [Global], der angiver nogle "grund-indstillinger" for Samba, et afsnit ved navn [Printers], der indstiller hvordan printning skal foregå gennem Samba-serveren, et afsnit ved navn [Homes], der indstiller, hvordan hver brugers hjemmebibliotek bliver delt. Derudover skal der laves et afsnit for hvert "share", man vil have på sin Samba-server.

6.1.2. Første eksempel - Samba som fil- og printerserver i et NT-domæne

Hvis en Linux-maskine skal dele en printer eller en mappe, og brugerne i forvejen er oprettet på en Windows NT-server, er det hensigtsmæssigt at lade NT-serveren godkende adgangen til de delte ressourcer på Linuxmaskinen. På den måde er der kun en brugerdatabase, der skal vedligeholdes.

Allerførst skal smbd og nmbd-daemonerne stoppes:

[root@gnuskole /root]# /etc/rc.d/init.d/smb stop

Derefter skal følgende linier i /etc/smb.conf redigeres:

workgroup = gnuskole

sættes til navnet på NT-domænet (ikke Internet-domænenavnet!)

netbios name = sambagnu
hosts allow = xxx.xxx.xxs yyy.yyy.yyy. 127.

Begrænser adgangen til smb-services til maskiner fra de angivne netværk (de tre første tal fra IP-adresserne). Har man et IP-adresseområde fra 192.168.100.1 til 192.168.100.255 hedder netværket 192.168.100.

security = domain

Angiver, at adgangskoder kontrolleres af et NT-domæne

password server = gnuskolePDC gnuskoleBDC

Maskinnavne på Domain Controllers i domænet

;password level = 8
;username level = 8

Disse to værdier angiver, hvor præcist brugernavn og password skal passe mht. store og små bogstaver. Standard er 0, men hvis man får en fejlmeddelelse om, at adgangskoden er forkert, selvom man har skrevet rigtigt, kan værdien sættes op ved at fjerne semikolon og skrive fx 4. Jo højere værdi, jo lavere sikkerhed! Det skulle især være et problem med Windows for Workgroups-klienter.

encrypt passwords = yes

Windows NT og Windows 98 sender krypterede passwords over netværket - det gør Unix ikke. Hvis passwords skal godkendes af en NT-server er det derfor nødvendigt enten at sætte denne parameter til yes, eller ændre i registreringsdatabasen på NT- og 98-maskiner. I dette tilfælde, hvor det er NT, der skal godkende passwords er løsningen at sætte Samba til at bruge krypterede passwords.

;smb passwd file = /etc/smbpasswd

Denne parameter er ikke nødvendig her, fordi smb-passwords kontrolleres af PDC'en.

name resolve order = wins lmhosts bcast

Angiver, hvordan Samba-programmer skal forbinde navne med IP-adresser. Ved ovennævnte liste spørger Samba først en WINS-server, derefter kigger den i den lokale /etc/lmhosts og sluttelig ved broadcast.

wins support = no

Disabler den indbyggede WINS-server (Windows Internet Naming Service). WINS er en service, der holder NetBIOS-navne sammen med IP-adresser - og må ikke forveksles med DNS-systemet!

wins server = w.x.y.z

Angiver IP-adressen på en aktiv WINS-server - i dette tilfælde vil det være en NT-server, typisk PDC'en.

wins proxy = yes

Cacher WINS-basen, så den kan svare på WINS-queries fra andre klienter. Kræver også, at der er en WINS-server på netværket.

Inden samba-daemonerne skal startes, skal der oprettes en maskin-konto på PDC'en, for at Samba kan blive medlem af domænet, så nu er det tid til at lave lidt arbejde på NT-serveren :-/

Log på PDC'en som administrator, og start Server Manager (ligger under Administrative Tools).

Vælg ...-> Add -> og skriv NetBIOS navnet på Samba-maskinen. Klik på OK, og afslut Server Manageren.

Tilbage til Linux-maskinen :-)

Nu skal der oprettes en maskin-identifikationsfil til Samba. Det sker ved at køre kommandoen

[root@gnuskole /root]# smbpasswd -j "NT-domæne-navn"

Det skulle gerne give resultatet

Succesfully joined domain ccesfully joined domain gnuskole

Hvis det er en printer, man gerne vil dele, er opsætningen lavet som standard - man behøver som regel ikke at foretage sig yderligere. Hvis det er brugeres hjemmebiblioteker (fx. på en webserver) skal man blot oprette brugeren (fx i userconf, eller med gnuskole-programmet "NyBruger"). Der er en del gode eksempler på mulige shares i den smb.conf, der følger med Samba.

Når man er færdig med at tilrette smb.conf, kan den checkes med kommandoen testparm. Hvis denne giver et fornuftigt output uden fejlmeddelelser startes Samba med kommandoen /etc/rc.d/init.d/smb start

Derefter skulle Sambaserveren gerne optræde under Andre Computere/Network Neighbourhood på Windows-maskinerne, og de delte printere og mapper skal kunne ses ved at dobbeltklikke på ikonet for Linux-boksen.

6.1.3. Andet eksempel - Samba som NT Domain Controller

Hvis man helt vil undgå at anvende Windows NT på sine servere (af økonomiske hensyn, p.gr.a hardwarekrav eller af andre gode grunde) kan Samba sættes op til at håndtere brugerlogon, uddeling af hjemmekataloger, afvikling af logonscripts, roaming profiles, m.m. Kort sagt kan Samba alle de ting man har brug for, hvis klienterne kører Windows 9x. De nævnte funktioner kører også fint med Windows NT 4.0 klienter, men Samba giver desværre ikke mulighed for at benytte at benytte brugergrupper, eller styring af filrettigheder på et NTFS-formateret drev. Derudover kan man ikke anvende Microsofts programmer som User Manager for Domains, Server Manager for Domains, osv. Fuld understøttelse af hele PDC-koden er under udvikling, og vil som tidligere nævnt være en del af næste generation af Samba - TNG.

Opsætningen af Samba til at håndtere domain-logons indebærer 3 ting:

  • Redigering af smb.conf

  • Tilretning af mappen /etc/skel (en skabelon for nyoprettede brugeres hjemmebiblioteker)

  • Oprettelse af Unix-brugere

  • Oprettelse af brugere i Samba

Derefter skal de filer der anvendes af Klientprogrammet til Microsoft-netværk oprettes, dvs. logonscript og en evt. policy-fil.

6.1.3.1. Redigering af smb.conf

For at få Samba til at håndtere domain-logons,skal /etc/smb.conf redigeres (Redhat 7.0: /etc/samba/smb.conf). Der er utrolig mange muligheder at redigere i smb.conf, men vi har lavet et eksempel, der kan hentes her. Denne fil skal erstatte standard-smb.conf, og rettes til på flg. punkter for at passe til dit lokale netværk:

 workgroup = gnuskole

sættes til det navn, du ønsker dit "NT-domæne" eller arbejdsgruppe skal have.

 netbios name = server

Angiver hvilket navn serveren skal optræde med på klienterne. Hvis linien udkommenteres anvendes det host-navn, som er angivet i netværksindstillingerne (DNS-navnet)

hosts allow = 172.17.100.0/255.255.255.0 192.168.104.0/255.255.255.0 127.

Her vælges, hvilke netværk, der skal have adgang til serveren. Eksempel giver adgang til to klasse C netværk (172.17.100.0/255.255.255.0 og 192.168.104.0/255.255.255.0) og "loopback" interfacet.

logon script = script.bat

Her angives filnavnet på den DOS-batchfil, der skal køres på klienterne ved logon. Filen placeres i den mappe, der angives som sti til sharet NETLOGON, og kan enten have et fast filnavn (som her "script.bat"), eller være speciel for hver maskine (%m.bat) eller for hver bruger (%U.bat).

Efter afsnittet [global] i smb.conf defineres de delte ressourcer (mapper og printere), som brugerne skal have adgang til. To af afsnittene er specielle, nemlig [homes] og [printers].

Homes giver hver bruger adgang til sit home-dir, og Printers deler de printere, der er installeret på serveren. Der skal altså ikke foretages andet end at installere de printere serveren kontrollerer (fx v.hj.a. RedHat's printtool) for at brugerne får adgang til dem via netværket.

Derudover er følgende share-definitioner en bemærkning værd:

[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
writable = no
share modes = no

I denne mappe (/home/samba/netlogon) placeres som tidligere nævnt logon-scripts (DOS-BATCH-filer) og evt. filen config.pol, hvis man anvender Microsoft's System Policies. Det er vigtigt, at alle brugere har læserettigheder til denettigheder til denne mappe, men at det kun er systemadministratoren, der har skriveadgang.

Derudover skal man være opmærksom på, at UNIX-tekstfiler har et andet linieskiftsformat end DOS-tekst-filer. Logon-scripts skal være i DOS-tekstformat, fordi de afvikles på Windows-maskinerne. Man kan fx. oprette .bat-filen i Notepad, og overføre den til Linux-serveren.

Resten af de mapper, man ønsker at dele, oprettes efter følgende princip:

[elevprog]
path = /home/samba/progs
browseable = no
writable = yes

altså sharenavnet i [], stien til mappen på serveren, og yderligere egenskaber for sharet. For yderligere muligheder, se smb.conf man-siderne.

6.1.3.2. Tilretning af /etc/skel

Når en ny bruger oprettes (med kommandoen adduser brugernavn eller ved brug af Linuxconf), oprettes et hjemmebibliotek med samme navn som brugernavnet under /home. I dette hjemmebibliotek placeres en kopi af de filer, systemadministratoren har placeret i mappen /etc/skel. Det er altså muligt at lave en skabelon for nyoprettede brugeres hjemmebibliotek, og fx placere en mappe, der hedder Dokumenter eller en mappe, der hedder hjemmeside (se Kapitel 8 om Linux som Webserver) i nye hjemmebiblioteker. Sidstnævnte mappe oprettes ved at køre kommandoerne

mkdir /etc/skel/hjemmeside
chmod 755 /etc/skel/hjemmeside

(sidstnævnte er nødvendigt, for at filerne kan læses af webserveren)

Man kan med fordel slette de øvrige filer og mapper i mappen /etc/skel, da de primært er interessante for brugere, der skal arbejde direkte på serveren (eller via telnet og SSH), og det er jo ikke målet med server på en skole.

6.1.3.3. Oprettelse af UNIX-brugere

For at brugerne kan få tildelt et hjemmebibliotek på serveren, skal de først oprettes som brugere i UNIX-systemet. Dette kan gøres på flere måder. Man kan enten bruge programmet NyBruger, der er et program, der er udviklet netop til dette formål i forbindelse med GnuSkole-projektet, man kan anvende KDE's User Manager, som startes ved at skrive kuser i et terminalvindue under X, man kan anvende userconf, som både kan køre konsolbaseret og som X-klient, eller man kan "gøre det i hånden" med kommandoen adduser brugernavn. Under alle omstændigheder skal man være root for at tilføje brugere til systemet. Bruges sidstnævnte metode skal man huske efterfølgende at tildele brugeren et password med kommandoen passwd brugernavn, efterfulgt af 2 gange indtastning af adgangskoden.

KDE's User Manager har den fordel, at man med den kan oprette brugere, hvis brugernavn begynder med et tal. Dette er ikke muligt med userconf eller kommandoen adduser.

Vi anbefaler ved brugeroprettelse, at elevernes årgang og spor-bogstav på en eller anden måde indgår i brugernavnet, da det så er lettere at overskue en hel klasse ad gangen, fx når eleverne går ud af skolen. Navngivningen kan fx laves som "sporbogstav-skolestartsår-fornavn", så Peter, der går i a-klassen, og startede i skole i 1994 får brugernavnet a94peter.

6.1.3.4. Oprettelse af brugere i Samba

Når brugere er oprettet i UNIX-filsystemet, er det nødvendigt også at tilføje dem til filen /etc/smbpasswd, for at de kan få godkendt de krypterede adgangskoder, som Win9x og NT-klienter sender over netværket.

Denne oprettelse foretages med kommandoen smbadduser brugernavn, hvorefter brugerens adgangskode igen skal skrives 2 gange, eller ved at sætte NyBruger op til at oprette både UNIX- og Samba-brugere.

Man kan også slå smbadduser og smbpasswd sammen og skrive:

[root@gnuskole root]# smbpasswd -a brugernavn password

Så slipper man for at skrive så meget.

6.1.3.5. Oprettelse af maskinkonto

Når Samba skal optræde som Domain Controller i et netværk med NT-klienter, skal der oprettes en brugerkonto til hver maskine med NT-workstation eller -server styresystem. Det samme gælder hvis man skal tilføje flere Linuxmaskiner med Samba.

For at undgå, at denne maskinkonto får et hjemmebibliotek og en shell, oprettes maskinkontoen med kommandoen:

adduser -s /bin/false -M maskinnavn$

Derefter oprettes en Samba-maskinkonto med kommandoen smbpasswd -ma maskinnavn I den sidste skal der IKKE et $-tegn med.

Nu kan NT-maskinerne eller de ekstra Sambaservere logge på netværket op mod Samba-serveren. De ekstra Sambamaskiner skal dog huske at bede om at komme ind i domænet (se Afsnit 6.1.2).

6.1.4. Sikring af Windows9x-klienter

Af: Jesper Hegaard

Dette er umiddelbart en umulig opgave for enhver administrator, når vi arbejder med DOS/Windows9x-maskiner. Elever med "særlige evner" omgår ofte selv de bedste foranstaltninger og ændrer i maskinernes opsætning, skrivebordets udseende osv. Dog kan man, i hvert fald for en periode, begrænse brugernes muligheder for dette.

Denne liste over muligheder er på ingen måde komplet, men anviser forskellige tiltag man kan/bør forsøge sig med.

- sæt password på BIOS og sørg for at maskinen booter på C-drev/IDE0 - C-only

- disable floppydrev, fjern det evt. fysisk fra maskinen, for at forhindre DOS-boot og lignende. Ligeledes er disketter ofte årsag til virus.

- indsæt følgende i c:\msdos.sys under [Options] BootKeys=0. BootDelay-kommandoen overskrives og muligheden for at vælge i opstartsmenuen fjernes.

- vil man være rigtig "hård", kan man fjerne command.com fra c:\. Så er det overhovedet ikke muligt at afvikle DOS-programmer.

- sæt nøgler i registreringsdatabasen. Start regedit.exe fra Kør i Start-menuen, find H_HKEY_LOCAL_MACHINE\Network\Logon\ og indsæt ny strengværdi -> MustBeValidated med værdien 1. Dette forhindrer, at brugeren trykker knapperne Annuller og X (kryds) når logon-vinduet vises. Find også H_KEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\Winlogon og indsæt ny strengværdi -> DontDisplayLastUserName med værdien 1. Dette sletter sidstanvendte brugerID i Longonvinduet. Ved samme lejlighed bør man fjerne programmet regedit.exe fra mappen c:\windows på maskinen. Dette program kan afvikles fra diskette.

- indsæt del c:\windows\*.bmp i autoexec.bat på arbejdsmaskinerne eller i "NETLOGON" på serveren. Dette sletter alle bitmapfiler i windowsbiblioteket og hermed mystiske tegninger, som eleverne har fremstillet i Paint e. lign. og lagt ind som tapet på Skrivebordet.

- brug policy-filer (poledit.exe findes på Windows 9x CD-ROM i \ADMIN\APPTOOLS\POLEDIT). Kopier programmet over på en diskette og kør det herfra. Her gives mange muligheder for at sætte begrænsninger for brugerne.

Begrænsningerne kan laves på 2 måder.

1. Begrænsningerne ligger lokalt på hver enkelt computer. Start programmet poledit, vælg Fil-> Åbn registreringsdatabasen. I Lokal computer og Lokal bruger kan man sætte generelle begrænsninger for computer/bruger, der gemmes lokalt i maskinens registreringsdatabase og gælder for alle brugere. Filen kan også gemmes i "NETLOGON" på serveren og aktiveres når brugere logger på.

2. Begrænsningerne indlæses når der logges på serveren. Start programmet poledit, vælg Fil-> Ny fil. I Standardbruger og Standardcomputer kan der sætte begrænsninger for standardbruger/computer, eller der kan oprettes forskellige brugere med forskellige rettigheder. Denne fil kan gemmes i "NETLOGON" på serveren og aktiveres når brugerne logger på.

Det sidste er at anbefale, da man ellers kan have svært ved at lave forskelligt administrationsarbejde på de enkelte computere.

Herudover bør man selvfølgelig have en sikkerheds- og anvendelsespolitik, hvor brugerne (og deres forældre) har skrevet under på, at de bl.a. ikke må ændre i maskinernes opsætning.