以前の Netatalk バージョンからのアップグレード

Netatalk 4.5 からのアップグレード

Netatalk 4.6 では、SRP UAM が使用する資格情報ストアの管理方法が変更される。uams_srp.so が有効になっている場合は、新しいサーバーを起動する前に、以下の手順を確認すること。

afppasswd の呼び出し

afppasswd は再び、非デフォルトの資格情報ストアに対して -p path を受け入れる。 SRP モードでは、path は検証ディレクトリであり、afp.conf の srp verifier path と一致する必要がある。-r を使用する場合、それは Randnum パスワードファイルであり、 passwd file と一致する必要がある。コンパイル時に組み込まれたデフォルトは、 パッケージ化されたインストールをカバーしている。

例えば、srp verifier path が /path/to/verifiers に設定されている場合、次のように実行する:

sudo afppasswd -p /path/to/verifiers -a alice

通常のユーザーは、自分の SRP 検証を変更する際に -p を使用できる。追加の特権は付与されない:ファイルシステムのアクセス権がアクセスを強制するため、他人のストアを選択するとアクセスエラーになる。

SRP 検証の移行

SRP はもはや、1 つの共有された afppasswd.srp フラットファイルを使用しない。設定されたパスは、現在、数値 uid ごとに 1 つのファイルを含む root 所有の検証ディレクトリである。各検証ファイルのモードは 0600 である。アクティブな検証はユーザー所有であり、登録済みユーザーが自分の SRP パスワードを変更できるようにするため、afppasswd に昇格した特権を与える必要はない。無効なプレースホルダーは root 所有であり、対応するローカルユーザーによって有効化することはできない。root は afppasswd -a username を使用してユーザーを登録する:実際の検証が書き込まれ同期された後にのみ、所有権がユーザーに移される。

復元によって登録済みの検証の所有権またはモードが変更された場合、afpd を停止し、再起動する前に root としてその uid 名のファイルを修復する。所有権を一致するローカルユーザーに戻し、モードを 0600 に設定する。例えば、カスタムパスにある alice の検証は、chown alice /path/to/verifiers/$(id -u alice) を使用して修復し、その後そのファイルに chmod 0600 を適用することで修復できる。root 所有の無効なプレースホルダーにはこれを適用しないこと:afppasswd -a username を使用してパスワードを設定し、アカウントを再有効化すること。複数のハードリンクを持つ検証は、置き換えるか追加のリンクを削除する必要がある。

afp.conf では、新しい srp verifier path オプションが古い srp passwd file オプションに置き換わる。古い名前は非推奨のエイリアスとしてまだ受け入れられるが、その値は現在ディレクトリとして解釈され、移行警告をログに記録する。

既存の SRP 資格情報は、ユーザーが既存のパスワードでログインできるようにする前に移行する必要がある。移行は afppasswd -m で実行される。

  1. netatalk を停止し、完全な移行の間は停止したままにする。

  2. afp.conf が明示的に srp passwd file パスを設定している場合、既存のフラットファイルの場所を指す srp verifier path オプションに更新する。

  3. root として移行を実行する。標準構成では、次のように使用する:

    sudo afppasswd -m

検証パスがデフォルトでない場合は、そのディレクトリを渡す:

   sudo afppasswd -m -p /path/to/verifiers

移行は既存のソルトと検証を保持するため、ユーザーは SRP パスワードを保持する。 アクティブな資格情報はユーザー所有となる。無効なプレースホルダーは root 所有のままであり、使用する前に root の afppasswd -a が必要である。 すべてのレコードとローカルアカウントを検証し、新しいディレクトリを原子性に作成し、 元のフラットファイルを afppasswd.srp.legacy(または番号付きの兄弟)として保持する。 移行が失敗した場合は netatalk を起動しないこと。まず報告された条件を解決すること。

  1. netatalk を起動し、SRP ログインをテストする。その後、ローカルユーザーは単に afppasswd を使用してそのユーザーの SRP パスワードを変更する。管理者は afppasswd -a username を使用してユーザーの SRP 資格情報を設定またはリセットする。

あるいは、ユーザーパスワードを保持することが望ましくない場合:レガシーファイル(通常は /etc/netatalk/afppasswd.srp にある)を削除し、afppasswd -c で新しいストアを初期化する。これにより root 所有の無効なプレースホルダーが作成される。afppasswd -a username を使用して root として個別にパスワードを設定し、ユーザーを登録する。

