Samba Time Machine configuration survey
David Allouche — 2025-09-11
When I configured a Raspberry Pi for use as a Time Machine server, I found that most recommended Samba configurations used uneeded or obsolete parameters. This is discussed in Time Machine, Samba configuration.
This page collects smb.config
snippets, official documentation, and the
analysis of the relevance of each parameter found on the web to the Time
Machine use case.
Raspberrypi time machine
When ducking for “raspberrypi time machine”, we find the following results.
[backups]
comment = Backups
path = /mnt/backups/backups
valid users = keeper
read only = no
vfs objects = catia fruit streams_xattr
fruit:time machine = yes
[timemachine]
path = /mnt/timemachine
browseable = yes
read only = no
guest ok = no
create mask = 0600
directory mask = 0700
comment = Raspberry Pi Time Capsule
writeable = yes
valid users = kev # change this to your user account
write list = kev # change this to your user account
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
[TimeMachine]
comment = Time Machine
path = /home/pi/shared
browseable = yes
writeable = yes
create mask = 0600
directory mask = 0711
spotlight = yes
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
public = yes
Next came the critical part: editing the
smb.conf
file to add a Time Machine-compatible share. This required setting the right flags, specificallyfruit:time machine = yes
andvfs objects = catia fruit streams_xattr
, to mimic the behavior of Apple’s proprietary sharing protocol.
Samba time machine
When ducking for “samba time machine” we find those.
Stefan Johner wrote (redacted to keep the focus on Apple compatibility):
[global]
# Fruit global config
fruit:aapl = yes
fruit:nfs_aces = no
fruit:copyfile = no
fruit:model = MacSamba
...
# Protocol versions
client max protocol = default
client min protocol = SMB2_02
server max protocol = SMB3
server min protocol = SMB2_02
...
[timemachine]
# Load in modules (order is critical!)
vfs objects = catia fruit streams_xattr
fruit:time machine = yes
fruit:time machine max size = 300G
comment = Time Machine Backup
path = /mnt/timemachine
available = yes
valid users = timemachine
browseable = yes
guest ok = no
writable = yes
[global]
min protocol = SMB2
vfs objects = catia fruit streams_xattr
fruit:nfs_aces = no
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
server min protocol = SMB2
[backupshare]
comment = Apple Backup Shared Folder
path = /mnt/samba/applebackups
fruit:time machine = yes
force user = smbuser
force group = smbgroup
read only = no
browseable = yes
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
[global]
security = user
wide links = yes
unix extensions = no
vfs object = acl_xattr catia fruit streams_xattr
fruit:nfc_aces = no
fruit:aapl = yes
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:metadata = stream
fruit:delete_empty_adfiles = yes
fruit:veto_appledouble = no
spotlight = yes
[TimeMachine]
path = /media/Backup/TimeMachine
available = yes
writable = yes
guest ok = no
valid users = (your-username)
vfs objects = catia fruit streams_xattr
fruit:time machine = yes
fruit:time machine max size = 250G
Reference documentation
Samba man pages, version 4.22, latest at the time of writing:
Samba wiki:
Parameters useful for Time Machine
path = /mnt/backups
- Path to the volume storage.
valid users = username
- Name the user owning the share.
read only = no
orwriteable = yes
- Allow writing to the share.
vfs objects = fruit
- Turn on support for Apple SMB2+ extensions.
fruit:time machine = yes
- Advertise Time Machine support for this volume, and modify some low-level settings.
Uneeded parameters for Time Machine
Many of the uneeded parameters would be useful when using Samba as an actual file server with macOS clients, as in actually used to store and share documents. Since Time Machine only uses SMB to store and access a sparse bundle disk image, its requirements are much simpler than a full client.
vfs objects = catia fruit *************
vfs_catia
supports file names that are not otherwise supported by SMB because they contain forbidden punctuation, like:
or"
. This might be useful if the name of the Mac contains such a punctuation, and if macOS does not remove the punctuation in the name of the sparse bundle directory. Otherwise it is not needed to access the content of a sparse bundle.vfs objects = ***** fruit streams_xattr
vfs_streams_xattr
is explicitly required in thevfs_fruit
man page. It is needed to support extended filesystem attributes, which are used by macOS. Useful for a file server, irrelevant for Time Machine.browseable = yes
- Default value.
guest ok = no
- Default value.
write list = username
- The default value is empty, it appears to accept all valid users.
create mask
,directory mask
,force create mode
,force directory mode
- Override default permission masks. This is irrelevant for Time Machine. It can be useful on a file server, but this very much depends on the situation.
force user
,force group
- Override the UNIX user. Irrelevant for time machine. Can be useful on a file server, depending on the situation.
fruit:nfs_aces = no
- Disable support for querying and modifying UNIX modes of directory entries. Another file server feature, situation dependent.
fruit:aapl = yes
- Default value.
spotlight = yes
- Support Spotlight queries. Useful for a file server, irrelevant for Time Machine.
public = yes
, orguest ok = yes
- No password is required for this service. That can make sense, since Time
Machine supports encrypting archives. Use this in place of specifying
valid users
, if you prefer. The downside is allowing anyone on the local network to destroy your Time Machine data. client max protocol
,client min protocol
- Configuration for the SMB client. Irrelevant. Also, the defaults are fine.
server max protocol
,server min protocol
,max protocol
,min protocol
- Control protocol negotiation. The defaults in current Samba releases are fine, no need to modify them.
fruit:time machine max size
- Limit the reported disk size. This can be useful to enforce quotas on a multi-user server. For personal use, a disk usage limit can be configured at the creation of the Time Machine archive.
available = yes
- Default value.
fruit:metadata = stream
- Delegate metadata stream processing to
vfs_streams_xattr
. This is needed to support files with very large extended attribute data. Useful for a file server, irrelevant for Time Machine. fruit:model = MacSamba
- Default value.
fruit:posix_rename = yes
- Option removed in Samba 4.22.0. Reports of this option being needed on archive creation are apparently outdated.
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
- Modify the handling of resource forks. Only relevant with MacOS Classic, irrevelant for Time Machine.