第4章 Netatalk 2 からのアップグレード

Frank Lahm

Eiichirou UDA(日本語訳)

6 Sep, 2013

2015 年 5 月 5 日(訳)

目次

概要
設定まわりの変更点
新たな AppleDouble バックエンド
そのほかの主要な変更点
アップグレード
新旧設定ファイル名対照表
新旧オプション対応表
To Do

概要

Netatalk の主要な変更は以下の二点:

  1. これまでの設定ファイルすべてが廃止された、全く新しい設定ファイルとしての afp.conf

  2. マックのメタデータとリソースフォークをファイルシステムの拡張属性に保存する "appledouble = ea" という新しい AppleDouble のバックエンド。

設定まわりの変更点

  • (Samba の smb.conf のような) "ini" スタイルの構文

  • 一つで設定すべてを指示するという点: AFP 及びボリュームの構成を共に一つのファイルで設定することになるという点

  • afpd.confnetatalk.confAppleVolumes.default 及び、 afp_ldap.conf の廃止

警告

ほとんどのオプション名は変更されたので、 詳細については afp.conf の manpage 全体を読むこと

新たな AppleDouble バックエンド

マックのメタデータとリソースフォークをファイルシステムの拡張属性に保存する "appledouble = ea" という新しい AppleDouble のバックエンド。

  • デフォルトのバックエンドである(!)

  • 拡張属性のあるファイルシステムが必須。 さもなくば "appledouble = v2" オプションの使用が代替となる

  • "appledouble = v2" から "appledouble = ea" ファイルシステムへの変換はアクセス時、その都度行われる(無効にすることも可能)

  • 一括で変換する場合 dbd を用いることができる

実装の詳細:

  • Mac のメタデータ(すなわち FinderInfo、AFP フラグ、コメント、CNID)は “org.netatalk.Metadata” という名前の拡張属性に保存される。

  • マックのリソースフォークは:

    • ZFS を用いた Solaris では “org.netatalk.ResourceFork” という拡張属性に保存される。

    • ないしは、ファイル名が “file” であるものに対して各々、“._file” という名の別の AppleDouble ファイルに保存される。

  • "._" ファイルのフォーマットは、 たとえそのファイルシステムに CIFS サーバー (Samba) 経由でアクセスした場合でも、 マックの CIFS クライアントが想定しているフォーマットと全く同じである。 なので、データを失う危険性(リソースもメタデータも)なく、 マックから同じデータセットに AFP 経由と CIFS 経由と並行してアクセスすることができる。 一方、ウィンドウズから当該データセットに CIFS 経由でアクセスした場合は、未だに “file” と “file” の紐付けを失うこととなるであろう(非 ZFS ファイルシステムの場合。上記参照)。 今のところその点で拡張 Samba VFS モジュールが必要である(改善中)。

昨今、リソースフォークを使用しているアプリケーションは  Adobe Photoshop(イメージプレビュー)と Postscript Type 1 フォントのみなので、 例えば Linux 上においても、あらゆる余分な Netatalk AppleDouble ファイル(及びフォルダー)からは 99% 無関係でいられる。

そのほかの主要な変更点

  • AFP 及び CNID デーモンの起動・再起動を担う新しいサービスコントローラデーモン netatalk の導入。バンドルされているスタートスクリプトが すべて更新されているため、自分の環境でもアップデートされているか確認する必要あり!

  • CNID データベースはデフォルトで /var/netatalk/CNID/ 以下に保存される。保存場所を変更するには、コンパイル時に --localstatedir=PATH のコンフィグオプションを使用する。

  • Netatalk 2.x のボリュームオプション “usedots” 及び “upriv” はデフォルトとなった。

  • SLP 及び AFP プロキシのサポート機能は削除。

  • type/creator と拡張子の関連付けサポート機能は削除

アップグレード

  1. Netatalk 2.x を停止する

  2. Netatalk 3 をインストールする

  3. 設定 afp.conf 及び extmap.conf を自力で書き換える

  4. netatalk 起動にのみ関連している、 Netatalk 起動スクリプト(SMF、systemd、ほかすべて…)を更新する

  5. afp_voluuid.conf 及び afp_signature.conf を localstate ディレクトリ (デフォルトでは /var/netatalk/)、に移動。 正しいパスを見つけるために afpd -v コマンドが有用

  6. Netatalk 3 を起動する

新旧設定ファイル名対照表

表4.1 設定ファイル名対照表

