Settings for SAMBA Shares to Play Nicely with MacOS

Add the following to the global section:

  min protocol = SMB2
ea support = yes
vfs objects = fruit streams_xattr
acl_xattr
fruit:appl = yes
fruit:metadata = stream
fruit:model = MacSamba
fruit:veto_appledouble = no
fruit:posix_rename = yes
fruit:zero_file_id = yes
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
fruit:locking = netatalk


# Set character set so that international characters are valid
unix charset = UTF-8
dos charset = 866

# Prefer encrypted traffic
server smb encrypt = desired

You can set the min protocol to SMB3 if you are only using Mac clients that are running a relatively recent version of MacOS, or with up to date Windows 10/11 clients.

In the individual shares if you want to use extended attributes, makes sure they are available.

If the share is on ZFS, make sure the volume has xattr set to on or sa. “sa” seems to be the better choice from what little information I have been able to find; it is apparently using ZFS native structures, and is substantially more efficient than “on“). If I can find more definitive information on exactly what the two options mean, I’ll link to it here.

From the zfs man page, it gives you some indication:

When the property xattr=on is set on a file system additional objects will be
created per-file to store extended attributes. These additional objects are
reflected in the userobjused value and are counted against the user’s
userobjquota. When a file system is configured to use xattr=sa no additional
internal objects are normally required.

If the share is on ext4, check to make sure the filesystem has xattr enabled

cat /proc/fs/ext4/<filesystem device>/options | grep xattr

If you get user_xattr, you are good to go.

Add the following to the individual shares:

fruit:resource = xattr 

1 thought on “Settings for SAMBA Shares to Play Nicely with MacOS”

Leave a Comment