7.5. AppleTalk

Linux kan ikke bare forbindes til Apple via ftp, men også via almindelig fildeling. For brugerne af lokalnettet kommer Linux-serveren så til at optræde som en Mac-server.

Det er ikke svært at anvende en Linux-maskine som filserver hvis de andre klienter i netværket kører Microsoft Windows®, da Samba-protokollen (som beskrevet i Kapitel 10) følger med stort set alle distributioner af Linux. Dette er ikke så lige til med Mac-protokollen, da du selv må hente denne. Til at forbinde et Mac-netværk med en Linux-maskine bruges et program/protokol der hedder Netatalk. Dette program får på listig vis din Linux-maskine til at se ud som en Macintosh-filserver. Programmet understøtter to typer af AppleTalk-protokollen; nemlig Classic AppleTalk og AppleShareIP (sidstnævnte kaldes også TCP/IP til Mac).

Programmet blev oprindeligt udviklet af University of Michigan's Research Systems Unix Group og understøttede oprindeligt kun Classic AppleTalk. Sidenhen er det blevet udviklet og vedligeholdt af Adrian Sun, der ud over at debugge programmet også har implementeret understøttelse af AppleShareIP og andre udvidelser.

Netatalk kan hentes fra: ftp://ftp.cobaltnet.com/pub/users/asun/release/netatalk-1.4b2+asun2.1.3.tar.gz

og færdigoversat fra: http://thehamptons.com/anders/netaltalk/mirror/netatalk-1.4b2+asun2.1.1.x86-shadow-linux.tar.gz

Til Debian: http://packages.debian.org/stable/non-US/netatalk

Til RPM-baserede systemer (SuSE, RedHat, Mandrake): ftp://contrib.redhat.com/pub/contrib/libc6/SRPMS/netatalk-1.4b2+asun2.1.3-6.src.rpm (husk at køre rpm --rebuild -sti-til-source for at oversætte og installere den)

Hvis du har hentet en af .tar.gz-filerne, skal du gøre sådan her:

[root@linus /root]# tar xzvf <filnavn>.tar.gz
...
[root@linus /root]# cd netatalk<tab><enter>
[root@linus netatalk]# make install

Netatalk "bor" i kataloget /usr/local/atalk/. Server-binaries og opsætningsfiler ligger i /usr/local/atalk/etc og userland-binaries i /usr/local/atalk/bin. Hvis du ikke kan finde netatalk efter du har installeret den, så brug kommandoen find / -name atalkd for at finde den.

For at kunne bruge Classic AppleTalk-protokollen, skal understøttelsen af denne være slået til i kernen. For at finde ud af, om den er det, gør du følgende: dmesg | grep -i apple. Hvis den ikke er der, skal du oversætte din kerne om, med dette tilvalg slået til.

Det program der gør AppleTalk-shares tilgængelige i både Classic AppleTalk og AppleShareIP hedder afpd og får sin opsætning fra en fil der hedder afpd.conf.

Den simpleste afpd.conf-fil indeholder kun ét - (minus), hvilket står for "Denne computer" med alle standard options koblet til. En lidt mere kompliceret opsætning kunne være følgende:

- 
MinLinuxMac -port 12000
"Denne Linux Leger Mac" -port 12001
"Der Ude" -port 12000 -address 206.114.89.46
"Guest Volume" -nocleartxt  -loginmesg "Vær venlig ved min gæsteserver !"
"Boksen" -noguest -port 12000
"Det Helligste" -notcp -defaultvol <path> -systemvol <path>

Forklaring af opsætningsfilen:

Den første linje kun med en bindestreg gør at Linux-maskinen laver en server med sit hostnavn. Den anden linje laver en server ved navn MinLinuxMac på port 12000. Den tredje linje laver en server kaldet "Denne Linux Leger Mac" på port 12001. Den fjerde linje laver en server kaldet "Der Ude", bundet på port 12000 og med den virtuelle IP-adresse 206.114.89.46.

I næste sektion laver linjen "Guest Volume" -nocleartxt -loginmesg "Vær venlig ved min gæsteserver !" en dedikeret gæsteserver, der ikke spørger om adgangskode og som giver login-beskeden "Vær venlig...". Linjen "Boksen" -noguest -port 12000 laver en volume på port 12000 der ikke tillader gæsteadgang. Linjen "Det Helligste" -notcp -defaultvol <path> -systemvol <path> laver en server der ikke bruger TCP/IP (kun DDP) og som bruger to alternative opsætningsfiler i stedet for de to standardfiler AppleVolumes.default og AppleVolumes.system. Husk at rette i <path> hvis du vil gøre dette.

Lav et Classic AppleTalk-share:

