いまどき(2026)のmacOSのためのSamba設定(by FreeBSD&ZFS)

「令和の!」って言ってみたかったけど、検索キー汚すだけなんでやめました。確認したのはFreeBSD 14.3&Samba 4.22.6とmacOS 26.2

わっかんないよ!

Web記事で言ってることはひとつもわかんないよ!

Web記事でいいって言ってるもの、何がいいのかわかんないよ!

わかんない! 私にはわかんないの!

いやまじで。

FreeBSDとLinuxじゃ事情が違うんだよ。みんな安易にFinderから読み書きできて「これでOK」なんて言うけど、特定アプリからアクセスしたら不具合いっぱいとかあるんだよ。macOSをガチで使ってるユーザー少ないから、Sambaのアップデートでfruit周りにエンバグ出ても誰も気づいてくれないんだよ。

マジでもうわっかんないんだよ(ぉ。

まぁそんな感じなんですが、Appleが公式にafp捨てるって言い出したんで、そろそろまじめにSambaでmacOS向けのファイル共有に取り組もうかと。

そんな感じで現状の設定がこちら。なんとなく動いてる気がするけど、あってるかどうかもうよくわかんない。「FreeBSD&ZFS&netatalkのmetadata/resouceを引き継ぐ」って組み合わせのサンプルが少なすぎて…。

[global]
    dos filetimes = Yes
    dos filemode = Yes
    inherit permissions = Yes
    inherit acls = Yes
    map acl inherit = Yes
    acl group control = Yes

    ea support = yes           #4.9以降はdefault yes
    vfs object = zfsacl catia fruit streams_xattr
        
    fruit:encoding = native     #default: private
    fruit:metadata = netatalk   #default
    fruit:resource = file       #default

    fruit:veto_appledouble = no #default: yes

    streams_xattr:prefix = user.
    streams_xattr:store_stream_type = no

    nfs4:mode = simple
    nfs4:acedup = merge
    nfs4:chown = yes

ZFSACLまわりの設定は、このあたりをよくみてください。基本的にACLはldapとかでユーザー同期してないと意味ないんで「とりあず不都合ないように」程度の設定です。

MetadataとResource forkの保存場所

近頃Linux向けにはfruit:resource=streamの設定が出回っていますが、FreeBSDではダメ絶対。

macOS向けファイルサーバーの面倒なところは、メインのファイルストリームの他に、属性情報のためのMetadataとmacOS独特のリソースフォークという情報があることです。

Sambaのデフォルトでは、metadataはUNIXの拡張属性に、リソースフォークは”._”で始まる隠しファイルに保存されます。

Linuxのファイルシステムの場合、拡張属性についてはサイズの制限はありません(確かNTFSも)。なんで”._”で始まる隠しファイル(通称ゴミファイル)を作るよりも、同じく拡張属性に保存した方がスマートなのはその通り。

一方でFreeBSDの拡張属性には制限があって、ぶっちゃけリソースフォークを保存すると条件によって破綻します。というのも、まずUFSだと拡張属性が64kB以上扱えません。Metadataくらいなら問題ありませんが、リソースフォークに緻密なカスタムアイコンかいたりするとぶっ壊れます。一方でZFSの場合は容量制限は無いのですが、サイズが増える(数十kB以上から)と加速度的にアクセス速度が落ちる(数秒〜数十秒単位で)という特性があります。そういう仕様らしいです。1ファイルあたり秒単位でアクセス時間かかってたらいろんなところでタイムアウト起こして、様々な不具合を引き起こします。SSDとかNVMeにすればいいってもんでもなく、そう言う仕様。

なので、FreeBSDではディレクトリに”._”で始まるリソースフォークファイルがばら撒かれる設定が必須です。一度、streamに設定してみたことあるんですが、ファイルコピーが成功したり失敗したり、よくわからない不安定な振る舞いになりました。

“fruit:veto_appledouble = no”について

これは、”._”で始まるリソースフォークファイルを、クライアントから直にファイルシステムとして見えるのを隠すかどうかのフラグで、デフォルトはYes。

以前はそれでなんの問題もなかったのですが、冒頭のバージョンの組み合わせだと、”no”に設定しないとクライアントからリソースフォークが見えませんでした。つまりはカスタムアイコンがまったく見えない。

Samba側かmacOS側か、どっちが悪いのかわからないけれどバグっぽいです。いつからそうなったとか検証するの、もう疲れたよ⚪︎トラッシュ・・・。

SambaのGlobalと各共有セクションの記述について

vfsオブジェクトを追加するとき、globalセクションで追加してオプション設定してても、各共有セクションでvfsのロード指定したら、globalセクションで指定したvfsのためのオプションはクリアされるらしい…という記述を見つける。

つまり、globalセクションであらかたオプション設定して、各共有セクションで追加でオプション変更するような記述するとき、各共有セクションでvfs objectを指定したらあかんらしい…。

時々不可解な振る舞いになってたのは、このせいか…。

カテゴリー: 未分類 タグ: パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です