登録後、ユーザーは自分の検証を所有し、直接置き換えることができる。afppasswd の古いパスワードの証明とオプションの CrackLib チェックは、サーバー全体のパスワードポリシーを強制しない。ユーザーの将来の SRP ログインを無効にするには、root として afppasswd -d username を実行する。これにより、uid 検証が root 所有の無効なプレースホルダーに置き換えられる(存在しない場合は作成される);afppasswd -a username を使用してパスワードを設定し、アカウントを再有効化する。既存のセッションや他の UAM は影響を受けない。

Randnum の強化

Randnum は依然として古いクライアント専用のレガシーで弱い UAM である。その afppasswd ファイルの管理は現在 root のみ:afppasswd -r -a username を使用して Randnum 資格情報をリセットまたは更新する。

Netatalk 3 からのアップグレード

Netatalk 3 から Netatalk 4 へのアップグレードは簡単。古いバージョンの上に新しいバージョンをインストールするだけ。Netatalk 4 での主要な変更点は、Netatalk 2 と Netatalk 3 の間で削除された AppleTalk サービス、構成ファイル、およびツールを一部復活させたことである。

主に、atalkd デーモンと atalkd.conf 設定ファイル、また papd デーモンと papd.conf 設定ファイルが追加された。

afp.conf の一部のオプションは Netatalk v4 のリリース履歴を通じて段階的に変更または削除されている。詳細は以下の新旧オプション名対応表を参照のこと。

v3 afp.conf v4 afp.conf 変更バージョン 詳細
afp read locks strict locking 4.6.0 古い名前は非推奨の同義語であり、警告をログに記録する
appledouble - 4.2.0 ‘ea’ のみで制御されるようになった
dircachesize dircache size 4.5.0 -
fce ignore names fce ignore names 4.2.0 スラッシュ区切りからカンマ区切りへ
root postexec - 4.1.0 ‘postexec’ を使用する
root preexec - 4.1.0 ‘preexec’ を使用する
root preexec close - 4.1.0 ‘preexec close’ を使用する
start dbus - 4.1.0 D-Bus は ‘spotlight’ で制御
start tracker - 4.1.0 Tracker/Localsearch は ‘spotlight’ で制御
zeroconf name server name 4.2.0 Classic Mac OS クライアントにも適用されるようになった

afpstats の破壊的変更点

afpstats ツールは Netatalk 3.0 で歴史的な macusers スクリプトの代替として導入された。最初の形では、ツールは D-Bus を介して afpd と通信していたが、Netatalk 4.5 以降はシンプルさと移植性のために標準的な Unix ソケットを使用するように書き換えられた。

以前のバージョンからアップグレードする場合、通常は /usr/share/dbus-1/system.d に保存されている netatalk-dbus.conf ファイルを手動で削除する必要があるかもしれない。

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

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

  1. これまでの AFP 設定ファイルすべてが廃止され、AFP に関してのほぼ全オプション名を変更し、新しい設定ファイルを追加した: afp.conf と extmap.conf

  2. ファイルメタデータをファイルシステムの拡張属性に保存する新しいバックエンド。

  3. AppleTalk トランスポート層はデフォルトで無効になっている。非常に古い Mac で Netatalk を使用する場合は、afp.conf にて appletalk = yes オプションで有効にしてください。 それから、netatalk を起動する前に atalkd デーモンを立ち上げてください。

設定まわりの変更点

afp.conf

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

extmap.conf

新たなメタデータバックエンド

macOS拡張属性およびClassic Mac OS リソースフォークをファイルシステムの拡張属性に保存する ea = sys という新しいバックエンド。

実装の詳細:

そのほかの主要な変更点

アップグレード手段

  1. Netatalk 2.x を停止する

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

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

  4. afpd と cnid_metad の代わりに netatalk 起動にのみ関連している、 Netatalk 起動スクリプトを更新するか、標準の起動スクリプトに置き換える。

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

  6. Netatalk 4 を起動する

新旧設定ファイル名

旧ファイル名 新ファイル名 注記
- afp.conf 新しい “ini” 様式のフォーマット
afp_signature.conf afp_signature.conf 厳密には $localstatedir に移動
afp_voluuid.conf afp_voluuid.conf 厳密には $localstatedir に移動
netatalk.conf - 廃止
afpd.conf - afp.conf に統合された
afp_ldap.conf - afp.conf に統合された
AppleVolumes.default - afp.conf に統合された
AppleVolumes.system extmap.conf netatalk 3.0.2 から採用
~/.AppleVolumes - 廃止

新旧オプション対応表

