権限拒否や cnid_metad エラーなしで AFP/Netatalk 経由で HFS+ に書き込む方法は?

権限拒否や cnid_metad エラーなしで AFP/Netatalk 経由で HFS+ に書き込む方法は?

過去 24 時間は、あらゆる種類のパッケージを含む Debian サーバーのインストールに費やしました。このサーバーは Mac OS X (10.8) 環境で実行されるため、当初の目標は、このサーバーを TimeCapsule の代替として使用することでした。

そのため、zeroConfig と Time Machine のサポートのために Netatalk 3.0.2 と avahi-daemon をインストールしました。

私のサーバーに接続されているハードドライブは、GUID パーティション スキームでフォーマットされた HFS+ です。

私は各MacにTimeCapsuleボリュームとして1つのボリュームと1つのフォルダを設定し、それらのドライブにアクセスするための2つのUNIXユーザーと、データドライブとして2つのドライブを追加しました。TimeCapsuleドライブ/フォルダの所有権を次のように変更しました。

chown -R userA:userA /media/usb/TimeCapsuleA
and
chown -R userB:userB /media/usb/TimeCapsuleB

私の/etc/afp.confは次のようになります

[Global]
hostname = TimeCapsule
log file = /var/log/netatalk.log
uam list = uams_guest.so, uams_dhx.so, uams_dhx2.so,
zeroconf = yes
save password = yes
mimic model = TimeCapsule6,106
log level = default:warn
log file = /var/log/netatalk.log
hosts allow = 192.168.178.0/24

[default_for_all_vol]


[TimeCapsuleA]
path = /media/usb/TimeCapsuleBackup/TimeCapsuleA/
time machine = yes
valid user = usera
invisible dots = yes
search db = yes
ea = auto
cnid scheme = dbd

[TimeCapsuleB]
path = /media/usb/TimeCapsuleBackup/TimeCapsuleB/
time machine = yes
valid user = userb
invisible dots = yes
search db = yes
ea = auto

[PogoPlug1]
path = /media/usb/PogoPlug1/
cnid scheme = dbd
ea = auto 
mac charset = MAC_ROMAN
invisible dots = yes
search db = yes
valid user = userA userB

[OSX-Exchange]
path = /media/usb/OSX-Exchange/
cnid scheme = dbd
ea = auto 
mac charset = MAC_ROMAN
invisible dots = yes
search db = yes
valid user = userA userB

私のマウントテーブル

/etc/auto.misc on /media/usb type autofs (rw,relatime,fd=6,pgrp=1658,timeout=300,minproto=5,maxproto=5,indirect)
/dev/sdb2 on /media/usb/TimeCapsuleBackup type hfsplus (ro,nosuid,nodev,noexec,relatime,sync,umask=22,uid=0,gid=0,nls=utf8)
/dev/sdc2 on /media/usb/PogoPlug1 type hfsplus (ro,nosuid,nodev,noexec,relatime,sync,umask=22,uid=0,gid=0,nls=utf8)
/dev/sdd2 on /media/usb/OSX-Exchange type hfsplus (ro,nosuid,nodev,noexec,relatime,sync,umask=22,uid=0,gid=0,nls=utf8)

/media/usb/ の権限

drwxrwxrwx 1 evils evils   20 Feb 27 01:24 OSX-Exchange
drwxrwxr-x 1 evils evils   18 Feb 27 01:19 PogoPlug1
drwxrwxr-x 1 root  root    12 Feb 27 01:00 TimeCapsuleBackup

すべてのドライブは autofs を介してマウントされます。UserA と UserB は両方ともグループ 0 のメンバーであり、ターミナル経由でこれを実行しようとすると、すべてのドライブに書き込むことができます。

ここで、UserA として TimeCapsuleA ボリュームにアクセスしようとすると、完全な書き込みアクセス権が付与され、ボリュームを TimeMachine バックアップ ボリュームとして使用できます。ただし、グループ 0 の一部である同じユーザーで OSX-Exchange または PogoPlug1 にアクセスすると、書き込みアクセス権が付与されません。ターミナル経由で同じユーザーで同じディスクに書き込むことができるため、これは非常に奇妙です。所有権をこのユーザーに変更すると、書き込みアクセス権が再び付与されますが、その後、この特定のユーザーのみが再び書き込み可能になり、同じ gid または有効なユーザー パラメータ内の他のユーザーは誰も書き込みできません。

