title: vfs_fileid(8)

text:
# vfs_fileid(8)

## NAME
vfs_fileid - Generates file_id structs with unique device id values for cluster setups. It also adds ways to deliberately break lock coherency for specific inodes

## SYNOPSIS
vfs objects = fileid

## DESCRIPTION
This VFS module is part of the samba(7) suite.

Samba uses file_id structs to uniquely identify files for locking purpose. By default the file_id contains the device and inode number returned by the stat() system call. As the file_id is a unique identifier of a file, it must be the same on all nodes in a cluster setup. This module overloads the SMB_VFS_FILE_ID_CREATE() operation and generates the device number based on the configured algorithm (see the "fileid:algorithm" option).

When using the fsname or fsid algorithm a stat() and statfs() call is required for all mounted file systems to generate the file_id. If e.g. an NFS file system is unresponsive such a call might block and the smbd process will become unresponsive. Use the "fileid:fstype deny", "fileid:fstype allow", "fileid:mntdir deny", or "fileid:mntdir allow" options to ignore potentially unresponsive file systems.

## OPTIONS
fileid:algorithm = ALGORITHM

Available algorithms are fsname, fsid, next_module. The default value is fsname. As well as the following legacy algorithms: fsname_nodirs, fsname_norootdir, fsname_norootdir_ext and hostname. The fsname algorithm generates device id by hashing the kernel device name.

The fsid algorithm generates the device id from the f_fsid returned from the statfs() syscall.

The next_module algorithm lets the next vfs module in the module chain generate the id. This is mainly used in combination with the various 'nolock' features the fileid module provides.

The legacy hostname algorithm generates unique devid by hashing the hostname and low level device id. It also implies fileid:nolock_all_inodes=yes. This can be used to deliberately break lock coherency in a cluster and with fileid:nolock_max_slots also between local processes within a node. NOTE: Do not use this without knowing what you are doing! It breaks SMB semantics and it can lead to data corruption! This implies fileid:nolock_all_inodes=yes.

The legacy fsname_nodirs algorithm is an alias for using the fsname algorithm together with fileid:nolock_all_dirs=yes. NOTE: Do not use this without knowing what you are doing! It breaks SMB semantics! See fileid:nolock_paths for a more fine grained approach.

The legacy fsname_norootdir algorithm is an alias for using the fsname algorithm together with fileid:nolock_paths= “.”. It means this can be used to deliberately break lock coherency in a cluster for the root directory of a share.

The legacy fsname_norootdir_ext algorithm is an alias for using the fsname algorithm together with fileid:nolock_paths= “.” and fileid:nolock_max_slots = 18446744073709551615. It means this can be used to deliberately break lock coherency completely for the root directory of a share. Even local processes are no longer lock coherent.

fileid:mapping = ALGORITHM

This option is the legacy version of the fileid:algorithm option, which was used in earlier versions of fileid mapping feature in custom Samba 3.0 versions.

fileid:fstype deny = LIST

List of file system types to be ignored for file_id generation.

fileid:fstype allow = LIST

List of file system types to be allowed for file_id generation. If this option is set, file system types not listed here are ignored.

fileid:mntdir deny = LIST

List of file system mount points to be ignored for file_id generation.

fileid:mntdir allow = LIST

List of file system mount points to be allowed for file_id generation. If this option is set, file system mount points not listed here are ignored.

fileid:nolock_max_slots = NUMBER(1-18446744073709551615)

This option alters the behavior of the nolock algorithm in a way that it also breaks the lock coherency between individual processes on the same host. The default is to have just 1 concurrent slot available per host. By increasing the number of slots you can specify how many concurrent processes can work on a given inode without contention, the number should typically be larger than the number of logical cpus, maybe 2 times num_cpus.

fileid:nolock_all_dirs = BOOL

This option triggers the use of the fileid nolock behavior for all directory inodes, which can be used to deliberately break the lock coherency for all directories. NOTE: Do not use this without knowing what you are doing! It breaks SMB semantics! See fileid:nolock_paths for a more fine grained approach.

fileid:nolock_all_inodes = BOOL

This option triggers the use of the fileid nolock algorithm for all directoriy inode, which can be used to deliberately break the lock coherency for all directories. NOTE: Do not use this without knowing what you are doing! It breaks SMB semantics and it can lead to data corruption! See fileid:nolock_paths for a more fine grained approach.

fileid:nolock_paths = LIST

This option specifies a path list referring to files and/or directories, which should use fileid nolock algorithm in order to deliberately break the lock coherency for them. The specified paths can be relative to the share root directory or absolute. The names are case sensitive unix pathnames! Note all paths are only evaluated at tree connect time, when the share is being connected, from there on only the related device and inode numbers from the stat() syscall are compared. Non existing paths will generate a log level 0 message. NOTE: This option should be used with care as it breaks SMB semantics! But it may help in situation where a specific (commonly read-only) inode is highly contended.

fileid:nolockinode = NUMBER

This legacy option triggers use of the fileid nolock behavior for the configured inode, while ignoring and device id. This can be used to deliberately break lock coherency for the corresponding file or directory in a cluster. Using the fileid:nolock_paths option is much more flexible and simpler to use.

## EXAMPLES
Usage of the fileid module with the fsid algorithm:

```
        [global]
	vfs objects = fileid
	fileid:algorithm = fsid
```

Usage of the fileid module in order avoid load on heavily contended (most likely read-only) inodes.

