いまどき(2019)のsamba/freebsd/zfsacl事情

あれから6年。いまどきのSamba 4.8.7/FreeBSD11.2で確認してみたところ、概ね期待通りに動作するようになっているっぽいです。但し幾つか注意点は有るようで。

POSIX準拠パーミッションのみは使用しない

NFSv4ACLが指定されておらず、従来のPOSIX準拠パーミッション(以下パーミッション)しかないファイルをそのまま使うと、下記のようなことが起こります。

FreeBSD(Samba4)でファイルサーバを構築で、Windows側のパーミッションがおかしい

原因は、パーミッションのACLへの変換がいけてないため。

パーミッションしか無いファイルに対してACL取得要求が有ると、パーミッションをACLの形に変換するわけですが、Write属性はこんな風に変換されます。

from POSIX permission
-w-p--a-R-c--s:-------

一方で、WindowsからACLで書込みのみ可と設定すると、こんな感じに。

from Windows ACL
-w-p---A-W----:-------

パーミッションから変換されたACLは、Windowsから書込んだACLと比較すると、A[write_attributes]とW[write_xattr]が足りない。

すると、Windowsから見て「書込みに必要な権限が足りない=書込み出来ない」という解釈になるわけです。

つまり、パーミッションから変換されたACLがおかしい…と。しかし困ったことに、このACL変換ルールは、zfsの仕様みたいなんですよね。

FreeBSDはzfsの仕様通りにパーミッションをACLに変換し、sambaは仕様通りOSから取得したACLをそのまま返し、Windowsは受け取ったACLを正しく解釈して「書込み不可」と。どないせぇっちゅうねんw

ま、とりあえずは、Samba共有で使用するファイルに、全てWindowsが期待するACLを付与しておけば回避出来るんじゃ無いかと思います。継承はちゃんと動作しているっぽいんで。

macOSから使えない

所有者以外の書込み権限が付与されたファイルに対し、Microsoft officeで上書きすると書込み権限が無くなったり、ACLがおかしくなります。

macOSのcifsクライアントがACL理解しないため、書込み時にパーミッションとして書込み可を指定するため、先のいけてない変換ルールが逆にACLとして書込まれてしまいます。

netatalkで代用しようにも、zfsacl扱えない為、論外。

AppleはAFP捨ててCIFS推しみたいですが、ならもう少しきちんと実装してくれよ…と。

“いまどき(2019)のsamba/freebsd/zfsacl事情” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。