現在、これらのデータ ドライブにアクセスする必要があるユーザーが複数いるため、書き込みユーザーが変わるたびに所有権を変更せずに同じドライブに書き込む方法を見つける必要があります。

私の netatalk ログ ファイルは、netatalk を起動すると次のように出力します。

Feb 27 00:59:08.422374 cnid_dbd[3314] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineFH" does not support Extended Attributes or read-only volume
Feb 27 00:59:08.423147 cnid_dbd[3314] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineNS" does not support Extended Attributes or read-only volume
Feb 27 00:59:08.423549 cnid_dbd[3314] {netatalk_conf.c:196} (W:AFPDaemon): volume "PogoPlug1" does not support Extended Attributes or read-only volume
Feb 27 00:59:08.423828 cnid_dbd[3314] {netatalk_conf.c:196} (W:AFPDaemon): volume "OSX-Exchange" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.658562 cnid_metad[3460] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineFH" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.659329 cnid_metad[3460] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineNS" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.659725 cnid_metad[3460] {netatalk_conf.c:196} (W:AFPDaemon): volume "PogoPlug1" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.660002 cnid_metad[3460] {netatalk_conf.c:196} (W:AFPDaemon): volume "OSX-Exchange" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.799875 afpd[3459] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineFH" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.800798 afpd[3459] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineNS" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.801209 afpd[3459] {netatalk_conf.c:196} (W:AFPDaemon): volume "PogoPlug1" does not support Extended Attributes or read-only volume
Feb 27 01:04:34.801534 afpd[3459] {netatalk_conf.c:196} (W:AFPDaemon): volume "OSX-Exchange" does not support Extended Attributes or read-only volume
Feb 27 01:04:53.508492 afpd[3464] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineFH" does not support Extended Attributes or read-only volume
Feb 27 01:04:53.508942 afpd[3464] {netatalk_conf.c:196} (W:AFPDaemon): volume "TimeMachineNS" does not support Extended Attributes or read-only volume
Feb 27 01:04:53.509239 afpd[3464] {netatalk_conf.c:196} (W:AFPDaemon): volume "PogoPlug1" does not support Extended Attributes or read-only volume
Feb 27 01:04:53.509531 afpd[3464] {netatalk_conf.c:196} (W:AFPDaemon): volume "OSX-Exchange" does not support Extended Attributes or read-only volume

所有権がログインしているユーザーと一致する場合、完全な書き込みアクセス権があります。

AFP 経由で新しいフォルダーを作成しようとすると、次のエラーが発生します。

Feb 27 01:05:08.355873 afpd[3467] {ad_open.c:976} (E:Default): ad->ad_ops->ad_mkrf(ad_p) failed: Permission denied

どのような助けでも大歓迎です!

答え1

マウントがすべて読み取り専用になっていることが関係しているのでしょうか? 3つのボリュームすべてにマウントテーブル内の属性。(読み取り/書き込み)オプション/etc/fstab自動的にマウントする場合は次のようにファイルを作成します。

/dev/sXXX /media/usb/volume_name type hfsplus rw,nosuid,nodev,noexec,relatime,sync,umask=22,uid=0,gid=0,nls=utf8

または、手動でマウントする場合は、次を使用します。

sudo mount /dev/XXX /media/usb/volume_name -t hfsplus -o rw,nosuid,nodev,noexec,relatime,sync,umask=22,uid=0,gid=0,nls=utf8

答え2

私も同様の問題で頭を悩ませてきましたが、エラー メッセージはまったく同じです。 cnid_metad[]: volume "MyVolume" does not support Extended Attributes or read-only volume

Netatalk バージョンは 3.1.8 を使用しましたが、基本的にどの 3.x でも同じメッセージが生成されます。

私の場合、reiserfs ファイル システムを共有しており、拡張属性は必要ありません。これはデータ アクセス ボリュームのみです。そのため、ログが破壊されるので、Debian Linux システム サーバーの daemon.log からエラーをクリアしたいと考えました。

解決策は、すべての設定で拡張属性を無効にしea = none、古いバージョンの AppleDouble にフォールバックすることですappledouble = v2

ボリュームセクションにコードを追加します:

[MyVolume]
...
appledouble = v2
ea = none

答え3

構成キーは複数形です: valid users

関連情報