PC-UNIXに関する記事など
netatalk と呼ばれるデーモンを使うと Mac のバックアップ機能である
TimeMachine のデータの保存先にサーバを指定できると知り早速自宅の FreeBSD10 で
設定してみました。
今のnetatalk はAFP over TCP として動作するファイルサーバで windows などで利用される samba と同じような機能を持つがnetatalkは Apple独自のメタデータを完全に保存することを目的として設計されたファイルサーバソフトウェアであり Mac にネイティブに対応したファイルサーバとも言える。
依存するパッケージがが結構あるのでとりあえず pkg install でインストールします。
# pkg install avahi # pkg install netatalk3
デフォルトのnetatalk3 パッケージをインストールしても pam は無効になっているためmake config で pam, acl, sendfile 等を有効にしてportsからコンパイルインストールする
前にパッケージで一度インストールしているため依存するパッケージもportsから入れる必要がなくなり時間節約になる。
# pkg delete netatalk3 # cd /usr/port/net/netatalk3 # make config # make install clean
以下のパッケージもインストールする
databases/py-bsddb databases/py-gdbm databases/py-sqlite3 x11-toolkits/py-tkinter
認証に係る設定です。ファイルが存在しない場合新規で作成します。
/etc/pam.confnetatalk auth required pam_unix.so try_first_pass netatalk account required pam_unix.so try_first_pass netatalk session required pam_permit.so
netatalk から起動される afpd デーモンは Tcp Wrapper でアクセス制御出来るため hosts.allow でアクセスするIPアドレスを指定して許可する必要があります。
以下の設定は 192.168.0.0/24 及び localhost からのアクセスを許可しています。
afpd : 192.168.0.0/255.255.255.0 127.0.0.1 : allow afpd : ALL : deny
netatalk で利用するディレクトリを作ります。zfs を使っている場合は自分の好きなようにデータセットを作成してマウントポイントを指定するだけです。
# zfs create zroot/afp # zfs create zroot/TimeMachine # zfs set mountpoint=/afp zroot/afp # zfs set mountpoint=/TimeMachine zroot/TimeMachine # chown USERNAME /afp # chown USERNAME /TimeMachine
netatalk3 の設定です。今回は [Global] [My AFP Volume] [MyTimeMachine] 3つの設定のみ入れて他はコメントにしています。
/usr/local/etc/afp.conf; ; Netatalk 3.x configuration file ; [Global] ; Global server settings mac charset = MAC_JAPANESE uam list = uams_dhx2.so afpstats = yes log file = /var/log/netatalk.log log level = default:info dbus daemon = /usr/local/bin/dbus-daemon ;[Homes] ; basedir regex = /usr/home ; spotlight = yes [My AFP Volume] path = /afp spotlight = yes file perm = 0660 directory perm = 0770 [MyTimeMachine] path = /TimeMachine time machine = yes
dbus_enable="YES" avahi_daemon_enable="YES" avahi_dnsconfd_enable="YES" netatalk_enable="YES"
サーバを再起動するか dbus avahi netatalk を個別に起動して afpd にアクセスしてみます。Finder からアクセスするにはsafari の URL 欄に afp://192.168.0.120/ などとサーバのIPアドレスを指定するとアクセスできます。
コンパネから TimeMachine の環境設定を開きます。
ディスクの選択をクリックすると MyTimeMachine が見えるので「バックアップディスクとして使用」をクリックするとデータの保存先としてサーバが利用できるようになる。
# afpd -V afpd 3.1.1 - Apple Filing Protocol (AFP) daemon of Netatalk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Please see the file COPYING for further information and details. afpd has been compiled with support for these features: AFP versions: 2.2 3.0 3.1 3.2 3.3 3.4 CNID backends: dbd last tdb Zeroconf support: Avahi TCP wrappers support: Yes Quota support: No Admin group support: Yes Valid shell checks: Yes cracklib support: No EA support: ad | sys ACL support: Yes LDAP support: No D-Bus support: Yes Spotlight support: No DTrace probes: No afp.conf: /usr/local/etc/afp.conf extmap.conf: /usr/local/etc/extmap.conf state directory: /var/netatalk/ afp_signature.conf: /var/netatalk/afp_signature.conf afp_voluuid.conf: /var/netatalk/afp_voluuid.conf UAM search path: /usr/local/libexec/netatalk-uams// Server messages path: /var/netatalk/msg/
「afpd デーモンは inetd 経由で起動されるため」と書かれていますが、これは違うでしょう。FreeBSDの場合は、netatalk_enable="YES"
と記述することで、netatalk(8)が起動し、そのnetatalk(8)がafpd(8)を起動します。クライアントからアクセスがあるたびにafpd(8)が複製されます。たぶんinetdは経由してないと思います。
hosts.allowを読み込むのはTCP Wrapperによるものであって、inetdとは別じゃないでしょうか。
あと、afpd -VでSpotlight support: Noになっているので、afp.confにspotlight = yesと書いても機能しません。FreeBSDに含まれるTrackerはバージョンが古いのでSpotlight機能が使えません。
HATさんコメントありがとう
そうですねinetdについて勘違いしておりました。
inetdの起動は必要ないですね hosts.allow の設定のみでアクセス制御可能です。spotlightについては afpd -V でspotlight no になるので コンフィグに書いても機能しないなとは思っていましたがエラーにもならなかったのでそのままにしてました。
FreeBSD の portsからインストールされるnetatalk3 のバージョンは現在3.1.1のようですがspotlightの機能はoffのままのようです
$ sudo pkg info|grep netatalk
パスワード:
netatalk3-3.1.1_1,1
これについては1月にMLで話題になってます。
http://cgi.samba.gr.jp/mailman/archives/netatalk-ja/2014-January/date.html
[netatalk-ja:0339]〜[netatalk-ja:0346]です。