FreeBSDでもNetatalkとSambaとの共存が出来てた

2017年3月20日FreeBSD,Mac,NAS,netatalk

NetatalkとSambaとの統合について、ずっとHATさんが追いかけています。

私も、微力ながら、実験を続けていました。

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

Samba46を試す

Samba46に次のパッチが取り入れられたとの事で、Samba46を試してみたいと思いました。

でも、pkgには、samba44までしか無いのです。

# 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

残念! と思っていたら、Samba46をFreeBSDのportを作ってくださった方が現れました! ありがとうございます。

無事に、ビルドと起動できたのですが、拡張属性が正しく扱われ無いようです。

Samba46

Samba44を試す

試しに、Samba44をサーバにして、OS Xでマウントすると、ちゃんと拡張属性がついた状態で見えます。

Samba44

当然、Samba44の拡張属性は正しい内容になっています。Samba46には、netatalk用の拡張属性が一切付いていません。Samba44とSamba46は、同じsmb4.confを使っています。

# lsextattr user *
ICONandEA by AFP.txt	org.netatalk.Metadata	com.apple.metadata:kMDItemFinderComment	com.apple.TextEncoding
ICONandEA by Samba44.txt	DOSATTRIB	org.netatalk.Metadata	com.apple.metadata:kMDItemFinderComment	com.apple.TextEncoding
ICONandEA by Samba46.txt	DOSATTRIB

実験には、HATさんのファイルを使わせていただきました。ありがとうございます。

バグが残っているはずのSamba44で、どうして拡張属性がきちんと扱われているのか、調べてみました。こっそりと、パッチ(net/samba44/files/patch-source3__modules__vfs_fruit.c)が当たっているようです。

--- source3/modules/vfs_fruit.c.orig    2016-12-28 02:48:27.478460000 +0000
+++ source3/modules/vfs_fruit.c 2016-12-28 02:48:58.141967000 +0000
@@ -105,7 +105,7 @@
  * This is hokey, but what else can we do?
  */
 #define NETATALK_META_XATTR "org.netatalk.Metadata"
-#if defined(HAVE_ATTROPEN) || defined(FREEBSD)
+#if defined(HAVE_ATTROPEN)
 #define AFPINFO_EA_NETATALK NETATALK_META_XATTR
 #define AFPRESOURCE_EA_NETATALK "org.netatalk.ResourceFork"
 #else

この修正は、次のパッチとほぼ同じ内容です。

設定ファイル

なお、afp.confとsmb4.confは、HATさんのページを参考にさせていただいております。ありがとうございます。

/usr/local/etc/afp.conf

;
; 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]
    ea = samba
    veto files = /Thumbs.db/desktop.ini/lost+found/
    delete veto files = Yes
    file perm = 0660
    directory perm = 0770

[Homes]
    basedir regex = /usr/home
    home name = $u-paralles
    spotlight = yes
    file perm = 0600

[b]
    path = /export/b
    spotlight = yes

/usr/local/etc/smb4.conf

testparmの結果です。

# Global parameters
[global]
	bind interfaces only = Yes
	dos charset = CP932
	interfaces = em0 192.168.1.0/24
	server string = Freebsd SMB3 Server
	local master = No
	log file = /var/log/samba4/log.%m
	max log size = 50
	load printers = No
	unix extensions = No
	map to guest = Bad User
	passwd chat = * %n\n * %n\n *
	passwd program = /usr/bin/passwd %u
	security = USER
	unix password sync = Yes
	dns proxy = No
	wins support = Yes
	streams_xattr:store_stream_type = no
	streams_xattr:prefix = user.
	fruit:encoding = native
	idmap config * : backend = tdb
	delete veto files = Yes
	hide files = /.DS_Store/Network Trash Folder/TheFindByContentFolder/TheVolumeSettingsFolder/Temporary Items/.TemporaryItems/.VolumeIcon.icns/Icon?/.FBCIndex/.FBCLockFolder/
	map archive = No
	store dos attributes = Yes
	veto files = /lost+found/
	kernel oplocks = Yes
	ea support = Yes
	map acl inherit = Yes
	hosts allow = 127.0.0.0/8 192.168.1.0/24
	hosts deny = all
	read only = No
	vfs objects = catia fruit streams_xattr

[homes]
	comment = Home Directories
	browseable = No
	oplocks = No

[b]
	comment = b
	path = /export/b
	force create mode = 0660
	force directory mode = 0770
	guest ok = Yes

ついでの情報ですが、今まで利用していたsmb4.confに間違いがありました。log.nmbdを見ていたら、次のメッセージが出ていました。

Status: "nmbd: No local IPv4 non-loopback interfaces available

次のページに解決方法が載っていました。Thank you! smb4.confのinterfacesの書き方が間違っていたためでした。

このページに従って、loop back I/F (lo0)も追加したら、次のメッセージが出るようになってしまいました。

queue_query_name: interface 1 has NULL IP address !

次のページに解決方法が載っていました。Thank you! smb4.confのinterfacesに、loop back I/F (lo0)を追加したためでした。lo0を削除したら、解決しました。

Parallelsは便利

この実験のために、ParallelsにFreeBSD11をインストールしたのでした。

Parallels12にFreeBSD11をインストール
[amazonjs asin="B01KUAIBBE" locale="JP"]

Posted by お市のかた