netatalk.conf (Debianの場合は/etc/default/netatalk) から afp.conf への対応表、および起動手段の対応表

旧 netatalk.conf 新 afp.conf 旧デフォルト値 新デフォルト値 セクション 詳細
ATALK_NAME hostname - - (G) デフォルトでは gethostname() を使用
ATALK_UNIX_CHARSET unix charset LOCALE UTF8 (G) -
ATALK_MAC_CHARSET mac charset MAC_ROMAN MAC_ROMAN (G)/(V) -
CNID_METAD_RUN - yes - - netatalk(8) で制御
AFPD_RUN - yes - - netatalk(8) で制御
AFPD_MAX_CLIENTS max connections 20 200 (G) -
AFPD_UAMLIST uam list uams_dhx.so,uams_dhx2.so uams_dhx2.so (G) -
AFPD_GUEST guest account nobody nobody (G) -
CNID_CONFIG log level log_note cnid:note (G) -
CNID_CONFIG log file - - (G) -
ATALKD_RUN - no - - 独自起動スクリプトで制御
PAPD_RUN - no - - 独自起動スクリプトで制御
TIMELORD_RUN - no - - 独自起動スクリプトで制御
A2BOOT_RUN - no - - 独自起動スクリプトで制御
ATALK_BGROUND - no - - 廃止
ATALK_ZONE ddp zone - - (G) 4.0.0で復活

afpd.conf から afp.conf への対応表

旧 afpd.conf 新 afp.conf 旧デフォルト値 新デフォルト値 セクション 詳細
- あるいは“サーバー名”) hostname - - (G) 4.2.0で新規追加、デフォルトではhostnameを使用
-uamlist uam list uams_dhx.so,uams_dhx2.so uams_dhx2.so (G) -
-nozeroconf zeroconf - (サポートされていれば) yes (G) -
-advertise_ssh advertise ssh - no (G) -
-[no]savepassword save password -savepassword yes (G) -
-[no]setpassword set password -nosetpassword no (G) -
-client_polling client polling - no (G) -
-hostname hostname - - (G) デフォルトでは gethostname() を使用
-loginmesg login message - - (G)/(V) -
-guestname guest account nobody nobody (G) -
-passwdfile passwd file afppasswd afppasswd (G) -
-passwdminlen passwd minlen - - (G) -
-tickleval tickleval 30 30 (G) -
-timeout timeout 4 4 (G) -
-sleep sleep time 10 10 (G) -
-dsireadbuf dsireadbuf 12 12 (G) -
-server_quantum server quantum 303840 1048576 (G) -
-volnamelen volnamelen 80 80 (G) -
-setuplog log level default log_note default:note (G) -
-setuplog log file - - (G) -
-admingroup admingroup - - (G) -
-k5service k5 service - - (G) -
-k5realm k5 realm - - (G) -
-k5keytab k5 keytab - - (G) -
-uampath uam path etc/netatalk/uams lib/netatalk (G) 厳密には $libdir に移動
-ipaddr afp listen - - (G) -
-cnidserver cnid server localhost:4700 localhost:4700 (G)/(V) -
-port port 548 548 (G) -
-signature signature auto - (G) -
-fqdn fqdn - - (G) -
-unixcodepage unix charset LOCALE UTF8 (G) -
-maccodepage mac charset MAC_ROMAN MAC_ROMAN (G)/(V) -
-closevol close vol - no (G) -
-ntdomain nt domain - - (G) -
-ntseparator nt separator - - (G) -
-dircachesize dircache size 8192 65536 (G) -
-tcpsndbuf tcpsndbuf - - (G) OS のデフォルト
-tcprcvbuf tcprcvbuf - - (G) OS のデフォルト
-fcelistener fce listener - - (G) -
-fcecoalesce fce coalesce - - (G) -
-fceevents fce events - - (G) -
-fceholdfmod fce holdfmod 60 60 (G) -
-mimicmodel mimic model - - (G) -
-adminauthuser - - - (G) 4.5.0で廃止
-noacl2maccess map acls - rights (G) -
-[no]tcp - -tcp - - 常に TCP を有効
-[no]ddp appletalk -ddp no (G) 4.0.0で復活
-[no]transall - -transall - - 常に TCP を有効
-nodebug - - - - 廃止
-[no]slp - -noslp - - SLP サポートが廃止
-[no]uservolfirst - -nouservolfirst - - uservol が廃止
-[no]uservol - -uservol - - uservol が廃止
-proxy - - - - 廃止
-defaultvol - AppleVolumes.default - - afp.conf のみ
-systemvol - AppleVolumes.system - - extmap.conf のみ
-loginmaxfail - - - - 廃止
-unsetuplog - - - - 廃止
-authprintdir - - - - CAP スタイル認証印刷が廃止
-ddpaddr ddp address 0.0 0.0 (G) 4.0.0で復活
-[no]icon legacy icon -noicon - (G)/(V) 4.0.2で復活
-keepsessions - - - - 廃止。kill -HUP を使用

