Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AFP.CONF(5)		 Netatalk AFP Fileserver Manual 	     AFP.CONF(5)

Name
     afp.conf - Netatalk configuration file

Synopsis
     The  afp.conf  file  is  the  configuration  file for the Netatalk AFP file
     server.

     All AFP-specific configurations and AFP volume  definitions  are  done  via
     this file.

File Format
     The  file	consists  of  sections and parameters. A section begins with the
     name of the section in square brackets and continues until the next section
     begins. Sections contain parameters of the form:

	    option = value

     The file is line-based - that is, each newline-terminated	line  represents
     either a comment, a section name or a parameter.

     Parameter names are case sensitive, while section names are not.

     Only the first equals sign in a parameter is significant. Whitespace before
     or after the first equals sign is discarded. Leading, trailing and internal
     whitespace  in  section  and  parameter  names  is irrelevant.  Leading and
     trailing whitespace in a parameter value is discarded.  Internal whitespace
     within a parameter value is retained verbatim.

     Any line beginning with a semicolon (";") or a hash ("#") character is  ig-
     nored, as are lines containing only whitespace.

     Any  line	ending	in  a \ (backslash) is continued on the next line in the
     customary UNIX fashion.

     The values following the equals sign in parameters are all either a  string
     (no  quotes  needed)  or  a  boolean,  which may be given as yes/no, 1/0 or
     true/false. Case is not significant in boolean values, but is preserved  in
     string values. Some options such as file perm take numeric values.

Section Descriptions
     Each  section  in	the configuration file (except for the [Global] section)
     describes a shared resource (known as a "volume").  The  parameters  within
     the section define the volume attributes and options.

     There  are  two special sections, [Global] and [Homes], which are described
     under special sections. The following notes apply to ordinary  section  de-
     scriptions.

     A	volume consists of a directory to which access is being given plus a de-
     scription of the access rights which are granted to the user  of  the  ser-
     vice. For volumes the path option must specify the directory to share.

     The name of the volume is defined via the volume name option.  When absent,
     the volume name is the name of the section, expressed in lowercase.

     Any volume section without path option is considered a vol preset which can
     be  selected in other volume sections via the vol preset option and consti-
     tutes defaults for the volume. For any option specified both  in  a  preset
     and  in  a volume section the volume section setting completely substitutes
     the preset option.

     The access rights granted by the server are masked  by  the  access  rights
     granted  to the specified or guest UNIX user by the host system. The server
     does not grant more access than the host system grants.

     The following sample section defines an AFP volume. The user has  full  ac-
     cess to the path /foo/bar. The share is accessed via the share name Baz:

	    [baz]
		volume name = Baz
		path = /foo/bar

Special Sections
   The [Global] section
     Parameters  in  this section apply to the server as a whole. Parameters de-
     noted by a (G) below are must be set in this section.

   The [Homes] section
     This section enable sharing of the UNIX server user home directories.   The
     one  mandatory  option  is  basedir regex. It should be set to a path which
     matches the parent directory of the user homes.

     Specifying the optional path parameter makes it so that only the  subdirec-
     tory  path is shared, rather than the entire home directory.  The following
     example illustrates this. Given all user home directories are stored  under
     /home:

	    [Homes]
		path = afp-data
		basedir regex = /home

     For  a  user  john  this  results	in  an	AFP  home  volume with a path of
     /home/john/afp-data.

     If basedir regex contains symlink, set  the  canonicalized  absolute  path.
     When /home links to /usr/home:

	    [Homes]
		basedir regex = /usr/home

     The  optional  parameter  home  name can be used to change the Homes volume
     name, which is $u's home by default. See  below  for  more  information  on
     VARIABLE SUBSTITUTIONS.

	    [Homes]
		home name = The home of $u
		basedir regex = /home

     For  the  same user john this results in an AFP home volume called The home
     of john.

     Any parameter denoted by a (H) below can be used in the Homes section.

Parameters
     Parameters define the specific attributes of sections.

     Some parameters are specific to the [Global] section (e.g., log type).  All
     others are permissible only in volume sections. The letter G in parentheses
     indicates	that a parameter is specific to the [Global] section. The letter
     V indicates that a parameter can be specified in a volume specific section.

Variable Substitutions
     You can use variables in volume names. The use of	variables  in  paths  is
     limited to $u.

     1.  if you specify an unknown variable, it will not get converted.

     2.  if  you  specify  a  known  variable,	but that variable doesn't have a
	 value, it will get ignored.

     The variables which can be used for substitutions are:

	    $b

		   basename

	    $c

		   client's ip address

	    $d

		   volume pathname on server

	    $f

		   full name (contents of the gecos field in the passwd file)

	    $g

		   group name

	    $h

		   hostname

	    $i

		   client's ip, without port

	    $s

		   server name (this can be the hostname)

	    $u

		   user name (if guest, it is the user that guest is running as)

	    $v

		   volume name

	    $$

		   prints dollar sign ($)

