NetatalkとSambaとの共存はもう一息
以前のバージョンのNetatalkとSambaは、ファイル名や拡張属性などに違いがあり、接続するプロトコルをAFPとSMBとを切り替えて使うような事は出来ませんでした。ですが、両者が歩み寄る事に、共存が可能になります。
- NetatalkとSambaが共存出来る様になるようです : プラスα空間 (2015年3月5日)
「Netatalk/Sambaの共存」とは、次の通りです。
@oichinokata ファイル名の取り扱いが同じ
拡張属性名の取り扱いが同じ
拡張属性の中身の取り扱いが同じ
FinderInfoの取り扱いが同じ
ResourceForkの取り扱いが同じ
AFP Infoの取り扱いが同じ
ファイルロックの取り扱いが同じ生まれてすいません
— HAT (@HAT0001) January 5, 2016
- ファイル名の取り扱いが同じ
- 拡張属性名の取り扱いが同じ
- 拡張属性の中身の取り扱いが同じ
- FinderInfoの取り扱いが同じ
- ResourceForkの取り扱いが同じ
- AFP Infoの取り扱いが同じ
- ファイルロックの取り扱いが同じ
NetatalkとSambaの共存の最新状況については、HATさんがまとめてくださっています。ありがとうございます。
FreeBSDでも最新のNetatalk3.1.8とSamba4.3.3をインストールすれば、共存できるハズと、HATさんから連絡がありました。私が使っているFreeBSD10.0確認したところ、以下のように、パッケージが準備されていました。
root@freebsd:~ # pkg search netatalk3 netatalk3-3.1.8,1 root@freebsd:~ # pkg search samba4 samba4-4.0.26_3 samba41-4.1.22 samba42-4.2.7 samba43-4.3.3
早速インストールして設定してみました。最初、それまでインストールしてあったsamba41を消すのを忘れており、ハマりました…。pkg remove samba41で削除してから、pkg install samba43をしました。
いきなり全ディスクを切り替えるのは怖いので、/export/aを新たに設定して、実験する事にしました。ZFSを使っているので、ファイルシステムを作るのは簡単です。
# zfs create upool/export/a # chmod 777 /export/a
/export/aに対して、/usr/local/etc/afp.confと/usr/local/etc/smb4.confを設定します。
/usr/local/etc/afp.confは次の通りです。[a]セクションに、"ea = samba"を追加しています。
;
; Netatalk 3.x configuration file
;
[Global]
mac charset = MAC_JAPANESE
afpstats = yes
log file = /var/log/netatalk.log
vol dbpath = /export/netatalk/CNID
vol preset = my_default_values
[my_default_values]
file perm = 0660
directory perm = 0770
[Homes]
basedir regex = /usr/home
spotlight = yes
[a]
path = /export/a
spotlight = yes
ea = samba
spotlightは、FreeBSDにインストールされているNetatalkだと使えないのですが、設定だけはしておきます。
次に、/usr/local/etc/smb4.confです。
[global]
workgroup = WORKGROUP
server string = Freebsd SMB3 Server
max protocol = SMB3
load printers = no
printing = bsd
guest account = nobody
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50
passdb backend = tdbsam
wins support = yes
dns proxy = no
unix charset = UTF-8
dos charset = CP932
store dos attributes = yes
map hidden = no
map system = no
map archive = no
nt acl support = yes
inherit acls = no
map acl inherit = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = * %n\n * %n\n *
kernel oplocks = yes
unix extensions = no
ea support = Yes
oplocks = No
level2 oplocks = No
vfs objects = streams_xattr
[homes]
comment = Home Directories
browseable = no
writable = yes
public = no
printable = no
oplocks = no
[a]
comment = a
path = /export/a
guest ok = yes
writable = yes
printable = no
vfs objects = catia fruit streams_xattr
fruit:locking = netatalk
fruit:encoding = native
streams_xattr:prefix =
streams_xattr:store_stream_type = no
ea support = yes
この内、[a]セクションの、次の部分がNetatalkとの共存にために追加した部分です。
vfs objects = catia fruit streams_xattr
fruit:locking = netatalk
fruit:encoding = native
streams_xattr:prefix =
streams_xattr:store_stream_type = no
ea support = yes
streams_xattr:prefixは、Linuxの場合、"user."を設定します。FreeBSDは拡張属性名にuser.が付かないので、空欄にするとの事です。
@oichinokata Linuxの場合、必ずuser.が前置されるので、https://t.co/uYmQCq0FH4
になってしまいます。
これを回避するために
user.
を設定します。— HAT (@HAT0001) January 5, 2016
設定が終わったら、NetatalkとSambaを起動します。
# /usr/local/etc/rc.d/netatalk start # /usr/local/etc/rc.d/samba_server start
この後、OS X 10.10.5 Yosemiteに、準備したファイルシステムをマウントして、調べてみました。実験には、HATさんが長年使っていると言うファイルを使わせていただきました。拡張属性やリソースフォーク付きです。
@oichinokata 私が長年使っているテスト用ファイルで確認していただけるでしょうか。https://t.co/Dm720MCYPu
— HAT (@HAT0001) January 5, 2016
AFPとSMBでつないで、ファイルをコピーしました。そして、拡張属性を調べました。
root@freebsd:/export/a # lsextattr user *by* ICONandEA by AFP.txt com.apple.metadata:kMDItemFinderComment org.netatalk.Metadata com.apple.TextEncoding com.apple.quarantine ICONandEA by SMB.txt apple.TextEncoding DOSATTRIB apple.quarantine netatalk.Metadata apple.metadata:kMDItemFinderComment
AFPとSMBでつないだ場合で、拡張属性名が違っています。AFPだと正しく"org.netatalk.Metadata"となっていますが、SMBだと"org."が欠落して、"netatalk.Metadata"になっています。このため、AFPで接続するとSMB接続時にコピーしたファイルのカスタムアイコンが見えず、逆にSMBで接続するとAFP接続時にコピーしたファイルのカスタムアイコンが見えません。
まずは、AFPでつないだ状態です。
次に、SMBでつないだ状態です。
HATさんが調査して、Sambaのvfs_fruit.cのバグである事がわかりました。さすがです。
それと、SMBで接続している時にファイルを削除しようとしても、消せません。これもバグだそうです。
ファイル名は、共通になっているようでした。OS XでUNIXの特殊文字"/"を使ったファイル名は、AFP接続時でもSMB接続時でも、正しく":"に置き換えられていました。
[amazonjs asin="B00LUKIFKG" locale="JP"]
ディスカッション
DOSATTRIBは、
store dos attributes = yes
によるものですね
HATさんへ、いつもコメント、そしてtwitterでの会話、ありがとうございました。
なるほど! そう言うことですか! 知らずに設定していました。
昔このオプションを試した時、Windows側からRead Onlyを設定すると、拡張属性の方にだけRead Onlyが設定されて、unix permissionのwフラグが下がらないので、unix側からwrite出来てしまった記憶があるのですが、最近は大丈夫でしょうか。
Samba 4.3.4が出てますが、リリースノートを見た限りでは、今回発見した問題は直ってないみたいです。
HATさんへ、コメントありがとうございます。
う〜ん、そうですか。バグ報告に対する反応も無いですね。
BSD/Solarisにおける拡張属性名のバグは、未だに直ってないですよね。結局。
メーリングリストではパッチも送ったはずなんですけどねえ。
誰もsambaのbugzillaに登録しないから?
hat0001さんへ、初コメントありがとうございます。と言うか、HATさんですね?
結局、誰も困っていないor問題に気づいていないという事でしょうか?
この問題を持ったまま、macOSがSamba/SMB主流になると、AFPで接続していた時に使っていた拡張属性が見えなくなって、みんな困るはずなんですけど。
MLでは報告していて、
https://lists.samba.org/archive/samba/2016-January/197129.html
パッチも送ってあって、
https://lists.samba.org/archive/samba/2016-January/197130.html
忘れ去られているので、誰かがBugzillaに登録すれば、進行するかも。
https://bugzilla.samba.org/buglist.cgi?quicksearch=vfs_fruit
HATさんへ、
確かに、これだけ明確だったら、Bugzillaへの登録で、進むかもしれませんね。Bugzillaへのアカウント登録が必要ですね。
*BSDにおける拡張属性名の件ですが、4.6.0rc4で直ったようです。(未確認)
https://download.samba.org/pub/samba/rc/samba-4.6.0rc4.WHATSNEW.txt
vfs_fruit Netatalk metadata xattr name on *BSD
HATさんへ、いつもコメントありがとうございます。
ついにですか! 試してみたいのですが、今使っているFreeBSDのバージョンが古すぎて、パッケージをupdateできません。
まずは、FreeBSDをアップグレードする必要があります。
rc4だから、まだでは?
あと、4.4.10のfixも気になる。
o Ralph Boehme
* BUG 12536: s3/smbd: Check for invalid access_mask
smbd_calculate_access_mask().
* BUG 12541: vfs_fruit: checks wrong AAPL config state and so always uses
readdirattr.
* BUG 12545: s3/rpc_server/mdssvc: Add attribute “kMDItemContentType”.
* BUG 12591: vfs_streams_xattr: Use fsp, not base_fsp.
どういう修正なんだろう。
HATさんへ、いつもコメントありがとうございます。
正式リリースされるのはまだ先かもしれませんが、現時点で、OS付属のパッケージが全くアップデートできなくなってしまったことが問題です。
http://oichinote.com/plus/2017/02/error-after-pkg-upgrade-on-freebsd-10-0.html
ウチの10.2もそれに引っかかったので11.0入れました。
HATさんへ、いつもコメントありがとうございます。お返事が遅くなってすみません。
やはり…。私も早くアップデートしないと…です。
4.6.0(正式版)でてますが、まだportsにはないですね。
% ls -ld /usr/ports/net/samba*
drwxr-xr-x 2 root wheel 5 Feb 11 03:11 /usr/ports/net/samba-libsmbclient
drwxr-xr-x 2 root wheel 4 Feb 11 03:11 /usr/ports/net/samba-nmblookup
drwxr-xr-x 3 root wheel 6 Feb 11 03:11 /usr/ports/net/samba-smbclient
drwxr-xr-x 3 root wheel 8 Feb 11 03:11 /usr/ports/net/samba36
drwxr-xr-x 3 root wheel 7 Feb 11 03:11 /usr/ports/net/samba42
drwxr-xr-x 3 root wheel 7 Feb 11 03:11 /usr/ports/net/samba43
drwxr-xr-x 3 root wheel 7 Feb 11 03:11 /usr/ports/net/samba44
4.6どころか、4.5もない。
HATさんへ、コメントありがとうございます。
pkgにも上がっていませんか? $ pkg search samba の結果も同じでしょうか?
私はpkgコマンド自体が動かなくて、探せません…。
% pkg search samba
p5-Samba-LDAP-0.05_2 Manage a Samba PDC with an LDAP Backend
p5-Samba-SIDhelper-0.0.0_3 Create SIDs based on G/UIDs
samba-nsupdate-9.8.6_1 nsupdate utility with GSS-TSIG support
samba-virusfilter-0.1.3_1 On-access anti-virus filter for Samba
samba36-3.6.25_3 Free SMB and CIFS client and server for Unix
samba36-libsmbclient-3.6.25_2 Shared lib from the samba package
samba36-nmblookup-3.6.25 NetBIOS Name lookup tool
samba36-smbclient-3.6.25 Samba “ftp-like” client
samba42-4.2.14 Free SMB/CIFS and AD/DC server and client for Unix
samba43-4.3.13_1 Free SMB/CIFS and AD/DC server and client for Unix
samba44-4.4.8_1 Free SMB/CIFS and AD/DC server and client for Unix
HATさんへ、再びコメントありがとうございます。
pkgにもなっていないのですね。portsに無いから、当たり前なんですね。
この影響でMacからSMBでFreeNAS/NAS4Freeの共有をマウントして使ってたら、時々消えないファイルが発生するとかなんですかね…
さっさと、Samba46のportsを作って貰わないと…(お前が作れ?)
Yoshiyuki (@HARAOKA)さんへ、初コメントありがとうございます。
いつも、MLではお世話になっております。
拡張属性の名前が違っていて、SMBで接続したときとAFPで接続したときのファリルの見え方が違ってきてしまいます。
FreeNAS/NAS4FreeはFreeBSDベースでしたね。FreeBSDを使っている人は少ないかもと思っていましたが、これらのNASサーバを使っている人も考えると、多そうですね。
これは、拡張属性の名前のつけ方が、Linuxでは大丈夫だけど*BSDだとバグっててNetatalkと互換性がないという件です。
なので、*BSDではResourceForkとかFinderInfoがSambaとNetatalkで同様に扱えません。
「時々消えないファイルが発生」は、この件とは別に見えますが、具体的にはどういう現象でしょうか。
fruit:locking = netatalk
を設定していると、macOSからsamba経由でファイルが消せないという件でしょうか。この問題はまだ直ってません。
[…] NetatalkとSambaとの共存はもう一息 […]