Netatalk で AFP ファイル共有サーバを構築する
目次 |
CentOS 6, Netatalk 2.2.3 での構築例。[1]
Netatalk の特徴
- Mac OS 9 から最新の Mac OS X まで対応。
- Mac OS X 標準の(Server 版を含む)AFP ファイル共有は、OS のバージョンによって仕様が変わることがあり、クライアント側の OS が古くなると、うまく利用できなくなったりする事がある。
fstab の編集
- Mac OS 独自のリソースフォークやメタデータに対応させるため、CentOS のファイルシステムを拡張ファイル属性 (extended attribute, ea) を有効にする。
- Netatalk はディスククオータに対応しているので、ディスククォータを有効にする。
ディスククォータは、ルート・ファイルシステム / では有効にはらない。 |
例えば、/ とは別のファイルシステム /home で拡張ファイル属性 (user_xattr)とディスククオータ (usrquota)を有効にするには、/etc/fstab を次のように編集する。
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
/dev/mapper/VolGroup-lv_home /home ext4 defaults,user_xattr,usrquota 1 2
EXT4 の場合、ジャーナリング対応のバージョン2のクォータを使用するよう促される。[2] バージョン1 UUID=abdbbf65-0199-4a20-96a8-37444bc495df /home ext4 defaults,usrquota,grpquota,user_xattr 1 2 バージョン2 UUID=abdbbf65-0199-4a20-96a8-37444bc495df /home ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,user_xattr 1 2 |
/home を再マウントする。
# mount -o remount /home
マウントオプションが有効になっているか確認。
# mount
...
/dev/mapper/VolGroup-lv_home on /home type ext4 (rw,user_xattr,usrquota)
...
有効にしたディスククォータは、ユーザ別に制限をかけるユーザクォータ機能を利用している。 管理するには、Webmin などのツールを使うと便利。
Netatalk をインストールする
HAT さんのページ を参考に rpm を作成しインストール。
Netatalk の設定
/etc/netatalk/ ディレクトリ以下に設定ファイルがあり、主な設定ファイルは以下になる。
netatalk.conf | Netatalk 全般の設定。
一度設定すると、ほとんど変えることはないはず。 |
---|---|
afpd.conf | AFPサーバの設定。
IPアドレスごとにサーバー名やユーザー認証方法を変えたりする事ができる。(マルチサーバー機能は Netatalk 3 で廃止された。) |
AppleVolumes.default | AFPサーバの共有ボリュームを設定する。
共有ボリュームのアクセス設定とディレクトリを指定する。 |
netatalk.conf
ATALK_UNIX_CHARSET='UTF-8' ATALK_MAC_CHARSET='MAC_JAPANESE' export ATALK_UNIX_CHARSET export ATALK_MAC_CHARSET CNID_METAD_RUN=yes AFPD_RUN=yes AFPD_MAX_CLIENTS=100 AFPD_GUEST=nobody CNID_CONFIG="-l LOG_NOTE -f /var/log/netatalk.log"
- ATALK_UNIX_CHARSET
- Linux 側の設定ファイル内で使う文字コード。
- ATALK_MAC_CHARSET
- Mac OS 9 側の文字コード。
- Mac OS X はこの設定に関係なく
UTF8-MAC
に固定なので、MAC_JAPANESE
と指定する。
- AFPD_GUEST
- AFP のゲストユーザを、Linux のどのユーザにするか設定する。
- Samba のゲストユーザもデフォルトが nobody なので、nobody としておく。
afpd.conf
"AFPサーバ名" \ -maccodepage MAC_JAPANESE \ -setuplog "default log_info /var/log/afpd.log"
- -maccodepage
- netatalk.conf の ATALK_MAC_CHARSET と同じコードを設定する。
- -setuplog
- -setuplog "<logtype> <loglevel> [<filename>]"
マルチサーバとして設定するには、設定を複数記述する。
"ファイルサーバ" \ -ipaddr 192.168.1.1 \ -maccodepage MAC_JAPANESE \ -setuplog "default log_note /var/log/afpd.log" "ゲスト用サーバ" \ -ipaddr 192.168.1.2 \ -uamlist uams_guest.so \ -maccodepage MAC_JAPANESE \ -setuplog "default log_note /var/log/afpd.log"
- -ipaddr
- リッスンする IP アドレスを指定する。
- -uamlist
- ユーザー認証方法(UAM)を指定する。
- ゲストログインを許可するには、
uams_guest.so
を指定する。 - デフォルト値:
uams_dhx.so,uams_dhx2.so
AppleVolumes.default
:DEFAULT: options:upriv,usedots maccharset:MAC_JAPANESE ea:sys /home/SharePoint "AFPファイル共有ボリューム名" allow:@maruko2 /home/TimeMachine "TimeMachine用ボリューム" option:tm volsizelimit:20480
:DEFAULT: で始まる行は、全ボリュームの共通設定。
- options:upriv,usedots
- upriv は UNIX パーミッションを有効にする設定。Mac OS X で利用する場合、設定しておく。
- usedots は、ドットで始まるファイル名をそのまま使う。
- maccharset:MAC_JAPANESE
- netatalk.conf, afpd.conf で設定した内容と同じにする。
- ea:sys
- 拡張属性の保存方法を指定する。
- ea:sys はファイルシステムの拡張属性に保存する設定。
2行目以下に、共有ボリュームの設定を記述する。
"CentOSのディレクトリ" "共有ボリューム名" アクセス設定
アクセス設定の項目は AppleVolumes.default のマニュアル を参考に。
例えば、allow:maruko2
と設定すると、ユーザー名 maruko2 のみアクセスできるようになる。グループを指定する場合は @maruko2 のように @ を付ける。複数指定する場合はカンマで区切る。
option:tm
とすると Time Machine 用のボリュームになる。
volsizelimit:
は、ボリュームのサイズに制限をかける(MBで指定)。ディスククォータの設定ではないので注意。
Bonjour に登録する
Samba と連動させる設定
参考ページ
HATさんのサイト (www003.upp.so-net.ne.jp/hat)
Netatalk 2.2 Manual - Chapter 5. Manual Pages (netatalk.sourceforge.net)
脚注
- ↑ 複数の AFP ファイルサーバー (Mac OS X Server) を 1 台の Linux サーバーに統合し、かつ、使用感を従来通りにするため、マルチサーバー機能のある Netatalk 2.2.x で構築しています。Netatalk の最新バージョンは Netatalk 3 です。
- ↑ Linux の 101 試験対策: ディスク・クォータの管理