```
        [global]
	vfs objects = fileid
	fileid:algorithm = next_module
	fileid:nolock_paths = . ContendedFolder1 /path/to/contended.exe
	fileid:nolock_max_slots = 256
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


package: samba-common

title: vfs_fruit(8)

text:
# vfs_fruit(8)

## NAME
vfs_fruit - Enhanced OS X and Netatalk interoperability

## SYNOPSIS
vfs objects = fruit

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_fruit module provides enhanced compatibility with Apple SMB clients and interoperability with a Netatalk 3 AFP fileserver.

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.

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.

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.

Having shares with ADS support enabled for OS X client is worthwhile because it resembles the behaviour of Apple's own SMB server implementation and it avoids certain severe performance degradations caused by Samba's case sensitivity semantics.

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.

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.

Finally, share access modes are optionally checked against Netatalk AFP sharing modes by setting fruit:locking = netatalk.

This module is not stackable other than described in this manpage.

## GLOBAL OPTIONS
The following options must be set in the global smb.conf section and won't take effect when set per share.

fruit:aapl = yes | no

A global option whether to enable Apple's SMB2+ extension codenamed AAPL. Default yes. This extension enhances several deficiencies when connecting from Macs:

•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't need to fetch this metadata individually per directory entry resulting in an often tremendous performance increase.

•The ability to query and modify the UNIX mode of directory entries.

There's a set of per share options that come into play when fruit:aapl 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:

•readdir_attr:aapl_rsize = yes | no

•readdir_attr:aapl_finder_info = yes | no

•readdir_attr:aapl_max_access = yes | no

See below for a description of these options.

fruit:nfs_aces = yes | no

A global option whether support for querying and modifying the UNIX mode of directory entries via NFS ACEs is enabled, default yes.

fruit:copyfile = yes | no

A global option whether to enable OS X specific copychunk ioctl that requests a copy of a whole file along with all attached metadata. WARNING: the copyfile request is blocking the client while the server does the copy.

The default is no.

fruit:model = MacSamba

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. The default is MacSamba.

## OPTIONS
The following options can be set either in the global smb.conf section or per share.

fruit:resource = [ file | xattr | stream ]

Controls where the OS X resource fork is stored. Due to a spelling bug in all Samba versions older than 4.6.0, this option can also be given as fruit:ressource, ie with two s.

Settings:

•file (default) - use a ._ AppleDouble file compatible with OS X and Netatalk

•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

•stream (experimental) - pass the stream on to the next module in the VFS stack. Warning: this option should not be used with the streams_xattr module due to the extended attributes size limitations of most filesystems.

fruit:time machine = [ yes | no ]

Controls if Time Machine support via the FULLSYNC volume capability is advertised to clients.

•yes - Enables Time Machine support for this share. Also registers the share with mDNS in case Samba is built with mDNS support.

•no (default) Disables advertising Time Machine support.

This option enforces the following settings per share (or for all shares if enabled globally):

•durable handles = yes

•kernel oplocks = no

•kernel share modes = no

•posix locking = no

fruit:time machine max size = SIZE [K|M|G|T|P]

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. IMPORTANT: This is an approximated calculation that only takes into account the contents of Time Machine sparsebundle images. Therefore you MUST NOT use this volume to store other content when using this option, because it would NOT be accounted.

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.

fruit:metadata = [ stream | netatalk ]

Controls where the OS X metadata stream is stored:

•netatalk (default) - use Netatalk compatible xattr

•stream - pass the stream on to the next module in the VFS stack

fruit:locking = [ netatalk | none ]

•none (default) - no cross protocol locking

•netatalk - use cross protocol locking with Netatalk

fruit:encoding = [ native | private ]

Controls how the set of illegal NTFS ASCII character, commonly used by OS X clients, are stored in the filesystem. Important: this is known to not fully work with fruit:metadata=stream or fruit:resource=stream.

•private (default) - store characters as encoded by the OS X client: mapped to the Unicode private range

•native - store characters with their native ASCII value. Important: this option requires the use of vfs_catia in the VFS module stack as shown in the examples section.

fruit:veto_appledouble = yes | no

Note: this option only applies when fruit:resource is set to file (the default). When fruit:resource is set to file, vfs_fruit may create ._ AppleDouble files. This options controls whether these ._ AppleDouble files are vetoed which prevents the client from accessing them.

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.

Setting this option to false will fix this, but the abstraction leak of exposing the internally created ._ files may have other unknown side effects.

The default is yes.

fruit:posix_rename = yes | no

Whether to enable POSIX directory rename behaviour for OS X clients. Without this, directories can't be renamed if any client has any file inside it (recursive!) open. The default is yes.

readdir_attr:aapl_rsize = yes | no

Return resource fork size in SMB2 FIND responses. The default is yes.

readdir_attr:aapl_finder_info = yes | no

Return FinderInfo in SMB2 FIND responses. The default is yes.

readdir_attr:aapl_max_access = yes | no

Return the user's effective maximum permissions in SMB2 FIND responses. This is an expensive computation, setting this to off pretends the use has maximum effective permissions. The default is yes.

fruit:wipe_intentionally_left_blank_rfork = yes | no

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 “This resource fork intentionally left blank”, 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. The default is no.

fruit:delete_empty_adfiles = yes | no

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. The default is no.

fruit:zero_file_id = yes | no

Whether to return zero to queries of on-disk file identifier if the client has negotiated AAPL. 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's 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.

The default is yes.

fruit:convert_adouble = yes | no

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. The default is yes.

fruit:validate_afpinfo = yes | no

Apple clients use the AFP_AfpInfo stream to store structured file metadata. As part of the marshaled data stored in the stream the first eight bytes contain some header information. Apple's SMB server as well as Samba will validate this header bytes processing a client write request on this stream, and, if the validation fails, fail the write. While this validation is generally correct, in some data migration scenarios clients may try to migrate data from 3rd-party SMB servers to Samba servers where the header information is broken for whatever reason. To allow migration and header fix-up in these scenarios, the validation can be temporarily disabled by setting this option to no. The default is yes.

## EXAMPLES

```
        [share]
	vfs objects = catia fruit streams_xattr
	fruit:resource = file
	fruit:metadata = netatalk
	fruit:locking = netatalk
	fruit:encoding = native
```

## AUTHOR
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.


title: vfs_full_audit(8)

text:
# vfs_full_audit(8)

## NAME
vfs_full_audit - record Samba VFS operations in the system log

## SYNOPSIS
vfs objects = full_audit

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_full_audit VFS module records selected client operations to the system log using syslog(3).

vfs_full_audit is able to record the complete set of Samba VFS operations:

aio_force

audit_file

brl_lock_windows

brl_unlock_windows

chdir

close

closedir

connect

connectpath

create_dfs_pathat

create_file

disconnect

disk_free

durable_cookie

durable_disconnect

durable_reconnect

fallocate

fchflags

fchmod

fchown

fcntl

fdopendir

fget_compression

fget_dos_attributes

fget_nt_acl

fgetxattr

file_id_create

filesystem_sharemode

flistxattr

fntimes

freaddir_attr

fremovexattr

fs_capabilities

fsctl

fset_dos_attributes

fset_nt_acl

fsetxattr

fs_file_id

fstat

fstatat

fstreaminfo

fsync_recv

fsync_send

ftruncate

get_alloc_size

get_dfs_referrals

get_dos_attributes_recv

get_dos_attributes_send

getlock

get_quota

get_real_filename

get_real_filename_at

get_shadow_copy_data

getwd

getxattrat_recv

getxattrat_send

is_offline

lchown

linkat

linux_setlease

lock

lseek

lstat

mkdirat

mknodat

ntimes

offload_read_recv

offload_read_send

offload_write_recv

offload_write_send

open

openat

parent_pathname

pread

pread_recv

pread_send

pwrite

pwrite_recv

pwrite_send

read

read_dfs_pathat

readdir

readlinkat

realpath

recvfile

removexattr

renameat

rewinddir

sendfile

set_compression

set_offline

set_quota

snap_check_path

snap_create

snap_delete

stat

statvfs

strict_lock_check

symlinkat

sys_acl_blob_get_fd

sys_acl_delete_def_fd

sys_acl_get_fd

sys_acl_set_fd

translate_name

unlinkat

write

In addition to these operations, vfs_full_audit recognizes the special operation names "all" and "none ", which refer to all the VFS operations and none of the VFS operations respectively.

If an unknown operation name is used (for example an operation name is miss-spelled), the module will fail to load and clients will be refused connections to a share using this module.

vfs_full_audit records operations in fixed format consisting of fields separated by '|' characters. The format is:

```
		smbd_audit: PREFIX|OPERATION|RESULT|FILE

```

The record fields are:

•PREFIX - the result of the full_audit:prefix string after variable substitutions

•OPERATION - the name of the VFS operation

•RESULT - whether the operation succeeded or failed

•FILE - the name of the file or directory the operation was performed on

This module is stackable.

## OPTIONS
full_audit:prefix = STRING

Prepend audit messages with STRING. STRING is processed for standard substitution variables listed in smb.conf(5). The default prefix is "%u|%I".

full_audit:success = LIST

LIST is a list of VFS operations that should be recorded if they succeed. Operations are specified using the names listed above. Operations can be unset by prefixing the names with "!". The default is none operations.

full_audit:failure = LIST

LIST is a list of VFS operations that should be recorded if they failed. Operations are specified using the names listed above. Operations can be unset by prefixing the names with "!". The default is none operations.

full_audit:facility = FACILITY

Log messages to the named syslog(3) facility.

full_audit:priority = PRIORITY

Log messages with the named syslog(3) priority.

full_audit:syslog = true/false

Log messages to syslog (default) or as a debug level 1 message.

full_audit:log_secdesc = true/false

Log an sddl form of the security descriptor coming in when a client sets an acl. Defaults to false.

## EXAMPLES
Log file and directory open operations on the [records] share using the LOCAL7 facility and ALERT priority, including the username and IP address. Logging excludes the open VFS function on failures:

```
        [records]
	path = /data/records
	vfs objects = full_audit
	full_audit:prefix = %u|%I
	full_audit:success = open opendir
	full_audit:failure = all !open
	full_audit:facility = LOCAL7
	full_audit:priority = ALERT
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_glusterfs_fuse(8)

summary: Utilize features provided by GlusterFS

text:
# vfs_glusterfs_fuse(8)

## NAME
vfs_glusterfs_fuse - Utilize features provided by GlusterFS

## SYNOPSIS
vfs objects = glusterfs_fuse

## DESCRIPTION
This VFS module is part of the samba(8) suite.

