Archive for May, 2010

Netatalk ist ein AFP Server für Linux.

Wer schon mal Dateien zwischen Mac-Computern ausgetauscht hat, hat es mit hoher Wahrscheinlichkeit benutzt.
Die installation ist Debiantypisch denkbar einfach: aptitude install netatalk

Als nächstes muss man entscheiden, ob man AppleTalk unterstützen will. Wer keine Uralt-Macs im Netz hat, braucht das nicht. Es handelt sich dabei um ein Relikt aus alten Zeiten, Zeiten als TCP noch nicht das Standard-Protokoll war. Ich werde darauf hier nicht weiter eingehen.

Nun geht es ans konfigurieren des afpd. Die Konfigurationsdateien findet man in /etc/netatalk. Das Freigeben von Dateien und Ordnern ist ein 2-Schritt Prozess.
Zuerst editieren wir /etc/netatalk/afpd.conf. In dieser Datei konfigurieren wir den afpd selber. Jede Zeile der Datei ohne # stellt einen Server dar. Im allgemeinen hat man einen Server:
- -tcp -noddp -advertise_ssh -uamlist uams_dhx.so,uams_dhx2.so
Das erste Feld definiert den Servernamen, “-” ist der default server. Danach folgen die Optionen; wir benützen tcp (-tcp), kein AppleTalk (-noddp) und ssh-advertising (für ältere MacOSx versionen).
die uamlist option spezifiziert welche Methoden zur Authentifizierung benützt werden. In unserem Fall erlauben wir die beiden Diffie-Hellman eXchange Methoden.
Weitere Optionen sind in der /etc/netatalk/afpd.conf oder unter “man afpd.conf” zu finden.

Als nächstes definieren wir die zu veröffentlichenden Ordner.
Die öffentlich sichtbaren Shares sind in der Datei /etc/netatalk/AppleVolumes.default definiert. Dort freigegebene Ordner sieht ein User wenn er die notwendigen Rechte für diesen Bereich hat (Linux-Filesystem-Rechte). Wie bei afpd.conf wird auch hier Pro Zeile eine Freigabe beschrieben.
Per default sind die Home-Ordner der User freigegeben, das sollte vorerst auch reichen.
Jetzt sollte man das netatalk system neu starten /etc/init.d/netatalk restart
Auf einem Mac sollte es nun möglich sein, im Finder über “Connect to server” das Home-Verzeichniss zu mounten.

Damit wäre die Sache fast erledigt. Eines funktioniert nämlich noch gar nicht. Auf dem MacOS taucht der Server zwar automatisch in der Liste der gefundenen Server auf, aber er kann sich dort noch nicht verbinden. Apple verwendet für die “Location Discovery” mDNS. Die Standart-implementierung auf Linux ist avahi. Debian bringt avahi per default mit, daher werde ich hier nicht auf die Installation eingehen. Da netatalk keinen nativen support für avahi mitbringt, müssen wir für den afp-service eine eigene service-xml datei schreiben. Die Datei /etc/avahi/services/afpd.service sollte folgenden Inhalt haben:

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

Nun sollte der Server auch im Finder erscheinen (falls nicht, avahi neu starten). Um sich mit dem Home-Verzeichniss zu verbinden, muss man noch auf “Connect as” klicken.

Ein wichtiger Hinweis.
Dateien die mit “.Apple” beginnen sollte man in ruhe lassen. Diese werden vom afpd gebraucht um ein Apple Filesystem zu emulieren, und wenn diese Weg sind kann es zu komischem Verhalten kommen (im Speziellen wenn man mit Aliases und Links arbeitet).

Als kleine Übung will ich nun noch meinen Torrent-Ordner freigeben. Dieser wird aus dem Netz über das Deluge-Bittorrent Programm gefüllt worauf auch andere User Zugriff haben. Diese sollen sich ihre Dateien ja auch vom server runterladen können.
Dazu müssen wir “Guest Login” im afpd erlauben indem wir uams_guest.so zur uamlist in /etc/netatalk/afpd.conf hinzufügen:
- -tcp -noddp -advertise_ssh -uamlist uams_guest.so,uams_dhx.so,uams_dhx2.so -nosavepassword
Neustart des afpd /etc/init.d/netatalk restart
Diese User sehen noch kein Volume, da sie kein Home-Directory haben. Daher veröffentlichen wir noch das Verzeichnis in /etc/netatalk/AppleVolumes.default:
/home/spahan/deluge/complete/ "downloads"
Dabei ist zu beachten, dass der afpd die Zugriffsrechte von Linux beachtet. Gäste können den Ordner daher nur sehen, wenn die “other”-Attribute Leserecht haben. Will man ihnen Schreibrechte geben, muss man “other” auch Schreibrechte geben (Schlechte Idee!).
Obige Zeile kann zudem zu Problemen führen. Als User spahan kann ich gleichzeitig mein Homedir (/home/spahan/) und auch das deluge-Verzeichniss mounten. Mach ich das gleichzeitig kann das den afpd durcheinanderbringen. Die Man-page sagt explizit, das man keine Volumes verschachteln soll. Das Problem hierbei ist ähnlich wie wenn man die .Apple-Dateien löscht. Solange man aber nur lesend darauf zugreift sollte es keine Probleme geben.

Damit sollte AFP auf Linux funktionieren. Happy Sharing 😛
Noch ein paar nützliche Links fürs Troubleshooting:

Flattr this!

Comments Comments Off on Netatalk auf Debian