summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man8/vfs_fruit.8
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man8/vfs_fruit.8')
-rw-r--r--upstream/archlinux/man8/vfs_fruit.8536
1 files changed, 536 insertions, 0 deletions
diff --git a/upstream/archlinux/man8/vfs_fruit.8 b/upstream/archlinux/man8/vfs_fruit.8
new file mode 100644
index 00000000..097d1579
--- /dev/null
+++ b/upstream/archlinux/man8/vfs_fruit.8
@@ -0,0 +1,536 @@
+'\" t
+.\" Title: vfs_fruit
+.\" Author: [see the "AUTHOR" section]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\" Date: 02/19/2024
+.\" Manual: System Administration tools
+.\" Source: Samba 4.19.5
+.\" Language: English
+.\"
+.TH "VFS_FRUIT" "8" "02/19/2024" "Samba 4\&.19\&.5" "System Administration tools"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+vfs_fruit \- Enhanced OS X and Netatalk interoperability
+.SH "SYNOPSIS"
+.HP \w'\ 'u
+vfs objects = fruit
+.SH "DESCRIPTION"
+.PP
+This VFS module is part of the
+\fBsamba\fR(7)
+suite\&.
+.PP
+The
+vfs_fruit
+module provides enhanced compatibility with Apple SMB clients and interoperability with a Netatalk 3 AFP fileserver\&.
+.PP
+The module should be stacked with
+vfs_catia
+if enabling character conversion and must be stacked with
+vfs_streams_xattr, see the example section for the correct config\&.
+.PP
+The module enables alternate data streams (ADS) support for a share, intercepts the OS X special streams "AFP_AfpInfo" and "AFP_Resource" and handles them in a special way\&. All other named streams are deferred to
+vfs_streams_xattr
+which must be loaded together with
+vfs_fruit\&.
+.PP
+Be careful when mixing shares with and without vfs_fruit\&. OS X clients negotiate SMB2 AAPL protocol extensions on the first tcon, so mixing shares with and without fruit will globally disable AAPL if the first tcon is without fruit\&.
+.PP
+Having shares with ADS support enabled for OS X client is worthwhile because it resembles the behaviour of Apple\*(Aqs own SMB server implementation and it avoids certain severe performance degradations caused by Samba\*(Aqs case sensitivity semantics\&.
+.PP
+The OS X metadata and resource fork stream can be stored in a way compatible with Netatalk 3 by setting
+fruit:resource = file
+and
+fruit:metadata = netatalk\&.
+.PP
+OS X maps NTFS illegal characters to the Unicode private range in SMB requests\&. By setting
+fruit:encoding = native, all mapped characters are converted to native ASCII characters\&.
+.PP
+Finally, share access modes are optionally checked against Netatalk AFP sharing modes by setting
+fruit:locking = netatalk\&.
+.PP
+This module is not stackable other than described in this manpage\&.
+.SH "GLOBAL OPTIONS"
+.PP
+The following options must be set in the global smb\&.conf section and won\*(Aqt take effect when set per share\&.
+.PP
+fruit:aapl = yes | no
+.RS 4
+A
+\fIglobal\fR
+option whether to enable Apple\*(Aqs SMB2+ extension codenamed AAPL\&. Default
+\fIyes\fR\&. This extension enhances several deficiencies when connecting from Macs:
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+directory enumeration is enriched with Mac relevant filesystem metadata (UNIX mode, FinderInfo, resource fork size and effective permission), as a result the Mac client doesn\*(Aqt need to fetch this metadata individually per directory entry resulting in an often tremendous performance increase\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+The ability to query and modify the UNIX mode of directory entries\&.
+.RE
+.sp
+.RE
+There\*(Aqs a set of per share options that come into play when
+\fIfruit:aapl\fR
+is enabled\&. These options, listed below, can be used to disable the computation of specific Mac metadata in the directory enumeration context, all are enabled by default:
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+readdir_attr:aapl_rsize = yes | no
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+readdir_attr:aapl_finder_info = yes | no
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+readdir_attr:aapl_max_access = yes | no
+.RE
+.sp
+.RE
+See below for a description of these options\&.
+.RE
+.PP
+fruit:nfs_aces = yes | no
+.RS 4
+A
+\fIglobal\fR
+option whether support for querying and modifying the UNIX mode of directory entries via NFS ACEs is enabled, default
+\fIyes\fR\&.
+.RE
+.PP
+fruit:copyfile = yes | no
+.RS 4
+A
+\fIglobal\fR
+option whether to enable OS X specific copychunk ioctl that requests a copy of a whole file along with all attached metadata\&.
+.sp
+WARNING: the copyfile request is blocking the client while the server does the copy\&.
+.sp
+The default is
+\fIno\fR\&.
+.RE
+.PP
+fruit:model = MacSamba
+.RS 4
+This option defines the model string inside the AAPL extension and will determine the appearance of the icon representing the Samba server in the Finder window\&.
+.sp
+The default is
+\fIMacSamba\fR\&.
+.RE
+.SH "OPTIONS"
+.PP
+The following options can be set either in the global smb\&.conf section or per share\&.
+.PP
+fruit:resource = [ file | xattr | stream ]
+.RS 4
+Controls where the OS X resource fork is stored\&.
+.sp
+Due to a spelling bug in all Samba versions older then 4\&.6\&.0, this option can also be given as
+\fIfruit:ressource\fR, ie with two s\&.
+.sp
+Settings:
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+file (default)
+\- use a \&._ AppleDouble file compatible with OS X and Netatalk
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+xattr
+\- use a xattr, requires a filesystem with large xattr support and a file IO API compatible with xattrs, this boils down to Solaris and derived platforms and ZFS
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+stream (experimental)
+\- pass the stream on to the next module in the VFS stack\&.
+\fIWarning: \fR
+this option should not be used with the
+\fIstreams_xattr\fR
+module due to the extended attributes size limitations of most filesystems\&.
+.RE
+.sp
+.RE
+.RE
+.PP
+fruit:time machine = [ yes | no ]
+.RS 4
+Controls if Time Machine support via the FULLSYNC volume capability is advertised to clients\&.
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+yes
+\- Enables Time Machine support for this share\&. Also registers the share with mDNS in case Samba is built with mDNS support\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+no (default)
+Disables advertising Time Machine support\&.
+.RE
+.sp
+.RE
+This option enforces the following settings per share (or for all shares if enabled globally):
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+durable handles = yes
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+kernel oplocks = no
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+kernel share modes = no
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+posix locking = no
+.RE
+.sp
+.RE
+.RE
+.PP
+fruit:time machine max size = SIZE [K|M|G|T|P]
+.RS 4
+Useful for Time Machine: limits the reported disksize, thus preventing Time Machine from using the whole real disk space for backup\&. The option takes a number plus an optional unit\&.
+.sp
+\fIIMPORTANT\fR: This is an approximated calculation that only takes into account the contents of Time Machine sparsebundle images\&. Therefore you
+\fIMUST NOT\fR
+use this volume to store other content when using this option, because it would NOT be accounted\&.
+.sp
+The calculation works by reading the band size from the Info\&.plist XML file of the sparsebundle, reading the bands/ directory counting the number of band files, and then multiplying one with the other\&.
+.RE
+.PP
+fruit:metadata = [ stream | netatalk ]
+.RS 4
+Controls where the OS X metadata stream is stored:
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+netatalk (default)
+\- use Netatalk compatible xattr
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+stream
+\- pass the stream on to the next module in the VFS stack
+.RE
+.sp
+.RE
+.RE
+.PP
+fruit:locking = [ netatalk | none ]
+.RS 4
+
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+none (default)
+\- no cross protocol locking
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+netatalk
+\- use cross protocol locking with Netatalk
+.RE
+.sp
+.RE
+.RE
+.PP
+fruit:encoding = [ native | private ]
+.RS 4
+Controls how the set of illegal NTFS ASCII character, commonly used by OS X clients, are stored in the filesystem\&.
+.sp
+\fIImportant:\fR
+this is known to not fully work with
+\fIfruit:metadata=stream\fR
+or
+\fIfruit:resource=stream\fR\&.
+.RS
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+private (default)
+\- store characters as encoded by the OS X client: mapped to the Unicode private range
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+native
+\- store characters with their native ASCII value\&.
+\fIImportant\fR: this option requires the use of
+\fIvfs_catia\fR
+in the VFS module stack as shown in the examples section\&.
+.RE
+.sp
+.RE
+.RE
+.PP
+fruit:veto_appledouble = yes | no
+.RS 4
+\fINote:\fR
+this option only applies when
+\fIfruit:resource\fR
+is set to
+\fIfile\fR
+(the default)\&.
+.sp
+When
+\fIfruit:resource\fR
+is set to
+\fIfile\fR, vfs_fruit may create \&._ AppleDouble files\&. This options controls whether these \&._ AppleDouble files are vetoed which prevents the client from accessing them\&.
+.sp
+Vetoing \&._ files may break some applications, e\&.g\&. extracting Mac ZIP archives from Mac clients fails, because they contain \&._ files\&.
+rsync
+will also be unable to sync files beginning with underscores, as the temporary files it uses for these will start with \&._ and so cannot be created\&.
+.sp
+Setting this option to false will fix this, but the abstraction leak of exposing the internally created \&._ files may have other unknown side effects\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.PP
+fruit:posix_rename = yes | no
+.RS 4
+Whether to enable POSIX directory rename behaviour for OS X clients\&. Without this, directories can\*(Aqt be renamed if any client has any file inside it (recursive!) open\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.PP
+readdir_attr:aapl_rsize = yes | no
+.RS 4
+Return resource fork size in SMB2 FIND responses\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.PP
+readdir_attr:aapl_finder_info = yes | no
+.RS 4
+Return FinderInfo in SMB2 FIND responses\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.PP
+readdir_attr:aapl_max_access = yes | no
+.RS 4
+Return the user\*(Aqs effective maximum permissions in SMB2 FIND responses\&. This is an expensive computation, setting this to off pretends the use has maximum effective permissions\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.PP
+fruit:wipe_intentionally_left_blank_rfork = yes | no
+.RS 4
+Whether to wipe Resource Fork data that matches the special 286 bytes sized placeholder blob that macOS client create on occasion\&. The blob contains a string
+\(lqThis resource fork intentionally left blank\(rq, the remaining bytes being mostly zero\&. There being no one use of this data, it is probably safe to discard it\&. When this option is enabled, this module truncates the Resource Fork stream to 0 bytes\&.
+.sp
+The default is
+\fIno\fR\&.
+.RE
+.PP
+fruit:delete_empty_adfiles = yes | no
+.RS 4
+Whether to delete empty AppleDouble files\&. Empty means that the resource fork entry in the AppleDouble files is of size 0, or the size is exactly 286 bytes and the content matches a special boilerplate resource fork created my macOS\&.
+.sp
+The default is
+\fIno\fR\&.
+.RE
+.PP
+fruit:zero_file_id = yes | no
+.RS 4
+Whether to return zero to queries of on\-disk file identifier if the client has negotiated AAPL\&.
+.sp
+Mac applications and / or the Mac SMB client code expect the on\-disk file identifier to have the semantics of HFS+ Catalog Node Identifier (CNID)\&. Samba provides File\-IDs based on a file\*(Aqs inode number which gets recycled across file creation and deletion and can therefore not be used for Mac client\&. Returning a file identifier of zero causes the Mac client to stop using and trusting the file id returned from the server\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.PP
+fruit:convert_adouble = yes | no
+.RS 4
+Whether an attempt shall be made to convert \&._ AppleDouble sidecar files to native streams (xattrs when using vfs_streams_xattr)\&. The main use case for this conversion is transparent migration from a server config without streams support where the macOS client created those AppleDouble sidecar files\&.
+.sp
+The default is
+\fIyes\fR\&.
+.RE
+.SH "EXAMPLES"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ \fI[share]\fR
+ \m[blue]\fBvfs objects = catia fruit streams_xattr\fR\m[]
+ \m[blue]\fBfruit:resource = file\fR\m[]
+ \m[blue]\fBfruit:metadata = netatalk\fR\m[]
+ \m[blue]\fBfruit:locking = netatalk\fR\m[]
+ \m[blue]\fBfruit:encoding = native\fR\m[]
+.fi
+.if n \{\
+.RE
+.\}
+.SH "AUTHOR"
+.PP
+The original Samba software and related utilities were created by Andrew Tridgell\&. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed\&.