Netatalk-Installation in Ubuntu

von Thomas Jakobi am Samstag, 13. Januar 2007 um 14:57 Uhr.

Nachdem mein Sohn Felix (11 Monate) meinen File-Server durch gezielte Betätigung des Reset-Knopfs etwas außer Gefecht gesetzt hat, habe ich ihn letzte Woche von Debian auf Ubuntu umgestellt. Nach einem Backup der Bootpartition war die Installation von CD sehr unproblematisch.

Anschließend wollte ich auf dem System noch einen AFP-Server und Bonjour installieren. AFP ist ein Netzwerkprotokoll, das Rechnern mit den Betriebssystemen Mac OS oder Mac OS X den Dateizugriff über ein Netzwerk ermöglicht. Bonjour ist eine Technik, die die automatische Erkennung von Computern, Geräten und verschiedenen Netzwerkdiensten in IP-Netzen bereitstellt.

Benötigte Pakete

netatalk – Dieses Paket ist eine Implementation von AFP unter Linux.
avahi – Dieses Paket ist eine Implementation des Bonjour (Zeroconf) Protokolls unter Linux.

Die Pakete sind nicht in der Standard-Distribution von Ubuntu enthalten. Es muss das 'universe' Repository freigeschaltet werden. Dies lässt sich folgendermaßen erreichen:

sudo nano /etc/apt/sources.list

und im Editor vor den Zeilen

#deb https://de.archive.ubuntu.com/ubuntu/ edgy universe
#deb-src https://de.archive.ubuntu.com/ubuntu/ edgy universe

die Rauten (#) löschen und die Datei mit [ctrl-o] speichern und den Editor mit [ctrl-x] beenden.

* Sollte z.B. Ubuntu Feisty Fawn installiert sein, muss in den obigen Zeilen edgy durch feisty ersetzt werden.

Danach:

sudo apt-get update

Netatalk

Achtung: Mit netatalk 2.0.4 ist die Builderei aus den Sources nicht mehr nötig. Mit DHX2 (benutzt libcrypt) wurde das Debian Lizenzproblem gelöst. In diesem Fall reicht im Folgenden einfach die Zeile "sudo apt-get install netatalk"

Das Standardpaket von Netatalk benutzt aus Lizenzgründen keine verschlüsselten Passwörter. Aus diesem Grund ist es besser das Paket aus den Sourcen neu zu kompilieren. Folgende Befehle beschreiben, wie man Netatalk (inklusive der passenden UAMs) ohne configure-Orgien und manuellem Bereitstellen aller möglichen Dependencies mit wenig Aufwand und ohne Konflikte mit dem Paketmanager zum Laufen bekommt:

sudo apt-get update
sudo apt-get install devscripts
sudo apt-get source netatalk
sudo apt-get build-dep netatalk
sudo apt-get install cracklib2-dev libssl-dev
cd netatalk-2.0.3/
DEB_BUILD_OPTIONS=ssl debuild -us -uc
sudo dpkg -i ../netatalk_*.deb
echo "netatalk hold" | sudo dpkg --set-selections

Die letzte Zeile verhindert, dass das kompilierte Paket später wieder vom Paketmanager überschrieben wird.

AppleVolumes.default

In der Datei /etc/netatalk/AppleVolumes.default sind als Standard nur die Homeverzeichnisse der Linux-User eingetragen. Andere Verzeichnisse auf dem Server lassen sich durch das Editieren dieser Datei freigeben.

Kommentarzeilen werden in der Datei wie üblich mit einer führenden '#' gekennzeichnet. Die Konfigurationszeilen sind folgendermaßen aufgebaut:

Pfad [Freigabe-Name] [Optionen]

Der Pfadname muss entweder ein vollständiger oder ein per ~-Shorthand gekürzter Pfadname auf dem Server sein. In diesen Pfad können Variablennamen eingebaut werden, die in der manpage von AppleVolumes.default beschrieben werden.

Der Freigabe-Name erscheint nach dem "Mit Server verbinden"-Dialog von Mac OS X als Laufwerk-Name auf dem Server. Wenn der Freigabe-Name Leerzeichen enthält, muss er in Anführungszeichen stehen. Der Freigabe-Name darf nicht länger als 27 Zeichen sein und kann kein ':' enthalten.

Jede Freigabe muss in einer eigenen Zeile stehen.

Es gibt eine Vielzahl von Optionen, die sich für jede Freigabe separat setzen lassen. Die wichtigsten Optionen werden hier beschrieben, weitere finden sich in der manpage von AppleVolumes.default

allow:[Benutzer/Gruppen]

Mit dieser Option werden Unix-Benutzer und -Gruppen zur Nutzung der Freigabe zugelassen. Benutzer- und Gruppennamen sind per Komma voneinander getrennt. Gruppennamen werden mit einem '@' eingeleitet. Beispiel: allow:benutzer1,benutzer2,@gruppe

deny:[Benutzer/Gruppen]

Mit dieser Option werden Unix-Benutzer und -Gruppen von der Nutzung der Freigabe ausgeschlossen. Format wie unter allow.

preexec:[Befehl]

Mit dieser Option kann ein Befehl angegeben werden, der ausgeführt wird, wenn die Freigabe gemountet wird.

postexec:[Befehl]

Mit dieser Option kann ein Befehl angegeben werden, der ausgeführt wird, wenn die Freigabe geschlossen wird.

root_preexec:[Befehl]

Mit dieser Option kann ein Befehl angegeben werden, der als root ausgeführt wird, wenn die Freigabe gemountet wird.

root_postexec:[Befehl]

Mit dieser Option kann ein Befehl angegeben werden, der als root ausgeführt wird, wenn die Freigabe geschlossen wird.

veto:[vetoed name]

Mit dieser Option werden Dateien und Verzeichnisse nicht angezeigt, deren (Teil-)Pfad mit dem dem Veto-Namen übereinstimmt. Mehrere Veto-Namen können mit '/' aneinander gehängt werden. Beispiel: Wenn der Dateipfad /abc/def/dateiname lautet wird mit der Option veto:/abc/ die Datei versteckt.

Avahi

Avahi wird ganz einfach mit folgenden Befehlen installiert:

sudo apt-get update
sudo apt-get install avahi-daemon

Danach muss nur noch folgendes in die Datei /etc/avahi/services/afpd.service eingetragen werden

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
</service-group>

Start

Nach einem (Neu-)Start der Dienste netatalk und avahi per

sudo /etc/init.d/netatalk start
sudo /etc/init.d/avahi start

erscheint auf den angeschlossenen Clients unter Netzwerk der Server.

Diese Anleitung habe ich für Ubuntu Edgy Eft zusammengestellt, sie funktioniert auch mit Feisty Fawn und Gutsy Gibbon. Sie sollte auch unter Dapper Drake und eventuell auch Debian 3.1 funktionieren (eventuell wird dort aus dem Repository eine ältere Version von Netatalk heruntergeladen).

An dieser Stelle noch mal vielen Dank an Brian Elliott und n8han für die Grundlagen zu diesem Eintrag und an Thomas Kaiser und de.comp.sys.mac.lokale-netze für die Ergänzungen.