GlusterFS (http://www.gluster.org) is an Open Source clustered file system capable of scaling to several peta-bytes. With its FUSE based native client, GlusterFS is available as a POSIX compliant file system and can hence be shared by Samba without additional steps.

The vfs_glusterfs_fuse VFS module provides an enhanced way to access a Gluster filesystem using a Gluster FUSE mount. It provides support for the get_real_filename VFS call which enhances file access performance by avoiding multiple expensive case folding lookup calls to detect the appropriate case of an existing filename.

Furthermore, this module implements a substitute file-id mechanism. The default file-id mechanism is not working correctly for gluster fuse mount re-exports, so in order to avoid data loss, users exporting gluster fuse mounts with Samba should enable this module.

This module can be combined with other modules, but it should be the last module in the vfs objects list. Modules added to this list to the right of the glusterfs entry may not have any effect at all.

## CONFIGURATION
A basic configuration looks like this.

```
		[share]
		vfs objects = glusterfs_fuse
		path = /absolute/path_of_fusemount

```

Note that vfs_glusterfs_fuse requires a Gluster mount. For accessing glusterfs directly over the GFAPI library please use the vfs_glusterfs module.

## OPTIONS
This module does currently have no further options.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_gpfs(8)

text:
# vfs_gpfs(8)

## NAME
vfs_gpfs - gpfs specific samba extensions like acls

## SYNOPSIS
vfs objects = gpfs

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The gpfs VFS module is the home for all gpfs extensions that Samba requires for proper integration with GPFS. It uses the GPL library interfaces provided by GPFS.

Currently the gpfs vfs module provides extensions in following areas :

•NFSv4 ACL Interfaces with configurable options for GPFS

•Kernel oplock support on GPFS

•Lease support on GPFS

NOTE: This module follows the posix-acl behaviour and hence allows permission stealing via chown. Samba might allow at a later point in time, to restrict the chown via this module as such restrictions are the responsibility of the underlying filesystem than of Samba.

This module makes use of the smb.conf parameter acl map full control. When set to yes (the default), this parameter will add in the FILE_DELETE_CHILD bit on a returned ACE entry for a file (not a directory) that already contains all file permissions except for FILE_DELETE and FILE_DELETE_CHILD. This can prevent Windows applications that request GENERIC_ALL access from getting ACCESS_DENIED errors when running against a filesystem with NFSv4 compatible ACLs.

This module is stackable.

Since Samba 4.0 all options are per share options.

## OPTIONS
nfs4:mode = [ simple | special ]

Controls substitution of special IDs (OWNER@ and GROUP@) on NFS4 ACLs. The use of mode simple is recommended. In this mode only non inheriting ACL entries for the file owner and group are mapped to special IDs. The following MODEs are understood by the module:

•simple(default) - use OWNER@ and GROUP@ special IDs for non inheriting ACEs only.

•special(deprecated) - use OWNER@ and GROUP@ special IDs in ACEs for all file owner and group ACEs.

nfs4:acedup = [dontcare|reject|ignore|merge]

This parameter configures how Samba handles duplicate ACEs encountered in NFS4 ACLs. They allow creating duplicate ACEs with different bits for same ID, which may confuse the Windows clients. Following is the behaviour of Samba for different values :

•dontcare - copy the ACEs as they come

•reject (deprecated) - stop operation and exit with error on ACL set op

•ignore (deprecated) - don't include the second matching ACE

•merge (default) - bitwise OR the 2 ace.flag fields and 2 ace.mask fields of the 2 duplicate ACEs into 1 ACE

nfs4:chown = [yes|no]

This parameter allows enabling or disabling the chown supported by the underlying filesystem. This parameter should be enabled with care as it might leave your system insecure. Some filesystems allow chown as a) giving b) stealing. It is the latter that is considered a risk.

Following is the behaviour of Samba for different values :

•yes - Enable chown if as supported by the under filesystem

•no (default) - Disable chown

gpfs:sharemodes = [ yes | no ]

Enable/Disable cross node sharemode handling for GPFS.

•yes(default) - propagate sharemodes across all GPFS nodes.

•no - do not propagate sharemodes across all GPFS nodes. This should only be used if the GPFS file system is exclusively exported by Samba. Access by local unix application or NFS exports could lead to corrupted files.

gpfs:leases = [ yes | no ]

Enable/Disable cross node leases (oplocks) for GPFS. You should also set the oplocks and kernel oplocks options to the same value.

•yes(default) - propagate leases across all GPFS nodes.

•no - do not propagate leases across all GPFS nodes. This should only be used if the GPFS file system is exclusively exported by Samba. Access by local unix application or NFS exports could lead to corrupted files.

gpfs:hsm = [ yes | no ]

Enable/Disable announcing if this FS has HSM enabled.

•no(default) - Do not announce HSM.

•yes - Announce HSM.

gpfs:recalls = [ yes | no ]

When this option is set to no, an attempt to open an offline file will be rejected with access denied. This helps preventing recall storms triggered by careless applications like Finder and Explorer.

•yes(default) - Open files that are offline. This will recall the files from HSM.

•no - Reject access to offline files with access denied. This will prevent recalls of files from HSM. Using this setting also requires gpfs:hsm to be set to yes.

gpfs:getrealfilename = [ yes | no ]

Enable/Disable usage of the gpfs_get_realfilename_path() function. This improves the casesensitive wildcard file name access.

•yes(default) - use gpfs_get_realfilename_path().

•no - do not use gpfs_get_realfilename_path(). It seems that gpfs_get_realfilename_path() doesn't work on AIX.

gpfs:winattr = [ yes | no ]

Enable/Disable usage of the windows attributes in GPFS. GPFS is able to store windows file attributes e.g. HIDDEN, READONLY, SYSTEM and others natively. That means Samba doesn't need to map them to permission bits or extended attributes.

•no(default) - do not use GPFS windows attributes.

•yes - use GPFS windows attributes.

gpfs:acl = [ yes | no ]

This option lets Samba use or ignore GPFS ACLs.

•yes(default) - use GPFS ACLs.

•no - do not use GPFS ACLs and pass everything to the next SMB_VFS module.

gpfs:check_fstype = [ yes | no ]

Check for a mounted GPFS file system on access to a SMB share.

•yes(default) - Check that the SMB share path is on a GPFS file system. Share access will be denied when a different file system is found.

•no - skip check for GPFS file system on SMB share path.

gpfs:dfreequota = [ yes | no ]

Adjust reporting of the size and free space of a share according to quotas. If this setting is "yes", a request for size and free space will also evaluate the user quota of the user requesting the data and the group quota of the primary group of the user. Fileset quotas are not queried, since GPFS already provides the option --dfreequota to reflect the fileset quota in the free space query. Please use that option to include fileset quotas in the reported disk space. If any of the soft or hard quota limits has been reached, the free space will be reported as 0. If a quota is in place, but the limits have not been reached, the free space will be reported according to the space left in the quota. If more than one quota applies the free space will be reported as the smallest space left in those quotas. The size of the share will be reported according to the quota usage. If more than one quota applies, the smallest size will be reported for the share size according to these quotas.

•yes - include the quotas when reporting the share size and free space

•no(default) - do not include quotas, simply report the size and free space of the file system

gpfs:settimes = [ yes | no ]

Use the gpfs_set_times API when changing the timestamps of a file or directory. If the GPFS API is not available the old method of using utime and the GPFS winattr call will be used instead.

•yes(default) - Use gpfs_set_times. Fall back to utime and winattr when it is not available.

•no - Do not use gpfs_set_times.

gpfs:clamp_invalid_times = [ yes | no ]

GPFS stores timestamps using 32-bit unsigned integers for the seconds component. When using gpfs:settimes = yes, this module validates times that clients attempt to set are within the supported GPFS range between 0 and UINT32_MAX. If a timestamp is outside of this range, the client request is rejected. To cope with clients setting eg temporary timestamps outside the valid range, this parameter can be used to clamp the client timestamp to the allowed range. Times before Thu Jan 1 12:00:00 AM UTC 1970 (the UNIX epock) are then set to Thu Jan 1 12:00:00 AM UTC 1970, times after Sun Feb 7 06:28:15 AM UTC 2106 will be set to Sun Feb 7 06:28:15 AM UTC 2106.

•no(default) - Fail request with invalid time.

•yes - clamp invalid times to 0 or UINT32_MAX.

gpfs:syncio = [yes|no]

This parameter makes Samba open all files with O_SYNC. This triggers optimizations in GPFS for workloads that heavily share files. Following is the behaviour of Samba for different values:

•yes - Open files with O_SYNC

•no (default) - Open files as normal Samba would do

## EXAMPLES
A GPFS mount can be exported via Samba as follows :

