プラスα空間

ブログ in お市 のーと

NetatalkとSambaとの共存はもう一息

以前のバージョンのNetatalkとSambaは、ファイル名や拡張属性などに違いがあり、接続するプロトコルをAFPとSMBとを切り替えて使うような事は出来ませんでした。ですが、両者が歩み寄る事に、共存が可能になります。

「Netatalk/Sambaの共存」とは、次の通りです。

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.が付かないので、空欄にするとの事です。

設定が終わったら、NetatalkとSambaを起動します。

# /usr/local/etc/rc.d/netatalk start
# /usr/local/etc/rc.d/samba_server start

この後、OS X 10.10.5 Yosemiteに、準備したファイルシステムをマウントして、調べてみました。実験には、HATさんが長年使っていると言うファイルを使わせていただきました。拡張属性やリソースフォーク付きです。

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でつないだ状態です。

AFP接続時

次に、SMBでつないだ状態です。

SMB接続時

HATさんが調査して、Sambaのvfs_fruit.cのバグである事がわかりました。さすがです。

それと、SMBで接続している時にファイルを削除しようとしても、消せません。これもバグだそうです。

使用中

ファイル名は、共通になっているようでした。OS XでUNIXの特殊文字”/”を使ったファイル名は、AFP接続時でもSMB接続時でも、正しく”:”に置き換えられていました。

NetatalkとSambaとの共存はもう一息”に“23”個のコメント
  • HAT より:

    DOSATTRIBは、
    store dos attributes = yes
    によるものですね

    • HATさんへ、いつもコメント、そしてtwitterでの会話、ありがとうございました。
      なるほど! そう言うことですか! 知らずに設定していました。

      • HAT より:

        昔このオプションを試した時、Windows側からRead Onlyを設定すると、拡張属性の方にだけRead Onlyが設定されて、unix permissionのwフラグが下がらないので、unix側からwrite出来てしまった記憶があるのですが、最近は大丈夫でしょうか。

  • HAT より:

    Samba 4.3.4が出てますが、リリースノートを見た限りでは、今回発見した問題は直ってないみたいです。

  • hat0001 より:

    BSD/Solarisにおける拡張属性名のバグは、未だに直ってないですよね。結局。
    メーリングリストではパッチも送ったはずなんですけどねえ。
    誰もsambaのbugzillaに登録しないから?

    • hat0001さんへ、初コメントありがとうございます。と言うか、HATさんですね?
      結局、誰も困っていないor問題に気づいていないという事でしょうか?
      この問題を持ったまま、macOSがSamba/SMB主流になると、AFPで接続していた時に使っていた拡張属性が見えなくなって、みんな困るはずなんですけど。

  • HAT より:

    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へのアカウント登録が必要ですね。

  • HAT より:

    *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をアップグレードする必要があります。

  • HAT より:

    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 より:

    ウチの10.2もそれに引っかかったので11.0入れました。

    • HATさんへ、いつもコメントありがとうございます。お返事が遅くなってすみません。
      やはり…。私も早くアップデートしないと…です。

  • 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コマンド自体が動かなくて、探せません…。

  • HAT より:

    % 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

  • この影響でMacからSMBでFreeNAS/NAS4Freeの共有をマウントして使ってたら、時々消えないファイルが発生するとかなんですかね…
    さっさと、Samba46のportsを作って貰わないと…(お前が作れ?)

    • Yoshiyuki (@HARAOKA)さんへ、初コメントありがとうございます。
      いつも、MLではお世話になっております。
      拡張属性の名前が違っていて、SMBで接続したときとAFPで接続したときのファリルの見え方が違ってきてしまいます。
      FreeNAS/NAS4FreeはFreeBSDベースでしたね。FreeBSDを使っている人は少ないかもと思っていましたが、これらのNASサーバを使っている人も考えると、多そうですね。

  • HAT より:

    これは、拡張属性の名前のつけ方が、Linuxでは大丈夫だけど*BSDだとバグっててNetatalkと互換性がないという件です。
    なので、*BSDではResourceForkとかFinderInfoがSambaとNetatalkで同様に扱えません。

    「時々消えないファイルが発生」は、この件とは別に見えますが、具体的にはどういう現象でしょうか。
    fruit:locking = netatalk
    を設定していると、macOSからsamba経由でファイルが消せないという件でしょうか。この問題はまだ直ってません。

  • […] NetatalkとSambaとの共存はもう一息 […]

コメントを残す