旧ファイル名新ファイル名注記
-etc/afp.conf新しい "ini" 様式のフォーマット
-etc/extmap.confnetatalk 3.0.2 から採用
etc/netatalk/afp_signature.confvar/netatalk/afp_signature.conf厳密には $localstatedir に移動
etc/netatalk/afp_voluuid.confvar/netatalk/afp_voluuid.conf厳密には $localstatedir に移動
etc/netatalk/netatalk.conf (/etc/default/netatalk)-廃止
etc/netatalk/afpd.conf-廃止
etc/netatalk/afp_ldap.conf-廃止
etc/netatalk/AppleVolumes.default-廃止
etc/netatalk/AppleVolumes.system-廃止
~/.AppleVolumes-廃止


新旧オプション対応表

表4.2 netatalk.conf (/etc/default/netatalk) から afp.conf

旧 netatalk.conf新 afp.conf旧デフォルト値新デフォルト値セクション詳細
ATALK_NAMEhostname--(G)デフォルトでは gethostname() を使用
ATALK_UNIX_CHARSETunix charsetLOCALEUTF8(G)-
ATALK_MAC_CHARSETmac charsetMAC_ROMANMAC_ROMAN(G)/(V)-
CNID_METAD_RUN-yes--netatalk(8) で制御
AFPD_RUN-yes--netatalk(8) で制御
AFPD_MAX_CLIENTSmax connections20200(G)-
AFPD_UAMLISTuam list-U uams_dhx.so,uams_dhx2.souams_dhx.so uams_dhx2.so(G)-
AFPD_GUESTguest accountnobodynobody(G)-
CNID_CONFIGlog level-l log_notecnid:note(G)-
CNID_CONFIGlog file--(G)-
ATALKD_RUN-no--AppleTalk が廃止
PAPD_RUN-no--AppleTalk が廃止
TIMELORD_RUN-no--AppleTalk が廃止
A2BOOT_RUN-no--AppleTalk が廃止
ATALK_BGROUND-no--AppleTalk が廃止
ATALK_ZONE-no--AppleTalk が廃止


表4.3 afpd.conf から afp.conf

旧 afpd.conf新 afp.conf旧デフォルト値新デフォルト値セクション詳細
一番目のフィールド("-" あるいは“サーバー名”)hostname--(G)デフォルトでは gethostname() を使用
-uamlistuam list-U uams_dhx.so,uams_dhx2.souams_dhx.so uams_dhx2.so(G)-
-nozeroconfzeroconf-(サポートされていれば) yes(G)-
-advertise_sshadvertise ssh-no(G)-
-[no]savepasswordsave password-savepasswordyes(G)-
-[no]setpasswordset password-nosetpasswordno(G)-
-client_pollingclient polling-no(G)-
-hostnamehostname--(G)デフォルトでは gethostname() を使用
-loginmesglogin message--(G)/(V)-
-guestnameguest accountnobodynobody(G)-
-passwdfilepasswd fileafppasswdafppasswd(G)-
-passwdminlenpasswd minlen--(G)-
-ticklevaltickleval3030(G)-
-timeouttimeout44(G)-
-sleepsleep time1010(G)-
-dsireadbufdsireadbuf1212(G)-
-server_quantumserver quantum3038401048576(G)-
-volnamelenvolnamelen8080(G)-
-setuploglog leveldefault log_notedefault:note(G)-
-setuploglog file--(G)-
-admingroupadmingroup--(G)-
-k5servicek5 service--(G)-
-k5realmk5 realm--(G)-
-k5keytabk5 keytab--(G)-
-uampathuam pathetc/netatalk/uams/lib/netatalk/(G)厳密には $libdir に移動
-ipaddrafp listen--(G)-
-cnidservercnid serverlocalhost:4700localhost:4700(G)/(V)-
-portport548548(G)-
-signaturesignatureauto-(G)-
-fqdnfqdn--(G)-
-unixcodepageunix charsetLOCALEUTF8(G)-
-maccodepagemac charsetMAC_ROMANMAC_ROMAN(G)/(V)-
-closevolclose vol-no(G)-
-ntdomainnt domain--(G)-
-ntseparatornt separator--(G)-
-dircachesizedircachesize81928192(G)-
-tcpsndbuftcpsndbuf--(G)OS のデフォルト
-tcprcvbuftcprcvbuf--(G)OS のデフォルト
-fcelistenerfce listener--(G)-
-fcecoalescefce coalesce--(G)-
-fceeventsfce events--(G)-
-fceholdfmodfce holdfmod6060(G)-
-mimicmodelmimic model--(G)-
-adminauthuseradmin auth user--(G)-
-noacl2maccessmap acls-rights(G)-
-[no]tcp--tcp--常に TCP のみ
-[no]ddp--noddp--AppleTalk が廃止
-[no]transall--tcp -noddp--常に TCP のみ
-nodebug----廃止
-[no]slp--noslp--SLP サポートが廃止
-[no]uservolfirst--nouservolfirst--uservol が廃止
-[no]uservol--uservol--uservol が廃止
-proxy----AppleTalk が廃止
-defaultvol-AppleVolumes.default--afp.conf のみ
-systemvol-AppleVolumes.system--afp.conf のみ
-loginmaxfail----そもそも最初からサポートされていない
-unsetuplog----廃止
-authprintdir----AppleTalk が廃止
-ddpaddr----AppleTalk が廃止
-[no]icon--noicon -廃止
-keepsessions----廃止。kill -HUP を使用