For at lave et Classic AppleTalk-share skal du ændre i filen /usr/local/atalk/etc/AppleVolumes.system Eksempelvis hvis du indsætter linjen /data/www "Webserver" laves der en volume kaldet Webserver, hvis indhold så vil kunne ses.

Den anden ting denne fil styrer, er "type-creator mappings". På Macintosh består alle filer (ulig på Unix) af to dele. En "resource fork" og en "data fork". Resource fork'en gemmer på ting som ikoner, filtyper, og mapping til den applikation der i sin tid blev brugt til at lave filen. Siden Linux-filer generelt er en lang liste af bogstaver i stedet for delt i to forke/forks, skriver netatalk resource forkene i filer i et katalog kaldet .AppleDouble. Derfor skabes én Macintosh-fil af to filer på Linux-maskinen; eksempelvis enfil.txt og .AppleDouble/enfil.txt. Denne fil ville så, hvis det var en tekstfil og Word havde lavet den, skulle have haft følgende type-creator mapping i afpd.conf: .txt TEXT MSWD for at fortælle afpd at .txt-filer er TEXT-filer og at det var Microsoft Word der blev brugt til at fremstille filen. Afpd vil så fortælle dette til Macintosh-maskiner der støder på filer der ender på .txt og som ikke er blevet oprettet på en Macintosh-maskine.

ATALKD-daemonen:

Atalkd er det kerne-interface der bruges til Classic Appletalk. Det vil agere forbindelse mellem AppleTalk-kernemodulet og resten af Classic AppleTalks funktioner i netatalk. Den vil sågar også tage sig af AppleTalk-routing mellem flere netkort.

Atalkd er styret af opsætningsfilen atalkd.conf. Den enkleste form for opsætningsfil (og også den enkleste måde at konfigurere atalkd på) er en tom fil. Denne fil vil atalkd så selv overskrive med nogle ganske fornuftige opsætninger. Det er tilrådeligt at specificere alle de netkort man har i atalkd.conf-filen. Hvis man specificerer mere end ét netkort, vil atalkd selv route AppleTalk-pakker mellem netkortene.

Følgende opsætning kunne overvejes:

eth0 -net 153-174 -addr 154.212 -zone "Langt Ude"
eth1 -net 175-200 \adr 182.318 -zone "På Landet" -seed  

Hvad betyder så dette? Forklaringen er ret simpel; hver linje i filen atalkd.conf specificerer ét netkort. I dette eksempel betyder det at eth0 (første netkort i Linux-maskinen) bruges på et netværk med AppleTalk-adresser mellem 153 og 174 (se eventuelt afsnittet om TCP/IP for nærmere forklaring om netværksadressering). Dette netkort (eth0) er her konfigureret til at bruge AppleTalk-adressen 154.212 og eksisterer i zonen "Langt Ude".

Næste linje betyder at det sekundære netkort eth1 eksisterer på et netværk mellem 175 og 200 med adressen 182.318 og pakker til zonen "På Landet". Derfor vil atalkd agere router mellem de to netværk. Bemærk, at netværksnumrene ikke må overlappe hinanden; ej heller må der være andre routere på eth1-netværket. Hvis atalkd finder en anden router end den der er specificeret i filen, vil programmet afslutte sig selv. Bemærk også, at hvis du har flere end 5 maskiner på netværket, skal du angive dette over for afpd (se nedenfor) - ellers virker det bare ikke! Derfor anbefales det at læse afsnittet om TCP/IP - det er ikke så svært som det umiddelbart ser ud til.

Så kommer den sjove del af det hele - vi skal prøve at starte Netatalk-serveren op!

Først skal du finde ud af hvor Netatalks starup-script ligger, hvis du ikke allerede ved det.

Dette kan du gøre sådan her:

find /* -name "*atalk*" -print 

eller med

locate "*atalk*" 

(Husk at køre updatedb som root efter installationen af Netatalk, ellers vil den ikke kunne findes af databasen af kommandoen locate).

Når du så er i det katalog hvor scriptet er, skriver du: ./rc.atalk start og venter et par sekunder på at Netatalk starter op. Dette vil så starte en filserver der kører Classic AppleTalk. Kun hvis du har specificeret nogle TCP/IP-adresser i afpd.conf-filen vil en tilsvarende Appletalk IP-server blive startet også. Atalkd er den der tager længst tid at starte op, da den først kontrollerer netværket ud før den registrerer sig selv. Alternativt kan du nøjes med kun at starte en TCP-server, hvis du på forhånd har konfigureret en i atalkd.conf-filen. Det gøres sådan her:

/usr/local/atalk/etc/afpd -F
/usr/local/atalk/etc/afpd.conf

Bemærk! Hvis du skal bruge mere end 5 forbindelser til Netatalk-serveren skal du angive et antal maksimumforbindelser når du starter afpd. Det gøres med argumentet -c: afpd -c 25 Dette vil så give mulighed for 25 forbindelser til Netatalk-serveren.

Hvis denne kommando lykkes uden at brokke sig, så gå hen til en Mac og åbn "Chooser" (under Apple-menuen i venstre side). Klik på AppleShare og se om din Netatalk-server er der. Hvis du bruger AppleShareIP skal du klikke på AppleShareIP-knappen og manuelt indtaste maskinens navn eller IP-nummer. Hvis alt så er lykkedes vel, vil du blive bedt om at indtaste din adgangskode.

Husk, at du af sikkerhedsmæssige årsager ikke kan logge ind på filserveren som root, og kun hvis dit brugernavn består af 8 eller færre tegn. Guest access (gæsteadgang) til filserveren vil være tilladt, hvis det ikke er blevet forbudt i afpd.conf.

Hvis det lykkes dig at logge ind, vil du blive præsenteret for en liste af "volumes" du så kan vælge - og montere. Det er tilrådeligt at bruge et af de startup-scripts der følger med Netatalk, til at starte denne med når maskinen booter. Alt afhængigt af hvilken distribution du bruger, skal du følge fremgangsmåden for hvordan din maskine gør. På en Red Hat skal du nok kigge på /etc/rc.d/rc.local. Ellers er et andet godt bud /etc/init.d, for at finde ud af hvor dine startup-scripts befinder sig.

Andre ting man kan gøre med Netatalk:

Tovejs-krypteret "password authentication" er understøttet af Netatalk. Men for at dette skal kunne bruges, må serveren nødvendigvis vide hvor klartekst-adgangskoderne kan findes henne. Da systemadgangskoderne er krypterede ved serveren ikke hvad klartekst-adgangskoderne er, så det skal den have at vide. Ved at oprette en .passwd-fil i brugerens hjemmekatalog med klartekstadgangskode i kan tovejskryptering opnås (punktummet foran i filen betyder at den er skjult og vil kun blive vist, hvis man bruger ls -a).

Det ganske usikkert at gemme sine adgangskoder på et så forudsigeligt sted. Derfor kræver Netatalk at hver .passwd-fil ejes af den pågældende bruger. Filen må kun være læsbar og skrivbar for denne bruger. I enkle ord skal du en gang for alle bare gøre sådan med .passwd-filen:

[root@linus /root]# chown BRUGER.GRUPPE /home/<brugernavn>/.passwd
[root@linus /root]# chmod 600 /home/<brugernavn>/.passwd

Hvor BRUGER er brugerens gruppe, og GRUPPE er brugerens standardgruppe.

7.5.1. Udskrivning via Netatalk

Netatalk kan ikke kun agere filserver for Mac-maskiner. Den kan også lave print-spooling og endda printe til eksisterende AppleTalk-spools. AppleTalk-spooling opnås med et program der kaldes papd.

Vi antager at du allerede har en lokal printer der er sat op under Linux og som har Mac-drivere installeret. papd vil så annoncere sig selv på netværket som et print spool og acceptere jobs fra Mac-maskiner på netværket. Dette kan lade sig gøre, da printerjobs er Postscript-filer, som papd så vil føde Linux-printsystem (lpd) med. Eksempler på hvordan papd sættes op kan findes på:

http://www.giub.unibe.ch/~eugster/appleprint.html

Det modsatte af dette - altså at printe fra en Linux-maskine til en Macintosh-printer - kan opnås ved at bruge pap. Se hvordan med kommandoen man pap.

7.5.2. Anden nyttig viden om AppleTalk-server

Lige som på Linux og Microsoft Windows® er der værktøjer til at pinge maskiner med. Over TCP/IP findes der aecho til AppleTalk, der virker ligesom ping. Kommandoen getzones vil returnere en liste over de Macintosh-zoner der findes på netværket. Ydermere vil kommandoen nbplkup uden options returnere en uddybende liste over alle de AppleTalk services der findes på det lokale netværk.

Der findes mange andre programmer til at bruge med Netatalk - så vær ikke bange for at gå i gang med at udforske området - held og lykke !

Andre steder på nettet man bør besøge hvis man bruger Netatalk:

The Netatalk HOWTO: http://thehamptons.com/anders/netatalk/

The Netatalk Faq-O-Matic: http://www.zettabyte.net/fomserve/netatalk/cache/1.html

The Original Netatalk pages: http://www.umich.edu/~rsug/netatalk/

The Netatalk Admins list: netatalk-admins-request@umich.edu