```
        [samba_gpfs_share]
	vfs objects = gpfs
	path = /test/gpfs_mount
	nfs4: mode = special
	nfs4: acedup = merge
```

## CAVEATS
Depending on the version of gpfs, the libgpfs_gpl library or the libgpfs library is needed at runtime by the gpfs VFS module: Starting with gpfs 3.2.1 PTF8, the complete libgpfs is available as open source and libgpfs_gpl does no longer exist. With earlier versions of gpfs, only the libgpfs_gpl library was open source and could be used at run time.

At build time, only the header file gpfs_gpl.h is required, which is a symlink to gpfs.h in gpfs versions newer than 3.2.1 PTF8.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.

The GPFS VFS module was created with contributions from Volker Lendecke and the developers at IBM.

This manpage was created by the IBM FSCC team


title: vfs_linux_xfs_sgid(8)

summary: Workaround XFS sgid bit not inherited

text:
# vfs_linux_xfs_sgid(8)

## NAME
vfs_linux_xfs_sgid - Workaround XFS sgid bit not inherited

## SYNOPSIS
vfs objects = linux_xfs_sgid

## DESCRIPTION
This VFS module is part of the samba(7) suite.

vfs_linux_xfs_sgid is a VFS module to work around an old Linux XFS bug fixed in 3.11: the SGID bit is not inherited during mkdir when a default ACL is set (https://web.archive.org/web/20160320180937/http://oss.sgi.com/bugzilla/show_bug.cgi?id=280 fixed by https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=42c49d7f249c2487f36d3314753d5d8ebcee8249). The vfs_linux_xfs_sgid VFS module will work around this bug by manually setting the SGID bit after a mkdir if the parent directory had the SGID bit set.

This module is stackable.

## EXAMPLES
Add linux_xfs_sgid functionality for [share]:

```
        [share]
	vfs objects = linux_xfs_sgid
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_media_harmony(8)

text:
# vfs_media_harmony(8)

## NAME
vfs_media_harmony - Allow multiple Avid clients to share a network drive.

## SYNOPSIS
vfs objects = media_harmony

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_media_harmony VFS module allows Avid editorial workstations to share a network drive. It does this by:

1.Giving each client their own copy of the Avid msmMMOB.mdb and msmFMID.pmr files and Creating directories.

2.Allowing each client to explicitly control the write time the Avid application sees on Avid media directories.

This module is stackable.

## CONFIGURATION
vfs_media_harmony automatically redirects requests from clients for Avid database files or an Avid Creating directory to a client-specific version of the file. No configuration beyond enabling the module is needed to get this portion of its functionality working.

If Mac and Windows Avid clients will be accessing the same folder, they should be given separate share definitions, with hidden Mac files vetoed on the Windows share. See EXAMPLES.

To allow each client to control when the Avid application refreshes their Avid databases, create files for each client and each Avid media directory with the name [avid_dir_name]_[client_ip_address]_[client_username]. To trigger Avid database refreshes, update the write time on those files. See EXAMPLES.

It is also necessary for the cache locked write times = no option to be set for clients to be able to control their Avid media folder write times.

## EXAMPLES
Enable media_harmony for Mac and Windows clients:

```
        [avid_mac]
	path = /avid
	vfs objects = media_harmony
	cache locked write times = no

        [avid_win]
	path = /avid
	vfs objects = media_harmony
	cache locked write times = no
	veto files = /.DS_Store/._@/.Trash@/.Spotlight@/.hidden/.hotfiles@/.vol/
	delete veto files = yes
```

Create the files that will allow users david and susan to control their own Avid database refreshes:

```
	touch '/avid/OMFI MediaFiles_192.168.1.10_david' \
		'/avid/OMFI MediaFiles_192.168.1.11_susan' \
		'/avid/Avid MediaFiles/MXF/1_192.168.1.10_david' \
		'/avid/Avid MediaFiles/MXF/1_192.168.1.11_susan'
```

Trigger an Avid database refresh for user david:

```
	touch '/avid/OMFI MediaFiles_192.168.1.10_david' \
		'/avid/Avid MediaFiles/MXF/1_192.168.1.10_david'
```

If you have a large number of Avid media folders to manage, you can give each editor a suitably modified version of examples/scripts/vfs/media_harmony/trigger_avid_update.py to create and update these files.

## CAVEATS
vfs_media_harmony is designed to work with Avid editing applications that look in the Avid MediaFiles or OMFI MediaFiles directories for media. It is not designed to work as expected in all circumstances for general use. For example: It is possible to open a client-specific file such as msmMMOB.mdb_192.168.1.10_userx even though it doesn't show up in a directory listing.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_offline(8)

summary: Mark all files as offline

text:
# vfs_offline(8)

## NAME
vfs_offline - Mark all files as offline

## SYNOPSIS
vfs objects = offline

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_offline module marks all files in the share as having the offline DOS attribute.

Files with the offline DOS attribute are handled differently by the Windows SMB client, as well as by Windows Explorer. In particular, Windows Explorer does not read those files for the sole purpose of drawing a thumbnail, as it normally does. This can improve user experience with some remote file systems.

## EXAMPLES
Mark all files in a share as offline:

```
        [remote]
	vfs objects = offline
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_preopen(8)

text:
# vfs_preopen(8)

## NAME
vfs_preopen - Hide read latencies for applications reading numbered files

## SYNOPSIS
vfs objects = preopen

## DESCRIPTION
This VFS module is part of the samba(7) suite.

This module assists applications that want to read numbered files in sequence with very strict latency requirements. One area where this happens in video streaming applications that want to read one file per frame.

When you use this module, a number of helper processes is started that speculatively open files and read a number of bytes to prime the file system cache, so that later on when the real application's request comes along, no disk access is necessary.

This module is stackable.

## OPTIONS
preopen:posix-basic-regex = BOOL (default: no)

preopen:posix-basic-regex = yes changes the meaning of the preopen:names option. Further details are described there.

preopen:names = /pattern1/pattern2/

preopen:names specifies the file name pattern(s) which should trigger the preopen helpers to do their work. We assume that the files are numbered incrementally. So if your file names are numbered FRAME00000.frm FRAME00001.frm and so on you would list them as preopen:names=/FRAME*.frm/. The default algorithm uses the first (at least 3) digits it finds in order to calculate the name of the next frames. preopen:posix-basic-regex = yes changes the meaning of the preopen:names option. It means 'POSIX Basic Regular Expression' strings are used as patterns. The key is each pattern requires exactly one 'subexpression' starting with '\(' and ending with '\)' in order to specify the position of the digits representing the incrementing frame numbers. Given a file names like Movie7599Frame0v1234.txt, Movie7599Frame1v1234.txt, Movie7599Frame2v1234.txt up to Movie7599Frame9v1234.txt you can use preopen:names = /.*Frame\([0-9]\).*\.txt/ in order to match just a single digits, this might not be a real world example, but it shows the flexibility that is possible here.

preopen:num_bytes = BYTES

Specifies the number of bytes the helpers should speculatively read, defaults to 1.

preopen:helpers = NUM-PROCS

Number of forked helper processes, defaults to 1.

preopen:queuelen = NUM-FILES

Number of files that should be speculatively opened. Defaults to the 10 subsequent files.

preopen:nomatch_log_level = LOGLEVEL

In order to debug or audit the usage of the preopen logic you can use this option to specify at what log level details about filenames not matching any pattern from 'preopen:names' are logged. Defaults to the log level 5. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

preopen:match_log_level = LOGLEVEL

In order to debug or audit the usage of the preopen logic you can use this option to specify at what log level details about filenames actually matching a pattern from 'preopen:names' are logged. See also 'preopen:founddigits_log_level' and 'preopen:push_log_level'.

Defaults to the log level 5. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

preopen:nodigits_log_level = LOGLEVEL

In order to debug or audit problems with the preopen configuration you can use this option to specify at what log level details about filenames actually matching a pattern from 'preopen:names', but at the same time don't contain the expected digits, are logged. This is typically something the administrator wants to notice and adjust the configuration in order to define more precisely where to find the digits in the filename. Defaults to the log level 1. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

preopen:founddigits_log_level = LOGLEVEL

In order to debug or audit the usage of the preopen logic you can use this option to specify at what log level details about filenames actually matching a pattern from 'preopen:names', and at the same time having valid expected digits, are logged. This means enough information is available in order to queue preopens. Defaults to the log level 3. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

preopen:reset_log_level = LOGLEVEL

If a matching filename belongs to a different pattern from 'preopen:names', a different parent directory or differs in a significant way from the last filename that was found before, the module needs to reset it's internal queue state. This means that no more preopens will be pushed to helper processes belonging to the former queue state. In order to debug or audit such queue resets you can use this option to specify at what log level details are logged. Defaults to the log level 5. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

preopen:push_log_level = LOGLEVEL

In order to debug or audit the usage of the preopen logic you can use this option to specify at what log level details about filenames actually pushed to preopen helper processes are logged. This means they will actually be preopened soon. Defaults to the log level 3. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

preopen:queue_log_level = LOGLEVEL

In order to debug details about internal queue processing you can use this option to specify at what log level the details are logged. Defaults to the log level 10. See also smb.conf(5) in the 'log level' section for special handling of the 'preopen' debug class.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.

The PREOPEN VFS module was created with contributions from Volker Lendecke and the developers at IBM.


title: vfs_readahead(8)

summary: pre\-load the kernel buffer cache

text:
# vfs_readahead(8)

## NAME
vfs_readahead - pre-load the kernel buffer cache

## SYNOPSIS
vfs objects = readahead

## DESCRIPTION
This VFS module is part of the samba(7) suite.

This vfs_readahead VFS module detects read requests at multiples of a given offset (hex 0x80000 by default) and then tells the kernel via either the readahead system call (on Linux) or the posix_fadvise system call to pre-fetch this data into the buffer cache.

This module is useful for Windows Vista clients reading data using the Windows Explorer program, which asynchronously does multiple file read requests at offset boundaries of 0x80000 bytes.

The offset multiple used is given by the readahead:offset option, which defaults to 0x80000.

The size of the disk read operations performed by vfs_readahead is determined by the readahead:length option. By default this is set to the same value as the readahead:offset option and if not set explicitly will use the current value of readahead:offset.

This module is stackable.

## OPTIONS
readahead:offset = BYTES

The offset multiple that causes readahead to be requested of the kernel buffer cache.

readahead:length = BYTES

The number of bytes requested to be read into the kernel buffer cache on each readahead call.

The following suffixes may be applied to BYTES:

•K - BYTES is a number of kilobytes

•M - BYTES is a number of megabytes

•G - BYTES is a number of gigabytes

## EXAMPLES

```
	[hypothetical]
	vfs objects = readahead
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_readonly(8)

text:
# vfs_readonly(8)

## NAME
vfs_readonly - make a Samba share read only for a specified time period

## SYNOPSIS
vfs objects = readonly

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_readonly VFS module marks a share as read only for all clients connecting within the configured time period. Clients connecting during this time will be denied write access to all files in the share, irrespective of their actual access privileges.

This module is stackable.

## OPTIONS
readonly:period = BEGIN, END

Only mark the share as read only if the client connection was made between the times marked by the BEGIN and END date specifiers. The syntax of these date specifiers is the same as that accepted by the -d option of GNU date(1).

## EXAMPLES
Mark all shares read only:

```
        [global]
	vfs objects = readonly
```

Mark the [backup] share as read only during business hours:

```
        [backup]
	path = /readonly
	vfs objects = readonly
	readonly:period = readonly:period = "today 9:00","today 17:00"
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_recycle(8)

summary: Samba VFS recycle bin

text:
# vfs_recycle(8)

## NAME
vfs_recycle - Samba VFS recycle bin

## SYNOPSIS
vfs objects = recycle

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_recycle intercepts file deletion requests and moves the affected files to a temporary repository rather than deleting them immediately. This gives the same effect as the Recycle Bin on Windows computers.

The Recycle Bin will not appear in Windows Explorer views of the network file system (share) nor on any mapped drive. Instead, a directory called .recycle will be automatically created when the first file is deleted and recycle:repository is not configured. If recycle:repository is configured, the name of the created directory depends on recycle:repository. Users can recover files from the recycle bin. If the recycle:keeptree option has been specified, deleted files will be found in a path identical with that from which the file was deleted.

This module is stackable.

## OPTIONS
recycle:repository = PATH

Path of the directory where deleted files should be moved. If this option is not set, the default path .recycle is used.

recycle:directory_mode = MODE

Set MODE to the octal mode the recycle repository should be created with. The recycle repository will be created when first file is deleted. If recycle:subdir_mode is not set, MODE also applies to subdirectories. If this option is not set, the default mode 0700 is used.

recycle:subdir_mode = MODE

Set MODE to the octal mode with which sub directories of the recycle repository should be created. If this option is not set, subdirectories will be created with the mode from recycle:directory_mode.

recycle:keeptree = BOOL

Specifies whether the directory structure should be preserved or whether the files in a directory that is being deleted should be kept separately in the repository.

recycle:versions = BOOL

If this option is True, two files with the same name that are deleted will both be kept in the repository. Newer deleted versions of a file will be called "Copy #x of filename".

recycle:touch = BOOL

Specifies whether a file's access date should be updated when the file is moved to the repository.

recycle:touch_mtime = BOOL

Specifies whether a file's last modified date should be updated when the file is moved to the repository.

recycle:minsize = BYTES

Files that are smaller than the number of bytes specified by this parameter will not be put into the repository.

recycle:maxsize = BYTES

Files that are larger than the number of bytes specified by this parameter will not be put into the repository.

recycle:exclude = LIST

List of files that should not be put into the repository when deleted, but deleted in the normal way. Wildcards such as * and ? are supported.

recycle:exclude_dir = LIST

List of directories whose files should not be put into the repository when deleted, but deleted in the normal way. Wildcards such as * and ? are supported.

recycle:noversions = LIST

Specifies a list of paths (wildcards such as * and ? are supported) for which no versioning should be used. Only useful when recycle:versions is enabled.

## EXAMPLES
Move files "deleted" on share to /data/share/.recycle instead of deleting them:

```
        [share]
	path = /data/share
	vfs objects = recycle
	recycle:repository = .recycle
	recycle:keeptree = yes
	recycle:versions = yes
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_shadow_copy(8)

text:
# vfs_shadow_copy(8)

## NAME
vfs_shadow_copy - Expose snapshots to Windows clients as shadow copies.

## SYNOPSIS
vfs objects = shadow_copy

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_shadow_copy VFS module functionality that is similar to Microsoft Shadow Copy services. When setup properly, this module allows Microsoft Shadow Copy clients to browse "shadow copies" on Samba shares.

This module is stackable.

## CONFIGURATION
vfs_shadow_copy relies on a filesystem snapshot implementation. Many common filesystems have native support for this.

Filesystem snapshots must be mounted on specially named directories in order to be recognized by vfs_shadow_copy. The snapshot mount points must be immediate children of the directory being shared.

The snapshot naming convention is @GMT-YYYY.MM.DD-hh.mm.ss, where:

•YYYY is the 4 digit year

•MM is the 2 digit month

•DD is the 2 digit day

•hh is the 2 digit hour

•mm is the 2 digit minute

•ss is the 2 digit second.

The vfs_shadow_copy snapshot naming convention can be produced with the following date(1) command:

```
	TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S

```

## EXAMPLES
Add shadow copy support to user home directories:

```
        [homes]
	vfs objects = shadow_copy
```

## CAVEATS
This is not a backup, archival, or version control solution.

With Samba or Windows servers, vfs_shadow_copy is designed to be an end-user tool only. It does not replace or enhance your backup and archival solutions and should in no way be considered as such. Additionally, if you need version control, implement a version control system.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_shadow_copy2(8)

text:
# vfs_shadow_copy2(8)

## NAME
vfs_shadow_copy2 - Expose snapshots to Windows clients as shadow copies.

## SYNOPSIS
vfs objects = shadow_copy2

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_shadow_copy2 VFS module offers a functionality similar to Microsoft Shadow Copy services. When set up properly, this module allows Microsoft Shadow Copy clients to browse through file system snapshots as "shadow copies" on Samba shares.

This is a second implementation of a shadow copy module which has the following additional features (compared to the original shadow_copy(8) module):

1.There is no need any more to populate your share's root directory with symlinks to the snapshots if the file system stores the snapshots elsewhere. Instead, you can flexibly configure the module where to look for the file system snapshots. This can be very important when you have thousands of shares, or use [homes].

2.Snapshot directories need not be in one fixed central place but can be located anywhere in the directory tree. This mode helps to support file systems that offer snapshotting of particular subtrees, for example the GPFS independent file sets.

3.Vanity naming for snapshots: snapshots can be named in any format compatible with str[fp]time conversions.

4.Timestamps can be represented in localtime rather than UTC.

5.The inode number of the files can optionally be altered to be different from the original. This fixes the 'restore' button in the Windows GUI to work without a sharing violation when serving from file systems, like GPFS, that return the same device and inode number for the snapshot file and the original.

6.Shadow copy results are by default sorted before being sent to the client. This is beneficial for filesystems that don't read directories alphabetically (the default unix). Sort ordering can be configured and sorting can be turned off completely if the file system sorts its directory listing.

This module is stackable.

## CONFIGURATION
vfs_shadow_copy2 relies on a filesystem snapshot implementation. Many common filesystems have native support for this.

Filesystem snapshots must be available under specially named directories in order to be recognized by vfs_shadow_copy2. These snapshot directory is typically a direct subdirectory of the share root's mountpoint but there are other modes that can be configured with the parameters described in detail below.

The snapshot at a given point in time is expected in a subdirectory of the snapshot directory where the snapshot's directory is expected to be a formatted version of the snapshot time. The default format which can be changed with the shadow:format option is @GMT-YYYY.MM.DD-hh.mm.ss, where:

•YYYY is the 4 digit year

•MM is the 2 digit month

•DD is the 2 digit day

•hh is the 2 digit hour

•mm is the 2 digit minute

•ss is the 2 digit second.

The vfs_shadow_copy2 snapshot naming convention can be produced with the following date(1) command:

```
	TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S

```

## OPTIONS
shadow:mountpoint = MOUNTPOINT

With this parameter, one can specify the mount point of the filesystem that contains the share path. Usually this mount point is automatically detected. But for some constellations, in particular tests, it can be convenient to be able to specify it. Example: shadow:mountpoint = /path/to/filesystem

Default: shadow:mountpoint = NOT SPECIFIED

shadow:snapdir = SNAPDIR

Path to the directory where the file system of the share keeps its snapshots. If an absolute path is specified, it is used as-is. If a relative path is specified, then it is taken relative to the mount point of the filesystem of the share root. (See shadow:mountpoint.) Note that shadow:snapdirseverywhere depends on this parameter and needs a relative path. Setting an absolute path disables shadow:snapdirseverywhere.

Note that the shadow:crossmountpoints option also requires a relative snapdir. Setting an absolute path disables shadow:crossmountpoints.

Example: shadow:snapdir = /some/absolute/path

Default: shadow:snapdir = .snapshots

shadow:basedir = BASEDIR

The basedir option allows one to specify a directory between the share's mount point and the share root, relative to which the file system's snapshots are taken. For example, if

•basedir = mountpoint/rel_basedir

•share_root = basedir/rel_share_root

•snapshot_path = mountpoint/snapdir or snapshot_path = snapdir if snapdir is absolute

then the snapshot of a file = mountpoint/rel_basedir/rel_share_root/rel_file at a time TIME will be found under snapshot_path/FS_GMT_TOKEN(TIME)/rel_share_root/rel_file, where FS_GMT_TOKEN(TIME) is the timestamp string belonging to TIME in the format required by the file system. (See shadow:format.) The default for the basedir is the mount point of the file system of the share root (see shadow:mountpoint).

Note that the shadow:snapdirseverywhere and shadow:crossmountpoints options are incompatible with shadow:basedir and disable the basedir setting.

shadow:snapsharepath = SNAPSHAREPATH

With this parameter, one can specify the path of the share's root directory in snapshots, relative to the snapshot's root directory. It is an alternative method to shadow:basedir, allowing greater control. For example, if within each snapshot the files of the share have a path/to/share/ prefix, then shadow:snapsharepath can be set to path/to/share.

With this parameter, it is no longer assumed that a snapshot represents an image of the original file system or a portion of it. For example, a system could perform backups of only files contained in shares, and then expose the backup files in a logical structure:

•share1/

•share2/

•.../

Note that the shadow:snapdirseverywhere and the shadow:basedir options are incompatible with shadow:snapsharepath and disable shadow:snapsharepath setting. Example: shadow:snapsharepath = path/to/share

Default: shadow:snapsharepath = NOT SPECIFIED

shadow:sort = asc/desc

By default, this module sorts the shadow copy data alphabetically before sending it to the client. With this parameter, one can specify the sort order. Possible known values are desc (descending, the default) and asc (ascending). If the file system lists directories alphabetically sorted, one can turn off sorting in this module by specifying any other value. Example: shadow:sort = asc

Example: shadow:sort = none

Default: shadow:sort = desc

shadow:localtime = yes/no

This is an optional parameter that indicates whether the snapshot names are in UTC/GMT or in local time. If it is disabled then UTC/GMT is expected. shadow:localtime = no

shadow:format = format specification for snapshot names

This is an optional parameter that specifies the format specification for the naming of snapshots in the file system. The format must be compatible with the conversion specifications recognized by str[fp]time. Default: shadow:format = "@GMT-%Y.%m.%d-%H.%M.%S"

shadow:sscanf = yes/no

This parameter can be used to specify that the time in format string is given as an unsigned long integer (%lu) rather than a time strptime() can parse. The result must be a unix time_t time. Default: shadow:sscanf = no

shadow:fixinodes = yes/no

If you enable shadow:fixinodes then this module will modify the apparent inode number of files in the snapshot directories using a hash of the files path. This is needed for snapshot systems where the snapshots have the same device:inode number as the original files (such as happens with GPFS snapshots). If you don't set this option then the 'restore' button in the shadow copy UI will fail with a sharing violation. Default: shadow:fixinodes = no

shadow:snapdirseverywhere = yes/no

If you enable shadow:snapdirseverywhere then this module will look out for snapshot directories in the current working directory and all parent directories, stopping at the mount point by default. But see shadow:crossmountpoints how to change that behaviour. An example where this is needed are independent filesets in IBM's GPFS, but other filesystems might support snapshotting only particular subtrees of the filesystem as well.

Note that shadow:snapdirseverywhere depends on shadow:snapdir and needs it to be a relative path. Setting an absolute snapdir path disables shadow:snapdirseverywhere.

Note that this option is incompatible with the shadow:basedir option and removes the shadow:basedir setting by itself.

Example: shadow:snapdirseverywhere = yes

Default: shadow:snapdirseverywhere = no

shadow:crossmountpoints = yes/no

This option is effective in the case of shadow:snapdirseverywhere = yes. Setting this option makes the module not stop at the first mount point encountered when looking for snapdirs, but lets it search potentially all through the path instead. An example where this is needed are independent filesets in IBM's GPFS, but other filesystems might support snapshotting only particular subtrees of the filesystem as well.

Note that shadow:crossmountpoints depends on shadow:snapdir and needs it to be a relative path. Setting an absolute snapdir path disables shadow:crossmountpoints.

Note that this option is incompatible with the shadow:basedir option and removes the shadow:basedir setting by itself.

Example: shadow:crossmountpoints = yes

Default: shadow:crossmountpoints = no

shadow:snapprefix

With growing number of snapshots file-systems need some mechanism to differentiate one set of snapshots from other, e.g. monthly, weekly, manual, special events, etc. Therefore these file-systems provide different ways to tag snapshots, e.g. provide a configurable way to name snapshots, which is not just based on time. With only shadow:format it is very difficult to filter these snapshots. With this optional parameter, one can specify a variable prefix component for names of the snapshot directories in the file-system. If this parameter is set, together with the shadow:format and shadow:delimiter parameters it determines the possible names of snapshot directories in the file-system. The option only supports Basic Regular Expression (BRE).

shadow:delimiter

This optional parameter is used as a delimiter between shadow:snapprefix and shadow:format. This parameter is used only when shadow:snapprefix is set. Default: shadow:delimiter = "_GMT"

## EXAMPLES
Add shadow copy support to user home directories:

```
        [homes]
	vfs objects = shadow_copy2
	shadow:snapdir = /data/snapshots
	shadow:basedir = /data/home
	shadow:sort = desc
```

## CAVEATS
This is not a backup, archival, or version control solution.

With Samba or Windows servers, vfs_shadow_copy2 is designed to be an end-user tool only. It does not replace or enhance your backup and archival solutions and should in no way be considered as such. Additionally, if you need version control, implement a version control system.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_shell_snap(8)

text:
# vfs_shell_snap(8)

## NAME
vfs_shell_snap - Shell script callouts for snapshot creation and deletion

## SYNOPSIS
vfs objects = shell_snap

## DESCRIPTION
This VFS module is part of the samba(8) suite.

The vfs_shell_snap VFS provides shell-script callouts for snapshot creation and deletion operations issued by remote clients using the File Server Remote VSS Protocol (FSRVP).

The following shell callouts may be configured in smb.conf:

shell_snap:check path command

•Called when an FSRVP client wishes to check whether a given share supports snapshot create/delete requests.

•The command is called with a single share_path argument.

•The command must return 0 if share_path is capable of being snapshotted.

shell_snap:create command

•Called when an FSRVP client wishes to create a snapshot.

•The command is called with a single share_path argument.

•The command must return 0 status if the snapshot was successfully taken.

•The command must output the path of the newly created snapshot to stdout.

shell_snap:delete command

•Called when an FSRVP client wishes to delete a snapshot.

•The command is called with base_share_path and snapshot_share_path arguments.

•The command must return 0 status if the snapshot was successfully removed.

All commands are executed as the authenticated FSRVP client user. This module is stackable.

## CONFIGURATION

```
		[share]
		vfs objects = shell_snap
		shell_snap:check path command = snap_check_path.sh
		shell_snap:create command = snap_create.sh
		shell_snap:delete command = snap_delete.sh

```

Samba's FSRVP server must be configured in the [global] section:

```
		[global]
		registry shares = yes
		include = registry

```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_streams_depot(8)

text:
# vfs_streams_depot(8)

## NAME
vfs_streams_depot - EXPERIMENTAL module to store alternate data streams in a central directory.

## SYNOPSIS
vfs objects = streams_depot

## DESCRIPTION
This EXPERIMENTAL VFS module is part of the samba(7) suite.

The vfs_streams_depot enables storing of NTFS alternate data streams in the file system. As a normal posix file system does not support the concept of multiple data streams per file, the streams_depot module stores the data in files in a separate directory.

## OPTIONS
streams_depot:directory = PATH

Path of the directory where the alternate data streams should be stored. Defaults to the sharepath/.streams.

streams_depot:delete_lost = [ yes | no ]

In the case of an already existing data streams directory for a newly created file the streams directory will be renamed to "lost-%lu", random(). With this option lost stream directories will be removed instead of renamed.

•no(default) - rename lost streams to "lost-%lu", random().

•yes - remove lost streams.

## EXAMPLES

```
        [share]
	vfs objects = streams_depot
```

## AUTHOR
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.


title: vfs_streams_xattr(8)

text:
# vfs_streams_xattr(8)

## NAME
vfs_streams_xattr - Store alternate data streams in posix xattrs

## SYNOPSIS
vfs objects = streams_xattr

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_streams_xattr enables storing of NTFS alternate data streams in the file system. As a normal posix file system does not support the concept of multiple data streams per file, the streams_xattr module stores the data in posix extended attributes (xattrs). The name of these attributes by default is user.DosStream."ADS-NAME". The prefix "user.DosStream." can be changed with the module option streams_xattr:prefix, but be aware that this will also expose those ADS over the SMB extended attributes interface.

The file system that is shared with this module enabled must support xattrs.

Please note that most file systems have severe limitations on the size of xattrs. So this module might work for applications like IE that stores small zone information in streams but will fail for applications that store serious amounts of data in ADSs.

## OPTIONS
streams_xattr:prefix = STRING

Name prefix used when storing an ADS in an xattr, defaults to user.DosStream.. Changing this will also expose ADS over the SMB extended attributes interface.

streams_xattr:store_stream_type = [yes|no]

Whether the xattr names for Alternate Data Streams of type "$DATA" are suffixed by the stream type string ":$DATA". The default is yes.

## EXAMPLES

```
        [share]
	vfs objects = streams_xattr
```

## AUTHOR
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.


title: vfs_syncops(8)

text:
# vfs_syncops(8)

## NAME
vfs_syncops - Ensure meta data operations are performed synchronously.

## SYNOPSIS
vfs objects = syncops

## DESCRIPTION
This VFS module is part of the samba(7) suite.

Some filesystems (even some journaled filesystems) require that a fsync() be performed on many meta data operations to ensure that the operation is guaranteed to remain in the filesystem after a power failure. This is particularly important for some cluster filesystems which are participating in a node failover system with clustered Samba. On those filesystems the vfs_syncops VFS module provides a way to perform those operations safely.

This module is stackable.

## CONFIGURATION
Most of the performance loss with the vfs_syncops VFS module is in fsync on close(). You can disable that with syncops:onclose = no that can be set either globally or per share.

On certain filesystems that only require the last data written to be fsync()'ed, you can disable the metadata synchronization of this module with syncops:onmeta = no. This option can be set either globally or per share.

The vfs_syncops VFS module can also be disabled completely for a share with syncops:disable = true.

## EXAMPLES
Add syncops functionality for [share]:

```
        [share]
	path = /data/share
	vfs objects = syncops
	syncops:onclose = no
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_time_audit(8)

text:
# vfs_time_audit(8)

## NAME
vfs_time_audit - samba vfs module to log slow VFS operations

## SYNOPSIS
vfs objects = time_audit

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The time_audit VFS module logs system calls that take longer than the number of milliseconds defined by the variable time_audit:timeout. It will log the calls and the time spent in it.

It's kind of comparable with strace -T and is helpful to reveal performance problems with the underlying file and storage subsystems.

This module is stackable.

## OPTIONS
time_audit:timeout = number of milliseconds

VFS calls that take longer than the defined number of milliseconds that should be logged. The default is 10000 (10s).

## EXAMPLES
This would log VFS calls that take longer than 3 seconds:

```
        [sample_share]
	path = /test/sample_share
	vfs objects = time_audit
	time_audit:timeout = 3000
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.

The time_audit VFS module was created with contributions from Abhidnya Chirmule.


title: vfs_unityed_media(8)

text:
# vfs_unityed_media(8)

## NAME
vfs_unityed_media - Allow multiple Avid clients to share a network drive.

## SYNOPSIS
vfs objects = unityed_media

## DESCRIPTION
This VFS module is part of the samba(7) suite.

Unityed Media is related with Media Harmony VFS, the main difference between Unityed Media and Media Harmony is that Unityed Media doesn't need manual refreshing of media directories. Unityed Media handles your media files in a similar way to the way Unity, ISIS, EditShare or another dedicated solution does. Without client-side application and on hardware of your choice.

This module is stackable.

## CONFIGURATION
If Mac and Windows Avid clients will be accessing the same folder, they should be given separate share definitions, with hidden Mac files vetoed on the Windows share. See EXAMPLES.

## OPTIONS
unityed_media:clientid = user | hostname | ip

Controls what client related identifier is appended to user specific paths:

•user (default) - use the username.

•hostname - use the hostname. Note this will not work with OS X clients as these always send a generic string ("workstation") to the server..

•ip - use the client's IP address. NOTE: this is untested and may not work at all.

## EXAMPLES
Enable unityed_media for Mac and Windows clients:

```
        [avid_mac]
	path = /avid
	vfs objects = unityed_media

        [avid_win]
	path = /avid
	vfs objects = unityed_media
	veto files = /.DS_Store/._@/.Trash@/.Spotlight@/.hidden/.hotfiles@/.vol/
	delete veto files = yes
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_virusfilter(8)

summary: On access virus scanner

text:
# vfs_virusfilter(8)

## NAME
vfs_virusfilter - On access virus scanner

## SYNOPSIS
vfs objects = virusfilter

## DESCRIPTION
This is a set of various Samba VFS modules to scan and filter virus files on Samba file services with an anti-virus scanner.

This module is stackable.

## OPTIONS
virusfilter:scanner

The antivirus scan-engine.

•sophos, the Sophos AV scanner

•fsav, the F-Secure AV scanner

•clamav, the ClamAV scanner

•dummy, dummy scanner used in tests. Checks against the infected files parameter and flags any name that matches as infected.

virusfilter:socket path = PATH

Path of local socket for the virus scanner. If this option is not set, the default path depends on the configured AV scanning engine.

For the sophos backend the default is /var/run/savdi/sssp.sock.

For the fsav backend the default is /tmp/.fsav-0.

For the clamav backend the default is /var/run/clamav/clamd.ctl.

virusfilter:connect timeout = 30000

Controls how long to wait on connecting to the virus scanning process before timing out. Value is in milliseconds. If this option is not set, the default is 30000.

virusfilter:io timeout = 60000

Controls how long to wait on communications with the virus scanning process before timing out. Value is in milliseconds. If this option is not set, the default is 60000.

virusfilter:scan on open = yes

This option controls whether files are scanned on open. If this option is not set, the default is yes.

virusfilter:scan on close = no

This option controls whether files are scanned on close. If this option is not set, the default is no.

virusfilter:max file size = 100000000

This is the largest sized file, in bytes, which will be scanned. If this option is not set, the default is 100MB.

virusfilter:min file size = 10

This is the smallest sized file, in bytes, which will be scanned. If this option is not set, the default is 10.

virusfilter:infected file action = nothing

What to do with an infected file. The options are nothing, quarantine, rename, delete. If this option is not set, the default is nothing.

virusfilter:infected file errno on open = EACCES

What errno to return on open if the file is infected. If this option is not set, the default is EACCES.

virusfilter:infected file errno on close = 0

What errno to return on close if the file is infected. If this option is not set, the default is 0.

virusfilter:quarantine directory = PATH

Where to move infected files. This path must be an absolute path. If this option is not set, the default is ".quarantine" relative to the share path.

virusfilter:quarantine prefix = virusfilter.

Prefix for quarantined files. If this option is not set, the default is "virusfilter.".

virusfilter:quarantine suffix = .infected

Suffix for quarantined files. This option is only used if keep name is true. Otherwise it is ignored. If this option is not set, the default is ".infected".

virusfilter:rename prefix = virusfilter.

Prefix for infected files. If this option is not set, the default is "virusfilter.".

virusfilter:rename suffix = .infected

Suffix for infected files. If this option is not set, the default is ".infected".

virusfilter:quarantine keep tree = yes

If keep tree is set, the directory structure relative to the share is maintained in the quarantine directory. If this option is not set, the default is yes.

virusfilter:quarantine keep name = yes

Should the file name be left unmodified other than adding a suffix and/or prefix and a random suffix name as defined in virusfilter:rename prefix and virusfilter:rename suffix. If this option is not set, the default is yes.

virusfilter:infected file command = @SAMBA_DATADIR@/bin/virusfilter-notify --mail-to virusmaster@example.com --cc "%U@example.com" --from samba@example.com --subject-prefix "Samba: Infected File: "

External command to run on an infected file is found. If this option is not set, the default is none.

virusfilter:scan archive = true

This defines whether or not to scan archives. Sophos and F-Secure support this and it defaults to false.

virusfilter:max nested scan archive = 1

This defines the maximum depth to search nested archives. The Sophos and F-Secure support this and it defaults to 1.

virusfilter:scan mime = true

This defines whether or not to scan mime files. Only the fsavscanner supports this option and defaults to false.

virusfilter:scan error command = @SAMBA_DATADIR@/bin/virusfilter-notify --mail-to virusmaster@example.com --from samba@example.com --subject-prefix "Samba: Scan Error: "

External command to run on scan error. If this option is not set, the default is none.

virusfilter:exclude files = empty

Files to exclude from scanning. If this option is not set, the default is empty.

virusfilter:infected files = empty

Files that virusfilter dummy flags as infected. If this option is not set, the default is empty.

virusfilter:block access on error = false

Controls whether or not access should be blocked on a scanning error. If this option is not set, the default is false.

virusfilter:scan error errno on open = EACCES

What errno to return on open if there is an error in scanning the file and block access on error is true. If this option is not set, the default is EACCES.

virusfilter:scan error errno on close = 0

What errno to return on close if there is an error in scanning the file and block access on error is true. If this option is not set, the default is 0.

virusfilter:cache entry limit = 100

The maximum number of entries in the scanning results cache. Due to how Samba's memcache works, this is approximate. If this option is not set, the default is 100.

virusfilter:cache time limit = 10

The maximum number of seconds that a scanning result will stay in the results cache. -1 disables the limit. 0 disables caching. If this option is not set, the default is 10.

virusfilter:quarantine directory mode = 0755

This is the octet mode for the quarantine directory and its sub-directories as they are created. If this option is not set, the default is 0755 or S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH.

Permissions must be such that all users can read and search. I.E. don't mess with this unless you really know what you are doing.

virusfilter:block suspected file = false

With this option on, suspected malware will be blocked as well. Only the fsavscanner supports this option. If this option is not set, the default is false.

## NOTES
This module can scan other than default streams, if the alternative datastreams are each backed as separate files, such as with the vfs module streams_depot.

For proper operation the streams support module must be before the virusfilter module in your vfs objects list (i.e. streams_depot must be called before virusfilter module).

This module is intended for security in depth by providing virus scanning capability on the server. It is not intended to be used in lieu of proper client based security. Other modules for security may exist and may be desirable for security in depth on the server.

## AUTHOR
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.


title: vfs_widelinks(8)

text:
# vfs_widelinks(8)

## NAME
vfs_widelinks - make a Samba share ignore filesystem symbolic links inside a share

## SYNOPSIS
vfs objects = widelinks

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_widelinks VFS module hides the existence of symbolic links in the filesystem inside a share. It is used in Samba version 4.13 and above to implement the smb.conf"wide links = yes" functionality that used to be inside the core smbd code. The module should not be loaded explicitly by smb.conf as part of the "vfs objects =" parameter, but is loaded implicitly when "wide links = yes" is enabled. This is to prevent existing smb.conf files from having to be modified to keep the existing insecure "wide links" functionality on a share.

Please note that "wide links = yes" functionality is a deliberately insecure option, and should never be used in Samba installations. On Linux, bind mounts can be used instead to implement anything "wide links = yes" can enable. This module has been created to provide backwards compatibility with existing users of "wide links = yes" installations, but this use cannot be recommended and is not endorsed by the Samba developers.

Note that this implicit loading may become explicit in a later Samba release, and administrators wishing to keep the insecure "wide links" functionality may have to add this module into their "vfs objects =" module list. The Samba project release notes and this manpage will be updated to reflect this when this change is made.

This module is stackable.

## EXAMPLES
No examples listed. This module is implicitly loaded by smbd as needed.

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_worm(8)

summary: disallows writes for older file

text:
# vfs_worm(8)

## NAME
vfs_worm - disallows writes for older file

## SYNOPSIS
vfs objects = worm

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_worm module controls the writability of files and folders depending on their change time and a adjustable grace period.

If the change time of a file or directory is older than the specified grace period, the write access will be denied, independent of further access controls (e.g. by the filesystem).

In the case that the grace period is not exceed, the worm module will not impact any access controls.

## OPTIONS
worm:grace_period = SECONDS

Period in seconds which defines the time how long the write access should be handled by the normal access controls. After this grace period the file or directory becomes read only.

## EXAMPLES
Deny the write access to files and folders, which are older than five minutes (300 seconds):

```
	[wormshare]
	vfs objects = worm
	worm:grace_period = 300
```

## VERSION
This man page is part of version 4.21.9-alt3.p11.1 of the Samba suite.

## AUTHOR
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.


title: vfs_xattr_tdb(8)

text:
# vfs_xattr_tdb(8)

## NAME
vfs_xattr_tdb - Save Extended Attributes (EAs) in a tdb file

## SYNOPSIS
vfs objects = xattr_tdb

## DESCRIPTION
This VFS module is part of the samba(7) suite.

The vfs_xattr_tdb VFS module stores Extended Attributes (EAs) in a tdb file. This enables the usage of Extended Attributes on OS and filesystems which do not support Extended Attributes by themselves.

This module is stackable.

## OPTIONS
xattr_tdb:file = PATH

Name of the tdb file the EAs are stored in. If this option is not set, the default filename xattr.tdb is used.

## AUTHOR
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.