AFPサーバ using netatalk

ちょっと手こずったのでメモ。

Leopardから何も考えずにインストールしたdebian linux上のafpdに接続すると-5002エラーがでる。これを調べてみるとどうやら"badUAM"エラーらしい。

Debianはlibsslとnetatalkパッケージのライセンス矛盾の問題からDHXというSSLで暗号化された経路経由で認証するUAM(認証モジュール)をバイナリパッケージに同梱していないため、clear text認証を試みたafpdが、Leopard側に拒否されているようだ。暗号化されたセキュアな認証に対応していないafpdをLeopard側で受け付けてくれないようだ。

ここで、Leopardのcleartext認証を有効化してやる方法もあるのだが、念のためDHXモジュールを自力でビルドしておく。

http://blog.our-files.com/?p=5

いくつか他にも解説しているサイトはあるが、上記のサイトの方法で通った。

DEB_BUILD_OPTIONSを直接コマンドラインから指定してもいけるはずなのだが、なぜかそれだと通らなかった。debian/rulesを直接いじったらいけた。

動作を確認したら、あとはnetatalkパッケージをアップデートされないように固定:

echo "netatalk hold" | sudo dpkg --set-selections

atalkd他レガシー関連daemon&papdを起動しないように/etc/default/nettalk編集:

ATALKD_RUN=no
PAPD_RUN=no

mount point編集: /etc/netatalk/AppleVolumes.default

ZeroConf用avahi-daemonセットアップ:

kouhei@chartreuse:~$ sudo apt-get install avahi-daemon
kouhei@chartreuse:~$ sudo vim /etc/nsswitch (hostsにmdns4を追加)
kouhei@chartreuse:~$ vim /etc/avahi/services/afpd.service
kouhei@chartreuse:~$ cat /etc/avahi/services/afpd.service 
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>

<name>chartreuse-afp</name>

<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>

</service-group>
kouhei@chartreuse:~$ sudo /etc/init.d/netatalk restart
kouhei@chartreuse:~$ sudo /etc/init.d/avahi-daemon restart