Explanation of Global Parameters
   Authentication Options
     ad domain = domain (G)

	    Append @DOMAIN to username when authenticating. Useful in Active Di-
	    rectory environments that otherwise would require the user to  enter
	    the full user@domain string.

     admin group = group (G)

	    Allows  users  of  a  certain group to be seen as the superuser when
	    they log in. This option is disabled by default.

     force user = user (G)

	    This specifies a UNIX user name that will be assigned as the default
	    user for all users connecting to this server.  This  is  useful  for
	    sharing  files.  You should also use it carefully as using it incor-
	    rectly can cause security problems.

     force group = group (G)

	    This specifies a UNIX group name that will be assigned  as	the  de-
	    fault primary group for all users connecting to this server.

     guest account = name (G)

	    Specifies  the  user that guests should use (default is nobody). The
	    name must be a valid user on the host system.

     k5 keytab = path (G); k5 service = service (G); k5 realm = realm (G)

	    These are required if the server supports the Kerberos 5 authentica-
	    tion UAM.

     nt domain = domain (G); nt separator = SEPARATOR (G)

	    Use for e.g. winbind authentication, prepends  both  strings  before
	    the  username from login and then tries to authenticate with the re-
	    sult through the available and active UAM authentication modules.

     uam list = uam list (default: uams_dhx2.so) (G)

	    Space or comma separated list of User Authentication Methods.

	    Available UAMs are:

	    uams_dhx2.so

		   (uams_dhx2_pam.so or uams_dhx2_passwd.so) Allow  Diffie-Hell-
		   man eXchange 2 (DHX2) for authentication.

	    uams_srp.so

		   Allow  SRP ("Secure Remote Password") for authentication. Re-
		   quires a separate file containing the  SRP  salts  and  veri-
		   fiers, either the default afppasswd.srp file or the one spec-
		   ified via "srp passwd file". See afppasswd(1) for details.

	    uam_gss.so

		   Allow  Kerberos  V for authentication. Requires Kerberos sup-
		   port to be enabled at compile time and a properly  configured
		   Kerberos environment.

	    uams_guest.so

		   Allows guest logins. (INSECURE!)

	    uams_clrtxt.so

		   (uams_pam.so  or  uams_passwd.so) Allow logins with passwords
		   transmitted in the clear. Compatible with Mac OS 9  and  ear-
		   lier. (INSECURE!)

	    uams_randnum.so

		   Allows  Random  Number and Two-Way Random Number Exchange for
		   authentication (requires a separate file containing the pass-
		   words, either the default afppasswd file or the one specified
		   via "passwd file"). See afppasswd(1) for details. (INSECURE!)

	    uams_dhx.so

		   (uams_dhx_pam.so or uams_dhx_passwd.so) Allow  Diffie-Hellman
		   eXchange (DHX) for authentication. (INSECURE!)

     uam path = path (G)

	    Sets the default path for UAMs for this server.

     valid shellcheck = BOOLEAN (default: yes) (G)

	    Whether  to check if the user's login shell is valid (i.e. listed in
	    /etc/shells). If the user's shell is not valid, authentication  will
	    fail.  This  is  a	security  feature  to prevent users with nologin
	    shells from logging in. Disable this  option  to  allow  users  with
	    nologin shells to log in.

   Charset Options
     With  OS  X Apple introduced the AFP3 protocol. One of the big changes was,
     that AFP3 uses Unicode names encoded as Decomposed UTF-8 (UTF8-MAC). Previ-
     ous AFP/OS versions used charsets like MacRoman, MacCentralEurope, etc.

     To be able to serve AFP3 and older clients at the same time, afpd needs  to
     be able to convert between UTF-8 and Mac charsets. Even OS X clients partly
     still rely on the mac charset. As there's no way, afpd can detect the code-
     page  a  pre AFP3 client uses, you have to specify it using the mac charset
     option. The default is MacRoman, which should  be	fine  for  most  western
     users.

     As  afpd  needs to interact with UNIX operating system as well, it needs to
     be able to convert from UTF8-MAC / Mac charset to the UNIX charset.  By de-
     fault afpd uses UTF8. You can set the UNIX charset using the  unix  charset
     option.  If you're using extended characters in the configuration files for
     afpd, make sure your terminal matches the unix charset.

     mac charset = charset (G)/(V)

	    Specifies the Mac clients charset, e.g. MAC_ROMAN. This is	used  to
	    convert  strings  and  filenames to the clients codepage for OS9 and
	    Classic, i.e. for authentication and AFP messages  (SIGUSR2  messag-
	    ing).   This  will	also be the default for the volumes mac charset.
	    Defaults to MAC_ROMAN.

     unix charset = charset (G)

	    Specifies the servers unix charset, e.g. ISO-8859-15 or EUC-JP. This
	    is used to convert strings to/from the systems locale, e.g. for  au-
	    thentication,  server  messages  and volume names. If LOCALE is set,
	    the systems locale is used. Defaults to UTF8.

     vol charset = charset (G)/(V)

	    Specifies the encoding of the volumes filesystem. By default, it  is
	    the same as unix charset.

	    NOTE:  It is highly recommended to stick to the default UTF-8 encod-
	    ing.

   Password Options
     passwd file = path (G)

	    Sets the path to the Randnum UAM password file for this server.

     passwd minlen = number (G)

	    Sets the minimum password length, if supported by the UAM

     save password = BOOLEAN (default: yes) (G)

	    Enables or disables the ability of clients	to  save  passwords  lo-
	    cally.   Setting  this  option to no will send this hint to clients,
	    but it is up to the client to honor it.

     set password = BOOLEAN (default: no) (G)

	    Enables or disables the ability of clients	to  change  their  pass-
	    words.   Setting  this  option  to	yes will allow clients to change
	    their passwords if the UAM in use supports this feature.

     srp passwd file = path (G)

	    Sets the path to the SRP UAM verifier file for this server.

   Network Options
     advertise ssh = BOOLEAN (default: no) (G)

	    Allows old Mac OS X clients (10.3.3-10.4) to automatically establish
	    a tunneled AFP connection through SSH. If this option  is  set,  the
	    server's answers to client's FPGetSrvrInfo requests contain an addi-
	    tional  entry.  It depends on both client's settings and a correctly
	    configured and running sshd(8) on the server to let things work.

	    NOTE: Setting this option is not recommended since globally encrypt-
	    ing AFP connections via SSH will increase the server's load signifi-
	    cantly. On the other hand, Apple's	client	side  implementation  of
	    this  feature in Mac OS X versions prior to 10.3.4 contained a secu-
	    rity flaw.

     afp interfaces = name [name ^a|] (G)

	    Specifies the network interfaces that the server should  listen  on.
	    The  default  is  to  advertise  the first IP address of the system,
	    while listening for any incoming request.

	    NOTE: Do not use at the same time as the afp listen option.

     afp listen = ip address[:port] [ip address[:port] ^a|] (G)

	    Specifies the IP address that the server should advertise  and  lis-
	    tens  to.  The default is advertise the first IP address of the sys-
	    tem, but to listen for any incoming request. The network address may
	    be specified either in dotted-decimal format for IPv4 or in hexadec-
	    imal format for IPv6.

	    IPv6 address + port combination must use URL the format using square
	    brackets [IPv6]:port

	    NOTE: Do not use at the same time as the afp interfaces option.

     afp port = port number (G)

	    Allows a different TCP port to be used for AFP. The default is  548.
	    Also  sets	the  default  port applied when none specified in an afp
	    listen option.

     afp read locks = BOOLEAN (default: no) (G)

	    Whether to apply locks to the byte region read in FPRead calls.  The
	    AFP spec mandates this, but it's not really in line with UNIX seman-
	    tics and is a performance hog.

     disconnect time = number (G)

	    Keep  disconnected	AFP  sessions  for  number hours before dropping
	    them.  Default is 24 hours.

     dsireadbuf = number (G)

	    Scale factor that determines  the  size  of  the  DSI/TCP  readahead
	    buffer,  default is 12. This is multiplies with the DSI server quan-
	    tum (default 1MiB) to give the size of the buffer.	Increasing  this
	    value might increase throughput in fast local networks for volume to
	    volume copies.

	    NOTE: This buffer is allocated per afpd child process, so specifying
	    large  values will eat up large amount of memory (buffer size * num-
	    ber of clients).

     fqdn = name[:port] (G)

	    Specifies a fully-qualified domain name, with an optional port. This
	    is discarded if the server cannot resolve it.  This  option  is  not
	    honored  by  AppleShare clients <= 3.8.3. This option is disabled by
	    default. Use with caution as this will involve a second name resolu-
	    tion step on the client side. Also note  that  afpd  will  advertise
	    this name:port combination but not automatically listen to it.

     hostname = name (G)

	    Use this instead of the result from calling hostname for determining
	    which IP address to advertise, therefore the hostname is resolved to
	    an	IP  which  is the advertised. This is NOT used for listening and
	    can be overridden by afp listen.

     max connections = number (G)

	    Sets the maximum number of clients that can  simultaneously  connect
	    to the server (default is 200).

     server quantum = number (G)

	    This specifies the DSI server quantum. The default value is 0x100000
	    (1	MiB).  The maximum value is 0xFFFFFFFF, the minimum is 32000. If
	    you specify a value that is out of range, the default value will  be
	    set.  Do  not  change this value unless you're absolutely sure, what
	    you're doing

     sleep time = number (G)

	    Keep sleeping AFP sessions for  number  hours  before  disconnecting
	    clients in sleep mode. Default is 10 hours.

     tcprcvbuf = number (G)

	    Try  to set TCP receive buffer using setsockopt(). Often OSes impose
	    restrictions on the applications ability to set this value.

     tcpsndbuf = number (G)

	    Try to set TCP send buffer using setsockopt(). Often OSes impose re-
	    strictions on the applications ability to set this value.

     recvfile = BOOLEAN (default: no) (G)

	    Whether to use splice() on Linux for receiving data.

     splice size = number (default: 64k) (G)

	    Maximum number of bytes spliced.

     use sendfile = BOOLEAN (default: yes) (G)

	    Whether to use sendfile syscall for sending file data to clients.

     zeroconf = BOOLEAN (default: yes) (G)

	    Whether to use automatic Zeroconf service registration if  Avahi  or
	    mDNSResponder were compiled in.

   CNID Database Backend Options
     Global  configurations  specific  to the CNID database backends, which con-
     trols how the database is stored and accessed.

     cnid listen = host[:port] (G)

	    Specifies the hostname or IP address and port that the  CNID  server
	    should  listen  on.   The  host must resolve to a local address that
	    cnid_metad can bind.  This should match the address and port of  the
	    cnid  server  option  for  most  deployments.  The default is local-
	    host:4700. When only a hostname or IP address is specified, the  de-
	    fault port 4700 is used.

     cnid mysql host = MySQL server address (G)

	    Name  or address of a MySQL server for use with the mysql CNID back-
	    end.

	    On Unix systems, setting this to localhost	(or  leaving  it  unset)
	    causes  the  MySQL client library to prefer Unix socket connections,
	    which offers better performance for a local database. Setting it  to
	    127.0.0.1 forces a TCP connection to the loopback interface.

     cnid mysql user = MySQL user (G)

	    MySQL user for authentication with the server.

     cnid mysql pw = password (G)

	    Password for MySQL server.

     cnid mysql db = database name (G)

	    Name  of  the database to use for CNID storage. If the database does
	    not exist, Netatalk will attempt to  create  it  automatically  (re-
	    quires the specified user to have CREATE DATABASE privileges).

     cnid scheme = dbd | mysql | sqlite (G)/(V)

	    Set  the  CNID backend to be used for the volumes.	Not all backends
	    may be available with your netatalk installation.  Run  afpd  -v  to
	    see  a  list  of available backends, as well as which one is the de-
	    fault.

	    dbd: uses Berkeley	DB,  with  database  reads  and  writes  managed
	    through  the  cnid_dbd daemon.  It is deprecated and not recommended
	    for new deployments.

	    mysql: connects to a MySQL (or MariaDB) database instance  that  has
	    been  provisioned  for use with Netatalk.  Requires datbase adminis-
	    tration, giving you full control over how the CNID data is stored.

	    sqlite: uses the SQLite embedded database library.	It is performant
	    and lean, requiring no external database or daemon.

     cnid server = host[:port] (G)/(V)

	    Specifies the hostname or  IP  address  and  port  of  a  cnid_metad
	    server, required for the CNID dbd backend. This should match the ad-
	    dress  and	port of the cnid listen option for most deployments. De-
	    faults to localhost:4700.  When only a hostname  or  IP  address  is
	    specified, the default port 4700 is used.

	    Hostnames  and IPv4 addresses are accepted. Hostnames may resolve to
	    IPv4 or IPv6 addresses.

     vol dbpath = path (G)/(V)

	    Sets the path where the database information  will	be  stored.  You
	    have  to  specify  a  writable  location, even if the volume is read
	    only.

     vol dbnest = BOOLEAN (default: no) (G)

	    Setting this option to true brings	back  Netatalk	2  behaviour  of
	    storing  the  CNID	database  in a folder called .AppleDB inside the
	    volume root of each share.

   Directory Cache Tuning
     dircache size = number (G)

	    Maximum entries in the directory cache. Stores directories	and  op-
	    tionally  files.  Minimum: 1024 (1K). Default: 65536 (64K). Maximum:
	    1048576 (1M).  Higher values improve hit ratios but use more memory.

     dircache validation freq = number (G)

	    Directory cache validation frequency for external change  detection.
	    Value of 1 means validate every access (default for backward compat-
	    ibility),  higher  values  validate less frequently.  If Netatalk is
	    the only process accessing the volume you can safely set a value  of
	    100 for maximum performance.

     dircache mode = lru | arc (default: lru) (G)

	    Cache replacement algorithm. lru = Least Recently Used (stable, mem-
	    ory-efficient).   arc  =  Adaptive	Replacement  Cache (self-tuning,
	    10-50% better hit ratios, 2A better on sequential scans).  ARC  uses
	    approximately  2~A  memory  (~100%  overhead)  due  to ghost entries:
	    evicted entries tracked for learning, enabling ARC to adapt.   Exam-
	    ple: 64K cache uses ~24 MB (ARC) vs ~12 MB (LRU).

	    Recommendation:  Use arc for servers with 8GB+ RAM. Use lru for con-
	    strained systems. Increase dircache size (max entries) for best  re-
	    sults.

     dircache rfork budget = number (default: 0) (G)

	    Total  memory budget in KB for caching resource fork data in the di-
	    rectory cache. When set to 0 (the default), resource fork caching is
	    disabled.  Resource fork caching stores small resource fork contents
	    in memory to avoid repeated disk reads during FPGetFileDirParams and
	    FPEnumerate operations.

	    Maximum: 10485760 (10 GB in KB) total.

     dircache rfork maxsize = number (default: 1024) (G)

	    Maximum size in KB of a single resource  fork  entry  that	will  be
	    cached.   Resource	forks  larger than this value will not be cached
	    even if the total budget has not been exhausted.

	    Maximum: 10240 (10 MB in KB) per entry.

     Note: See Configuration chapter in the manual for more information

   Miscellaneous Options
     afpstats = BOOLEAN (default: no) (G)

	    Whether to provide AFP runtime  statistics	(connected  users,  open
	    volumes) via a Unix socket.

     afpstats group = group (G)

	    Sets the group owner of the afpstats Unix socket. The socket is cre-
	    ated  with mode 0660, so only root and members of this group can ac-
	    cess runtime statistics. If unset, the socket keeps  the  group  as-
	    signed by the operating system when afpd creates it.

     close vol = BOOLEAN (default: no) (G)

	    Whether to close volumes possibly opened by clients when they're re-
	    moved from the configuration and the configuration is reloaded.

     extmap file = path (G)

	    Sets  the path to the file which defines file extension type/creator
	    mappings.

     force xattr with sticky bit = BOOLEAN (default: no) (G)/(V)

	    Writing metadata xattr on directories with the sticky  bit	set  may
	    fail even though we may have write access to a directory, because if
	    the sticky bit is set only the owner is allowed to write xattrs.

	    By	enabling  this	option Netatalk will write the metadata xattr as
	    root.

     ignored attributes = all | nowrite | nodelete | norename (G)/(V)

	    Specify a set of file and directory attributes that shall be ignored
	    by the server, all includes all the other options.

	    In OS X when the Finder sets a lock on a file/directory or	you  set
	    the  BSD  uchg  flag in the Terminal, all three attributes are used.
	    Thus in order to ignore the Finder lock/BSD uchg flag, add	set  ig-
	    nored attributes = all.

     mimic model = model (G)

	    Specifies  a custom icon for the mounted AFP volume on macOS (Mac OS
	    X) clients. Default is to let macOS choose. Requires netatalk to  be
	    built with Zeroconf. Examples:

	    * Laptop

	    * RackMount

	    * Tower

	    A  complete  set  of  supported model codes by a macOS client can be
	    found by inspecting system properties  files,  such  as  /System/Li-
	    brary/CoreServices/CoreTypes.bundle/Contents/Info.plist  on macOS 15
	    Sequoia.

     server name = name (G)

	    Specifies a human-readable name  that  uniquely  describes	the  AFP
	    server.   Defaults	to  the value of hostname up until the first pe-
	    riod.  When netatalk is built with Zeroconf support,  this	is  also
	    registered	as  the  service  name and advertised as UTF-8, up to 63
	    octets (bytes) in length.

     signature = STRING (G)

	    Specify a server signature. The maximum  length  is  16  characters.
	    This  option  is useful for clustered environments, to provide fault
	    isolation etc. By default, afpd generates a signature and  saves  it
	    to	a  file called afp_signature.conf automatically (based on random
	    numbers). See also asip-status(1).

     solaris share reservations = BOOLEAN (default: yes) (G)

	    Use share reservations on Solaris. Solaris	CIFS  server  uses  this
	    too, so this makes a lock coherent multi protocol server.

     veto message = BOOLEAN (default: no) (G)

	    Send  optional AFP messages for vetoed files. Then whenever a client
	    tries to access any file or directory with a vetoed name, it will be
	    sent an AFP message indicating the name and the directory.

     volnamelen = number (G)

	    Max length of UTF8-MAC volume name for Mac OS X. Note that Hangul is
	    especially sensitive to this.

	    73: limit of Mac OS X 10.1
	    80: limit of Mac OS X 10.4/10.5 (default)
	    255: limit of recent Mac OS X

	    Mac OS 9 and earlier are not influenced by this, because  Maccharset
	    volume name is always limited to 27 bytes.

     vol preset = name (G)/(V)

	    Use  section  name as option preset for all volumes (when set in the
	    [Global] section) or for one volume (when set in that volume's  sec-
	    tion).

   Search Options
     Configure Netatalk's file search capabilities, covering Spotlight and Cata-
     log Search.

     dbus daemon = path (G)

	    Sets  the  path to dbus-daemon binary used to launch a private D-Bus
	    for the LocalSearch backend.  Can be used when the compile-time  de-
	    fault path does not match the runtime environment.

	    If	support is compiled into Netatalk, you may alternatively use the
	    localsearch backend which enables more advanced search capabilities,
	    including full text search and file metadata search.

     search db = BOOLEAN (default: yes) (V)

	    Use fast CNID database namesearch instead of slow recursive filesys-
	    tem search for Classic Mac OS - Mac OS X 10.3 clients.

	    NOTE: Relies on a consistent CNID database for accurate  search  re-
	    sults.  Interacting with the AFP volume with other file sharing pro-
	    tocols,  or  doing local filesystem access on the host without using
	    nad(1) will lead to an inaccurate CNID database that has to  be  re-
	    paired with dbd(1).

     sparql results limit = NUMBER (default: UNLIMITED) (G)

	    Impose  a limit on the number of results queried from Tracker or Lo-
	    calSearch via SPARQL queries.

	    The xapian backend also uses this  value  as  its  per-query  result
	    limit,  despite  the  historical  option  name.  When  set to 0, Lo-
	    calSearch queries are unlimited, while the xapian backend applies an
	    internal safety cap of 10000 candidate results. Set a larger nonzero
	    value to raise the xapian cap. The cnid backend does  not  use  this
	    option and is limited by its fixed CNID search reply cap.

     spotlight = BOOLEAN (default: yes) (G)/(V)

	    Whether  to  enable  Spotlight-compatible searches.  As a global op-
	    tion, this sets the default for volumes.  As  a  volume  option,  it
	    overrides the global default for that volume.

	    A  volume is searchable only when its effective spotlight setting is
	    enabled and a supported spotlight backend is available for that vol-
	    ume.

     spotlight attributes = COMMA SEPARATED STRING (default: EMPTY) (G)

	    A list of Spotlight query attributes  accepted  by	the  localsearch
	    backend.  By  default all attributes known to the LocalSearch SPARQL
	    mapper can be searched; passing a string limits  searchable  attrib-
	    utes to elements of the string. Example:

	    spotlight attributes = *,kMDItemTextContent

	    This option does not affect the cnid or xapian backends.

     spotlight backend = backend (default: cnid) (G)/(V)

	    Search backend used by the Spotlight feature.

	    Depending on your Netatalk configuration, the available backends may
	    include: cnid, localsearch, xapian.

	    Run  netatalk -v to see which backends are available in your instal-
	    lation.

	    NOTE: The xapian backend is considered EXPERIMENTAL and is not  rec-
	    ommended for production use at this time.

     spotlight expr = BOOLEAN (default: yes) (G)

	    Whether  the  localsearch backend allows Spotlight logic expressions
	    when translating Spotlight RAW queries to SPARQL.

	    This option does not affect the cnid or xapian backends.

   Logging Options
     Control what kinds of messages are logged, and where they are logged.

     log file = logfile (G)

	    Write logs to logfile on the file system. If not specified, Netatalk
	    logs to the syslog daemon facility.

     log level = type:level [type:level ^a|]; log level = type:level,[type:level,
     ^a|] (G)

	    Space or comma separated list of one or more log type and log  level
	    pairs.

	    The default log level and severity is default:note

	    For  each pair, the log level specifies the minimum severity of mes-
	    sages of the given log type that will be logged.  Only  messages  of
	    the  specified  log  type  with severity equal to or higher than the
	    specified log level will be logged, while messages of that log  type
	    with lower severity will be ignored.

	    The  default log type is a special log type that applies to all mes-
	    sages.  If no log level is specified for  default,	only  log  types
	    with  explicitly  specified log levels will be logged, and all other
	    log types will be ignored.

	    For example, if you specify log level = default:warn, then all  mes-
	    sages  with  severity warn or higher (i.e. warn, error, severe) will
	    be logged, and anything below warn (note, info, debug etc.) will  be
	    ignored.

	    By	chaining multiple log type and log level pairs are together, you
	    get fine-grained control over which messages  are  logged  based  on
	    their type and severity.

	    Available logtypes: default, logger, cnid, afpdaemon, dsi, atalkdae-
	    mon, papdaemon, uams, fce, ad, spotlight

	    Available  loglevels  (by falling order of severity): severe, error,
	    warn, note, info, debug, debug6, debug7, debug8, debug9, maxdebug

	    NOTE: Both logtype and loglevels are case insensitive.

     log microseconds = BOOLEAN (default: yes) (G)

	    Log timestamps with accuracy down to microseconds. If disabled,  the
	    timestamps record only whole seconds. Only takes effect when used in
	    tandem with the log file option.

   Filesystem Change Events (FCE)
     Netatalk  includes  a  nifty  filesystem  change event mechanism where afpd
     processes notify interested listeners about certain filesystem event by UDP
     network datagrams.

     The following FCE events are defined:

     * file modification (fmod)

     * file deletion (fdel)

     * directory deletion (ddel)

     * file creation (fcre)

     * directory creation (dcre)

     * file move or rename (fmov)

     * directory move or rename (dmov)

     * login (login)

     * logout (logout)

     fce listener = host[:port] (G)

	    Enables sending FCE events to the specified host,  default	port  is
	    12250  if  not  specified.	Specifying multiple listeners is done by
	    having this option once for each of them.

     fce version = 1 | 2 (G)

	    FCE protocol version, default is 1. You need version 2 for the fmov,
	    dmov, login or logout events.

     fce events = fmod,fdel,ddel,fcre,dcre,fmov,dmov,login,logout (G)

	    Specifies	which	FCE    events	 are	active,    default    is
	    fmod,fdel,ddel,fcre,dcre.

     fce coalesce = all | delete | create (G)

	    Coalesce FCE events.

     fce holdfmod = seconds (G)

	    This  determines the time delay in seconds which is always waited if
	    another file modification for the same file is done by a client  be-
	    fore sending an FCE file modification event (fmod). For example sav-
	    ing a file in Photoshop would generate multiple events by itself be-
	    cause  the application is opening, modifying and closing a file mul-
	    tiple times for every "save". Default: 60 seconds.

     fce sendwait = milliseconds (G)

	    Defines a delay in milliseconds between the  emission  of  each  FCE
	    event.  Use this if you are experiencing lost FCE events when creat-
	    ing  or deleting a very large number of files at once. The deluge of
	    events that such an operation triggers can lead to UDP buffer  over-
	    flow  and  subsequently to packet loss. Has to be a number between 0
	    and 999.  Default: 0 milliseconds.

     fce ignore names = NAME[,NAME2,^a|] (G)

	    Comma-delimited list of filenames for which FCE events shall not  be
	    generated. Default: .DS_Store

     fce ignore directories = PATH[,PATH2,^a|] (G)

	    Comma-delimited  list  of  paths to directories for which FCE events
	    shall not be generated. Has to be an absolute path on the host  file
	    system.  Must not end with a slash. Default: empty

     fce notify script = path (G)

	    Script  which  will  be  executed  for  every  FCE	event.	See con-
	    trib/scripts/fce_ev_script.sh in the Netatalk source tree for an ex-
	    ample script.

   Options for ACL handling
     By default, the effective permission of the  authenticated  user  are  only
     mapped  to  the mentioned UARights permission structure, not the UNIX mode.
     You can adjust this behaviour with the configuration option map acls:

     chmod request = preserve (default) | ignore | simple (G)/(V)

	    Advanced permission control that deals with ACLs.

	    * ignore - UNIX chmod() requests are completely  ignored,  use  this
	      option  to  allow the parent directory's ACL inheritance full con-
	      trol over new items.

	    * preserve - preserve ZFS ACEs for named users and groups  or  POSIX
	      ACL group mask

	    * simple - just to a chmod() as requested without any extra steps

     map acls = none | rights | mode (G)

	    none

		   No mapping of ACLs.

	    rights

		   Effective  permissions are mapped to UARights structure. This
		   is the default.

	    mode

		   ACLs are additionally mapped to the UNIX mode of the filesys-
		   tem object.

     If you want to be able to display ACLs on the client, you must  setup  both
     client  and  server  as part on a authentication domain (directory service,
     e.g. LDAP, Open Directory, Active Directory). The reason is, in OS  X  ACLs
     are  bound  to  UUIDs,  not just uid's or gid's. Therefore Netatalk must be
     able to map every filesystem uid and gid to a UUID so that  it  can  return
     the  server  side	ACLs  which are bound to UNIX uid and gid mapped to OS X
     UUIDs.

     Netatalk can query a directory server using LDAP queries. Either the direc-
     tory server already provides an UUID attribute for user and groups  (Active
     Directory,  Open  Directory) or you reuse an unused attribute (or add a new
     one) to you directory server (eg OpenLDAP).

     The following LDAP options must be configured for Netatalk:

     ldap auth method = none | simple (G)

	    none

		   anonymous LDAP bind

	    simple

		   simple LDAP bind

     ldap auth dn = dn (G)

	    Distinguished Name of the user for simple bind.

     ldap auth pw = password (G)

	    Password for simple bind.

     ldap uri = ldap://somehost:1234/ (G)

	    Specifies the LDAP URI of the server to connect to. The  URI  scheme
	    may  be  ldap,  ldapi or ldaps, specifying LDAP over TCP, ICP or TLS
	    respectively (if supported by the LDAP library). This is only needed
	    for explicit ACL support in order to  be  able  to	query  LDAP  for
	    UUIDs.

	    You can use afpldaptest(1) to syntactically check your config.

     ldap userbase = base dn (G)

	    DN of the user container in LDAP.

     ldap userscope = scope (G)

	    Search scope for user search: base | one | sub

     ldap groupbase = base dn (G)

	    DN of the group container in LDAP.

     ldap groupscope = scope (G)

	    Search scope for group search: base | one | sub

     ldap uuid attr = dn (G)

	    Name of the LDAP attribute with the UUIDs.

	    NOTE: this is used both for users and groups.

     ldap name attr = dn (G)

	    Name of the LDAP attribute with the users short name.

     ldap group attr = dn (G)

	    Name of the LDAP attribute with the groups short name.

     ldap uuid string = STRING (G)

	    Format  of	the  uuid  string in the directory. A series of x and -,
	    where every x denotes a value 0-9a-f and every - is a separator.

	    Default: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

     ldap uuid encoding = string (default) | ms-guid (G)

	    Format of the UUID of the LDAP attribute, allows usage of the binary
	    objectGUID fields from Active Directory. If left unspecified, string
	    is the default, which passes through the ASCII UUID returned by most
	    other LDAP stores. If set to ms-guid, the internal UUID  representa-
	    tion  is converted to and from the binary format used in the object-
	    GUID attribute found on objects in Active Directory when interacting
	    with the server.

	    See also the options ldap user filter and ldap group filter.

	    string

		   UUID is a string, use with e.g. OpenDirectory.

	    ms-guid

		   Binary objectGUID from Active Directory

     ldap user filter = STRING (default: unused) (G)

	    Optional LDAP filter that matches user objects.  This  is  necessary
	    for  Active Directory environments where users and groups are stored
	    in the same directory subtree.

	    Recommended setting for Active Directory: objectClass=user.

     ldap group filter = STRING (default: unused) (G)

	    Optional LDAP filter that matches group objects. This  is  necessary
	    for  Active Directory environments where users and groups are stored
	    in the same directory subtree.

	    Recommended setting for Active Directory: objectClass=group.

   Classic Options
     Enable Netatalk features that are only relevant for Classic Mac OS or Apple
     II clients. See also the Charset options elsewhere in this manual.

     appletalk = BOOLEAN (default: no) (G)

	    Enables support for AFP-over-AppleTalk. This  option  requires  that
	    your  operating  system  supports the AppleTalk networking protocol,
	    and that Netatalk was built with AppleTalk support.

     ddp address = ddp address (G)

	    Specifies the DDP address of the server. The default is to	auto-as-
	    sign  an  address  (0.0). This is only useful if you are running Ap-
	    pleTalk on more than one interface.

     ddp zone = ddp zone (G)

	    Specifies the AppleTalk zone to register the server in. The  default
	    is	to register the server in the default zone of the last interface
	    configured by the system.

     legacy icon = icon (G)/(V)

	    Sets the shared volume icon displayed in the Finder in  Classic  Mac
	    OS.   If  a  custom icon is already associated with the volume, this
	    option is ignored.	Available icon styles:

	    * daemon

	    * declogo

	    * fileserver

	    * globe

	    * nas

	    * sdcard

	    * sunlogo

	    * viking

     legacy volume size = BOOLEAN (default: no) (V)

	    Limit disk size reporting to 2GB for legacy  clients.  This  can  be
	    used  for  older Macintoshes running System 7.1 or earlier and using
	    newer AppleShare clients.

     login message = message (G)/(V)

	    Sets a message to be displayed when Classic Mac OS clients log on to
	    the server.  The message should be in unix charset.  Extended  char-
	    acters are allowed.

     prodos = BOOLEAN (default: no) (V)

	    Enable  ProDOS  support. This option should only be enabled for vol-
	    umes you expect to netboot an Apple II from. In addition to  setting
	    the  boot flag on the volume, it restricts the volume free space re-
	    ported to the client to 32MB.

   Debug Parameters
     These options are useful for debugging only. Do NOT enable them in  produc-
     tion environments!

     tickleval = number (G)

	    Sets the tickle timeout interval (in seconds). Defaults to 30.

     timeout = number (G)

	    Specify  the  number  of tickles to send before timing out a connec-
	    tion.  The default is 4, therefore a connection will timeout after 2
	    minutes.

     client polling = BOOLEAN (default: no) (G)

	    With this option enabled, afpd won't advertise that it is capable of
	    server notifications, so that  connected  clients  poll  the  server
	    every 10 seconds to detect changes in opened server windows.

