Linux(Gentoo)をサーバにしてMac OS X 10.6(Snow Leopard)とファイル共有してみた(AFP over TCP)

LinuxMac間でファイルのやりとり出きるようにしていないことに気がついたので、AFPデーモンをLinuxに立ててファイル共有することにしました。

NFSも考えましたが設定がいろいろと面倒くさいのでやめてAFPにしました。AFPというのはAppleが開発したファイル共有プロトコルです。Mac OS X以前はAppleTalkの一部でしたが、現状はTCP/IP上で動くプロトコル(AFP over TCP)となっています。

ゴール

AFP経由でLinuxのhomeのユーザディレクトリにアクセスする。

細かいうんちくは備考にまとめてあります。

環境

手順

  1. netatalkを導入する
  2. /etc/netatalk/nettatalk.confを変更する
  3. /etc/netatalk/afpd.confを変更する
  4. /etc/netatalk/AppleVolumes.defaultを変更する
  5. netatalkデーモンを起動する
  6. netatalkデーモンをrcに登録する
  7. Macでマウントする

netatalkを導入する

LinuxでAFPを使用する場合はnetatalkを使用します。入れるだけなので簡単です。

$sudo emerge netatalk

/etc/netatalk/nettatalk.confを変更する

下記のように設定します。netatalk.confから変更が必要な部分だけを抽出しています。

ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

Apple Talkが不要なのでATALKD_RUNはnoとなります。

/etc/netatalk/afpd.confを変更する

下記の行をファイルに追加してください。それぞれの引数の意味は備考にまとめてあります。

- -noddp -uamlist uams_dhx2.so

/etc/netatalk/AppleVolumes.defaultを変更する

ここは設定できるボリュームの設定をします。ユーザのホームディレクトリやビデオやオーディオ、TimeMachineのバックアップ先の指定などが可能です。

ユーザのホームディレクトリの共有を行うのが目的なのでファイルに"~"を挿入します。というか、元々"~"は入っていました。

~

その他のオプションは備考で簡単に紹介します。

netatalkデーモンを起動する

特に何も考えることもなく

$sudo /etc/init.d/atalk start

netatalkデーモンをrcに登録する

何も考えることも無く

sudo rc-update add atalk default

Macでマウントする

Finderの「サーバに接続」機能を使用します。下記で接続できます。

[ユーザ名]はサーバ側と同じであれば特に指定不要です。

# ユーザ名を指定する場合
afp://[ユーザ名]@[アドレス]

# ユーザ名を指定しない場合
afp://アドレス

備考

AppleTalkはなくなりました

AppleTalkMacに搭載されている辞書だと下記の用に紹介されています。

アップルが提供していた、コンピュータネットワークのためのソフトウェアツールのセットです。AppleTalk ネットワークシステムは、Mac OS X を使用する Macintosh コンピュータでは TCP/IP ネットワークにその役割が引き継がれました。

もともとAFPはAppleTalkプロトコル上で動いていた分けですが、AppleTalkプロトコルが廃止されるとともにAFP over TCP/IPとなりました。

CNIDとは

Catelog Node ID(CNID)の略称でファイルやディレクトリに割り当てられたIDです。AFPではこのIDを用いてファイルへの要求を行います(パスを用いては行いません)。例えばファイルの指定はファイルの指定に文字列使用し、ディレクトリの指定にCNIDを使用すると言った具合です。

netatalk.confの設定について
  • unixcodepage
  • maccodepage

上記の文字コード指定の項目がありますがUTF-8で運用していれば変更の必要はありません。
Mac OSのバージョンが古い(AFP2.2まで)場合などはクライアントの文字コードを正しく指定する必要がある場合があるので注意が必要です。詳しくはhttp://netatalk.sourceforge.net/2.0/htmldocs/configuration.html を参照ください。

afpd.confの設定について
- -noddp -uamlist uams_dhx2.so

下記に引数の意味をまとめました。

  • noddp:AFPをAppleTalk上で扱うかどうかを設定しています。AppleTalkは使用しないので[no]を付加しています
  • uamlist:使用するUAM(User Authentication Modules)を指定します
    • uams_dhx2.so:パスワードが最大256文字までサポートされたモジュールです。MacOS X 10.2から導入されています

もし、AppleShare client 3.8.4〜Mac OS X 10.2より前のバージョンとでやり取りを行いたい場合は"uams_dhx.so"を指定します。
全てのMac OSを対象にしたい場合は"uams_randnumo.so"を指定することで可能になります。
モジュールは複数指定することも可能です(','で区切ることにより)。

AppleVolumes.defaultsの設定について

この記事ではホームディレクトリにアクセスするのが目的だったので"~"で終わらせてしまったので、ざっくり紹介。詳しくはmanをどうぞ。

下記が基本となる記述になっています。

path [ volume name ] [ options ]
  • path:ボリュームへのパスを指定します。"/home/ktomoya/xx"といったパスや"/var/afpd/timemachine/$u"といった$[a-z]の記述でユーザ名など動的要素も指定できます。
  • [ volume name ]:ボリュームの名称を指定します。"Music"といった名称や"Music for $g group"のようにパスと同様に動的要素も指定できます。
  • [ options ]:allow,denyユーザやtimemachine対応か否か

感想

特に何もとらぶるなく終わってしまうと何のノウハウも蓄積されないので微妙。

今後

TimeMachineとか試しに使ってみようかなぁ。

参考

更なる情報は参考元をどうぞ。
manは日本語もありますが、古いので"LANG=c"で英語を見るのをお勧めします。