表4.4 from afp_ldap.conf から afp.conf

旧 afp_ldap.conf新 afp.conf旧デフォルト値新デフォルト値セクション詳細
ldap_serverldap server--(G)-
ldap_auth_methodldap auth method--(G)-
ldap_auth_dnldap auth dn--(G)-
ldap_auth_pwldap auth pw--(G)-
ldap_userbaseldap userbase--(G)-
ldap_userscopeldap userscope--(G)-
ldap_groupbaseldap groupbase--(G)-
ldap_groupscopeldap groupscope--(G)-
ldap_uuid_attrldap uuid attr--(G)-
ldap_uuid_stringldap uuid string--(G)-
ldap_name_attrldap name attr--(G)-
ldap_group_attrldap group attr--(G)-


表4.5 AppleVolumes.* から afp.conf

旧 AppleVolumes.*新 afp.conf旧デフォルト値新デフォルト値セクション詳細
(ピリオドで始まる行)----extmap.conf で使用する
:DEFAULT:-options:upriv,usedots--"vol preset =" を使用する
一番目のフィールド ("~")----[Homes] セクションを使用する
一番目のフィールド ("/path")path--(V)-
二番目のフィールド----セクション名を使用する
allow:valid users--(V)-
deny:invalid users--(V)-
rwlist:rwlist--(V)-
rolist:rolist--(V)-
volcharset:vol charsetUTF8(unix charset と同じ)(G)/(V)-
maccharset:mac charsetMAC_ROMANMAC_ROMAN(G)/(V)-
veto:veto files--(V)-
cnidscheme:cnid schemedbddbd(V)-
casefold:casefold--(V)-
adouble:appledoublev2ea(V)v1、osx 及び sfm は廃止
cnidserver:cnid serverlocalhost:4700localhost:4700(G)/(V)-
dbpath:vol dbpath(ボリュームディレクトリ)var/netatalk/CNID/(G)厳密には $localstatedir に移動
umask:umask00000000(V)-
dperm:directory perm00000000(V)-
fperm:file perm00000000(V)-
password:password--(V)-
root_preexec:root preexec--(V)-
preexec:preexec--(V)-
root_postexec:root postexec--(V)-
postexec:postexec--(V)-
allowed_hosts:hosts allow--(V)-
denied_hosts:hosts deny--(V)-
ea:eaautoauto(V)-
volsizelimit:vol size limit--(V)-
perm:----"directory perm" 及び "file perm" を使用する
forceuid:----廃止
forcegid:----廃止
options:roread only-no(V)-
options:invisibledotsinvisible dots-no(V)-
options:nostatstat vol-yes(V)-
options:preexec_closepreexec close-no(V)-
options:root_preexec_closeroot preexec close-no(V)-
options:uprivunix priv-yes(V)-
options:nodevcnid dev-yes(V)-
options:illegalseqillegal seq-no(V)-
options:tmtime machine-no(V)-
options:searchdbsearch db-no(V)-
options:nonetidsnetwork ids-yes(V)-
options:noaclsacls-yes(V)-
options:followsymlinksfollow symlinks-no(V)-
options:nohex----":2f" は ":" に自動変換される
options:usedots----":2e" は "." に自動変換される
options:nofileid----廃止
options:prodos----廃止
options:mswindows----廃止
options:crlf----廃止
options:noadouble----廃止
options:limitsize----廃止
options:dropbox----廃止
options:dropkludge----廃止
options:nocnidcache----廃止
options:caseinsensitive----廃止


To Do

  • ad ユーティリティーを appledouble = ea のもとでテスト