Explanation of Volume Parameters
   Home Section Parameters
     Special parameters that only apply to the home volume.

     basedir regex = regex (H)

	    Regular  expression  which	matches the parent directory of the user
	    homes.  If basedir regex contains symlink, you must set the  canoni-
	    calized  absolute  path. In the simple case this is just a path i.e.
	    basedir regex = /home

     home name = name (H)

	    AFP user home volume name. The default is $u's home. The  name  must
	    contain "$u".

   Volume Sections Parameters
     Each volume should at least define path and volume name.

     path = path (V)

	    The path name must be a fully qualified path name.

     volume name = STRING (default: section name in lowercase) (V)

	    The  volume name option specifies the name of the shared AFP volume.
	    When not set, this defaults to the name  of  the  ini  file  section
	    where the volume is defined, converted to lowercase.

	    No	two volumes may have the same name.  The volume name cannot con-
	    tain the `:' character.  The volume name is mangled if  it	is  very
	    long.   Mac  charset  volume  name	is  limited  to  27  characters.
	    UTF8-MAC volume name is limited to volnamelen parameter.

     vol size limit = size in MiB (V)

	    Useful for Time Machine: limits the reported volume size, thus  pre-
	    venting  Time  Machine  from  using  the  whole  real disk space for
	    backup.  Example: "vol size limit = 1000" would limit  the	reported
	    disk space to 1 GB.

	    IMPORTANT:	This  is an approximated calculation taking 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 for. The calculation works by
	    reading the band size from the Info.plist XML file of the sparsebun-
	    dle, reading the bands/ directory counting the number of band files,
	    and then multiplying one with the other.

     valid users = user / @group (V)

	    The allow option allows the users and groups that access a share  to
	    be specified. Users and groups are specified, delimited by spaces or
	    commas. Groups are designated by a @ prefix. Example:

	    valid users = user @group

     invalid users = user / @group (V)

	    The  deny  option specifies users and groups who are not allowed ac-
	    cess to the share. It follows the same format as the  "valid  users"
	    option.

     hosts allow = IP host address/IP netmask bits [ a| ] (V)

	    Only listed hosts and networks are allowed, all others are rejected.
	    The network address may be specified either in dotted-decimal format
	    for IPv4 or in hexadecimal format for IPv6.

	    Example: hosts allow = 10.1.0.0/16 10.2.1.100 2001:0db8:1234::/48

     hosts deny = IP host address/IP netmask bits [ a| ] (V)

	    Listed hosts and nets are rejected, all others are allowed.

	    Example: hosts deny = 192.168.100/24 10.1.1.1 2001:db8::1428:57ab

     ea = sys | samba | ad | none (default: auto detect) (V)

	    Specify  how  Extended  Attributes	and  Mac  OS  Resource Forks are
	    stored.

	    By default, we attempt to enable sys with a fallback to  none.   For
	    the  auto detection to work, the volume needs to be writable because
	    we attempt to set  an  EA  on  the	shared	directory  itself.   For
	    read-only volumes, set this option explicitly.

	    sys

		   Use filesystem Extended Attributes.

	    samba

		   Use	filesystem  Extended  Attributes, but append a 0 byte to
		   each  xattr	in  order  to	be   compatible   with	 Samba's
		   vfs_streams_xattr.

	    ad

		   Use	AppleDouble  v2 metadata stored as files in .AppleDouble
		   directories.  This  should  only  be  used  when  the  host's
		   filesystem does not support Extended Attributes.

	    none

		   No Extended Attributes support.

	    WARNING:  The  samba  option should not be used on a volume that was
	    previously set to sys. This may lead to data loss (client  copy  be-
	    tween shares to convert).

     mac charset = charset (V)

	    Specifies  the  Mac  client charset for this Volume, e.g. MAC_ROMAN,
	    MAC_CYRILLIC. If not specified the global setting is  applied.  This
	    setting  is only required if you need volumes, where the Mac charset
	    differs from the one globally set in the [Global] section.

     casefold = option (V)

	    The casefold option handles, if the  case  of  filenames  should  be
	    changed.  The available options are:

	    tolower - Lowercases names in both directions.

	    toupper - Uppercases names in both directions.

	    xlatelower - Client sees lowercase, server sees uppercase.

	    xlateupper - Client sees uppercase, server sees lowercase.

     password = password (V)

	    This option allows you to set a volume password, which can be a max-
	    imum  of  8 characters long (using ASCII strongly recommended at the
	    time of this writing).

     file perm = mode (V); directory perm = mode (V)

	    Add(or) with the client requested  permissions:  file  perm  is  for
	    files  only,  directory perm is for directories only. Don't use with
	    "unix priv = no".

	    Example: Volume for a collaborative workgroup

	    file perm = 0660
	    directory perm = 0770

     umask = mode (V)

	    Set perm mask. Don't use with "unix priv = no".

     preexec = command (V)

	    Command to be run when the volume is mounted

     postexec = command (V)

	    Command to be run when the volume is closed

     rolist = users/groups (V)

	    Allows certain users and groups to have read-only access to a share.
	    This follows the allow option format.

     rwlist = users/groups (V)

	    Allows certain users and groups  to  have  read/write  access  to  a
	    share.  This follows the allow option format.

     veto files = vetoed names (V)

	    Hide files and directories,where the path matches one of the `/' de-
	    limited vetoed names. The veto string must always be terminated with
	    a `/', e.g. "veto files = veto1/", "veto files = veto1/veto2/".

     volume uuid = UUID (V)

	    Specify  a custom UUID for the volume. The UUID must be in the stan-
	    dard  format,  e.g.  550E8400-E29B-41D4-A716-446655440000.	 If  not
	    specified,	a random UUID is generated for the volume at startup and
	    saved in the file afp_voluuid.conf in the shared state directory.

	    In most circumstances, you should not need to set this  option,  but
	    rather  let  netatalk manage it for you.  One reason to set it manu-
	    ally is when you want to run afpd as a non-privileged user who  does
	    not have write access to the shared state directory.

   Volume options
     Boolean volume options.

     acls = BOOLEAN (default: yes) (V)

	    Whether  to  flag volumes as supporting ACLs. If ACL support is com-
	    piled in, this is yes by default.

     case sensitive = BOOLEAN (default: yes) (V)

	    Whether to advertise volumes as supporting case-sensitive filenames.
	    If the host filesystem is case-insensitive, set to no.

     cnid dev = BOOLEAN (default: yes) (V)

	    Whether to store the unique device number for each file or directory
	    in the CNID backend.  This is used to detect when a  file  is  moved
	    across  devices,  which  allows Netatalk to update the CNID database
	    accordingly.

	    When using this option, make sure that the device number of the vol-
	    ume is consistent across reboots, which can  be  achieved  by  using
	    persistent device naming (e.g. by UUID) in /etc/fstab or equivalent.
	    Otherwise,	the  CNID  database will get constantly rebuilt on every
	    reboot, which is not ideal.

     convert appledouble = BOOLEAN (default: no) (V)

	    Perform automatic conversion of AppleDouble  v2  metadata  files  to
	    filesystem	Extended  Attributes dynamically when accessing filesys-
	    tems from clients.

	    This is useful when upgrading from Netatalk v2 to a  later	version,
	    but incurs a small performance cost for every filesystem access.  If
	    you  run  dbd(1) on the volumes to convert after upgrading Netatalk,
	    you don't need to enable this option, as the conversion is	done  by
	    dbd(1) and not on the fly.

     delete veto files = BOOLEAN (default: no) (V)

	    This  option  is used when Netatalk is attempting to delete a direc-
	    tory that contains one or more vetoed files or directories (see  the
	    veto  files  option). If this option is set to no (the default) then
	    if a directory contains any non-vetoed files or directories then the
	    directory delete will fail. This is usually what you want.

	    If this option is set to yes, then Netatalk will attempt  to  recur-
	    sively delete any files and directories within the vetoed directory.

     follow symlinks = BOOLEAN (default: no) (V)

	    The  default  setting is false thus symlinks are not followed on the
	    server.  This is the same behaviour as Mac OS X's AFP server.   Set-
	    ting  the  option  to  true  causes  afpd  to follow symlinks on the
	    server.

	    When a client creates a symlink via AFP, the  target  is  validated:
	    absolute  paths, paths containing .. components, relative paths that
	    resolve outside the volume root, and targets on a different filesys-
	    tem device than the volume are rejected.

	    NOTE: This option is security-sensitive, and should only be  enabled
	    if	you  understand the security implications of allowing clients to
	    follow symlinks on the server.

     invisible dots = BOOLEAN (default: no) (V)

	    Make dot files invisible.

	    WARNING: Enabling this option will lead  to  unwanted  side  effects
	    where  OS  X  applications,  when  saving  files to a temporary file
	    starting with a dot first, then renaming the temp file to its  final
	    name,  result in the saved file being invisible. The only thing this
	    option is useful for is making files that start with a dot invisible
	    on Mac OS 9. It's completely useless on Mac OS X, as both in  Finder
	    and in Terminal files starting with a dot are hidden anyway.

     network ids = BOOLEAN (default: yes) (V)

	    Whether  the server support network ids. Setting this to no will re-
	    sult in the client not using ACL AFP functions.

     preexec close = BOOLEAN (default: no) (V)

	    A non-zero return code from preexec close the volume  being  immedi-
	    ately, preventing clients to mount/see the volume in question.

     read only = BOOLEAN (default: no) (V)

	    Specifies  the  share as being read only for all users.  Forces ea =
	    sys.

     stat vol = BOOLEAN (default: yes) (V)

	    Whether to stat volume path when enumerating  volumes  list,  useful
	    for automounting or volumes created by a preexec script.

     time machine = BOOLEAN (default: no) (V)

	    Whether to enable Time Machine support for this volume.

     unix priv = BOOLEAN (default: yes) (V)

	    Whether  to  use  AFP3  UNIX privileges. This should be set for OS X
	    clients. See also: file perm, directory perm, and umask.

Examples
   Example: Modern Mac clients
     This enables Spotlight and AFP stats if Netatalk was built  with  Spotlight
     and  AFP  stats  support. The mimic model option is used to make the server
     look like an Xserve.

     The home directory is mounted on /home/{user}/afp-data.

	    [Global]
	    afpstats = yes
	    afpstats group = netatalk
	    spotlight = yes
	    mimic model = RackMac

	    [Home]
	    basedir regex = /home
	    path = afp-data

   Example: Classic Mac clients
     This enables AppleTalk if Netatalk was built with AppleTalk  support.   The
     Random Number and ClearTxt authentication modules are used to support older
     Mac  clients.   The  legacy icon option is used to give the volume a custom
     icon when mounted on Classic Mac OS clients.

     With legacy volume size the reported volume size is limited  to  2  GB  for
     very old Macs, while prodos is used to enable Apple II ProDOS boot flags on
     the  volume as well as limiting the reported free space on the volume to 32
     MB.

	    [Global]
	    appletalk = yes
	    uam list = uams_dhx.so uams_dhx2.so uams_randnum.so uams_clrtxt.so
	    legacy icon = daemon

	    [mac]
	    volume name = Mac Files
	    path = /srv/mac
	    legacy volume size = yes

	    [apple2]
	    volume name = Apple II Files
	    path = /srv/apple2
	    prodos = yes

See Also
     afpd(8), afppasswd(5), afp_signature.conf(5), extmap.conf(5), cnid_metad(8)

Author
     Contributors to the Netatalk Project (https://netatalk.io/contributors)

Netatalk 4.5.0							     AFP.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=afp.conf&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help