afp_ldap.conf から afp.conf への対応表

旧 afp_ldap.conf 新 afp.conf 旧デフォルト値 新デフォルト値 セクション 詳細
ldap_server ldap server - - (G) -
ldap_auth_method ldap auth method - - (G) -
ldap_auth_dn ldap auth dn - - (G) -
ldap_auth_pw ldap auth pw - - (G) -
ldap_userbase ldap userbase - - (G) -
ldap_userscope ldap userscope - - (G) -
ldap_groupbase ldap groupbase - - (G) -
ldap_groupscope ldap groupscope - - (G) -
ldap_uuid_attr ldap uuid attr - - (G) -
ldap_uuid_string ldap uuid string - - (G) -
ldap_name_attr ldap name attr - - (G) -
ldap_group_attr ldap group attr - - (G) -

AppleVolumes.* から afp.conf への対応表

旧 AppleVolumes.* 新 afp.conf 旧デフォルト値 新デフォルト値 セクション 詳細
(ピリオドで始まる行) - - - - extmap.conf で使用する
:DEFAULT: - options:upriv,usedots - - “vol preset” を使用する
一番目のフィールド (“~”) - - - - [Homes] セクションを使用する
一番目のフィールド (“/path”) path - - (V) -
二番目のフィールド volume name - セクション名を使用する (V) 4.2.0で追加
allow: valid users - - (V) -
deny: invalid users - - (V) -
rwlist: rwlist - - (V) -
rolist: rolist - - (V) -
volcharset: vol charset UTF8 unix charset を使用する (G)/(V) -
maccharset: mac charset MAC_ROMAN MAC_ROMAN (G)/(V) -
veto: veto files - - (V) -
cnidscheme: cnid scheme dbd sqlite* (G)/(V) * インストール環境によって異なる場合がある
casefold: casefold - - (V) -
adouble: appledouble v2 ea (V) 4.2.0で廃止
cnidserver: cnid server localhost:4700 localhost:4700 (G)/(V) -
dbpath: vol dbpath (ボリュームディレクトリ) $prefix/var/netatalk/CNID (G) 厳密には $localstatedir に移動
umask: umask 0000 0000 (V) -
dperm: directory perm 0000 0000 (V) -
fperm: file perm 0000 0000 (V) -
password: password - - (V) -
root_preexec: - - - 4.1.0で廃止
preexec: preexec - - (V) -
root_postexec: - - - - 4.1.0で廃止
postexec: postexec - - (V) -
allowed_hosts: hosts allow - - (V) -
denied_hosts: hosts deny - - (V) -
ea: ea auto 自動検出 (V) 空白のママにすると自動検出される
volsizelimit: vol size limit - - (V) 4.0.0で復活
perm: - - - - directory perm 及び file perm を使用する
forceuid: - - - - 廃止
forcegid: - - - - 廃止
options:ro read only - no (V) -
options:invisibledots invisible dots - no (V) -
options:nostat stat vol - yes (V) -
options:preexec_close preexec close - no (V) -
options:root_preexec_close - - - - 4.1.0で廃止
options:upriv unix priv - yes (V) -
options:nodev cnid dev - yes (V) -
options:illegalseq illegal seq - no (V) -
options:tm time machine - no (V) -
options:searchdb search db - no (V) -
options:nonetids network ids - yes (V) -
options:noacls acls - yes (V) -
options:followsymlinks follow symlinks - no (V) -
options:nohex - - - - “:2f” は “:” に自動変換される
options:usedots - - - - “:2e” は “.” に自動変換される
options:nofileid - - - - 廃止
options:prodos prodos - no (V) 4.0.0で復活
options:mswindows - - - - 廃止
options:crlf - - - - 廃止
options:noadouble - - - - 廃止
options:limitsize legacy volume size - no (V) 4.0.0で復活
options:dropbox - - - - 廃止
options:dropkludge - - - - 廃止
options:nocnidcache - - - - 廃止
options:caseinsensitive - - - - 廃止