xref: /freebsd/usr.sbin/autofs/auto_master.5 (revision 96190b4fef3b4a0cc3ca0606b0c4e3e69a5e6717)
1.\"-
2.\" SPDX-License-Identifier: BSD-2-Clause
3.\"
4.\" Copyright (c) 2014 The FreeBSD Foundation
5.\"
6.\" This software was developed by Edward Tomasz Napierala under sponsorship
7.\" from the FreeBSD Foundation.
8.\"
9.\" Redistribution and use in source and binary forms, with or without
10.\" modification, are permitted provided that the following conditions
11.\" are met:
12.\" 1. Redistributions of source code must retain the above copyright
13.\"    notice, this list of conditions and the following disclaimer.
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\"
18.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
19.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
22.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28.\" SUCH DAMAGE.
29.\"
30.Dd December 27, 2023
31.Dt AUTO_MASTER 5
32.Os
33.Sh NAME
34.Nm auto_master
35.Nd autofs automounter configuration and map file format
36.Sh DESCRIPTION
37The automounter configuration consists of the
38.Nm
39configuration file, which assigns filesystem paths to map names,
40and maps, which contain actual mount information.
41The
42.Nm
43configuration file is used by the
44.Xr automount 8
45command.
46Map files are read by the
47.Xr automountd 8
48daemon.
49.Sh AUTO_MASTER SYNTAX
50The
51.Nm
52file consists of lines with two or three entries separated by whitespace
53and terminated by newline character:
54.Bd -literal -offset indent
55.Pa mountpoint Pa map_name Op Ar -options
56.Ed
57.Pp
58.Pa mountpoint
59is either a fully specified path, or
60.Li /- .
61When
62.Pa mountpoint
63is a full path,
64.Pa map_name
65must reference an indirect map.
66Otherwise,
67.Pa map_name
68must reference a direct map.
69See
70.Sx "MAP SYNTAX" below.
71.Pp
72.Pa map_name
73specifies map to use.
74If
75.Pa map_name
76begins with
77.Li - ,
78it specifies a special map.
79See
80.Sx "MAP SYNTAX"
81below.
82If
83.Pa map_name
84is not a fully specified path
85.Pq it does not start with Li / ,
86.Xr automountd 8
87will search for that name in
88.Li /etc .
89Otherwise it will use the path as given.
90If the file indicated by
91.Pa map_name
92is executable,
93.Xr automountd 8
94will assume it is an executable map.
95See
96.Sx "MAP SYNTAX"
97below.
98Otherwise, the file is opened and the contents parsed.
99.Pp
100.Pa -options
101is an optional field that starts with
102.Li -
103and can contain generic filesystem mount options.
104.Pp
105The following example specifies that the /etc/auto_example indirect map
106will be mounted on /example.
107.Bd -literal -offset indent
108/example auto_example
109.Ed
110.Sh MAP SYNTAX
111Map files consist of lines with a number of entries separated by whitespace
112and terminated by newline character:
113.Bd -literal -offset indent
114.Pa key Oo Ar -options Oc Oo Ar mountpoint Oo -options Oc Oc Ar location Op ...
115.Ed
116.Pp
117In most cases, it can be simplified to:
118.Bd -literal -offset indent
119.Pa key Oo Ar -options Oc Ar location
120.Ed
121.Pp
122.Pa key
123is the path component used by
124.Xr automountd 8
125to find the right map entry to use.
126It is also used to form the final mountpoint.
127A wildcard
128.Pq Ql *
129can be used for the key.
130It matches every directory that does not match other keys.
131Those directories will not be visible to the user
132until accessed.
133.Pp
134The
135.Ar options
136field, if present, must begin with
137.Li - .
138When mounting the filesystem, options supplied to
139.Nm
140and options specified in the map entry are concatenated together.
141The special option
142.Li fstype
143is used to specify filesystem type.
144It is not passed to the mount program as an option.
145Instead, it is passed as an argument to
146.Cm "mount -t".
147The default
148.Li fstype
149is
150.Ql nfs .
151The special option
152.Li nobrowse
153is used to disable creation of top-level directories for special
154and executable maps.
155.Pp
156The optional
157.Pa mountpoint
158field is used to specify multiple mount points
159for a single key.
160.Pp
161The
162.Ar location
163field specifies the filesystem to be mounted.
164Ampersands
165.Pq Ql &
166in the
167.Ar location
168field are replaced with the value of
169.Ar key .
170This is typically used with wildcards, like:
171.Bd -literal -offset indent
172.Li *	192.168.1.1:/share/&
173.Ed
174.Pp
175The
176.Ar location
177field may contain references to variables, like:
178.Bd -literal -offset indent
179.Li sys	192.168.1.1:/sys/${OSNAME}
180.Ed
181.Pp
182Defined variables are:
183.Pp
184.Bl -tag -width "-OSNAME" -compact
185.It Li ARCH
186Expands to the output of
187.Li "uname -p" .
188.It Li CPU
189Same as ARCH.
190.It Li DOLLAR
191A literal $ sign.
192.It Li HOST
193Expands to the output of
194.Li "uname -n" .
195.It Li OSNAME
196Expands to the output of
197.Li "uname -s" .
198.It Li OSREL
199Expands to the output of
200.Li "uname -r" .
201.It Li OSVERS
202Expands to the output of
203.Li "uname -v" .
204.El
205.Pp
206Additional variables can be defined with the
207.Fl D
208option of
209.Xr automount 8
210and
211.Xr automountd 8 .
212.Pp
213To pass a location that begins with
214.Li / ,
215prefix it with a colon.
216For example,
217.Li :/dev/cd0 .
218.Pp
219This example, when put into
220.Pa /etc/auto_example ,
221and with
222.Nm
223referring to the map as described above, specifies that the NFS share
224.Li 192.168.1.1:/share/example/x
225will be mounted on
226.Pa /example/x/
227when any process attempts to access that mountpoint, with
228.Li intr
229and
230.Li nfsv4
231mount options, described in
232.Xr mount_nfs 8 :
233.Bd -literal -offset indent
234.Li x -intr,nfsv4 192.168.1.1:/share/example/x
235.Ed
236.Pp
237Automatically mount an SMB share on access, as a guest user,
238without prompting for a password:
239.Bd -literal -offset indent
240.Li share -fstype=smbfs,-N ://@server/share
241.Ed
242.Pp
243Automatically mount the CD drive on access:
244.Bd -literal -offset indent
245.Li cd -fstype=cd9660 :/dev/cd0
246.Ed
247.Sh SPECIAL MAPS
248Special maps have names beginning with
249.Li - .
250Supported special maps are:
251.Pp
252.Bl -tag -width "-noauto" -compact
253.It Li -hosts
254Query the remote NFS server and map exported shares.
255This map is traditionally mounted on
256.Pa /net .
257Access to files on a remote NFS server is provided through the
258.Pf /net/ Ar nfs-server-ip Ns / Ns Ar share-name Ns /
259directory without any additional configuration.
260Directories for individual NFS servers are not present until the first access,
261when they are automatically created.
262.It Li -media
263Query devices that are not yet mounted, but contain valid filesystems.
264Generally used to access files on removable media.
265.It Li -noauto
266Mount filesystems configured in
267.Xr fstab 5
268as "noauto".
269This needs to be set up as a direct map.
270.It Li -null
271Prevent
272.Xr automountd 8
273from mounting anything on the mountpoint.
274.El
275.Pp
276It is possible to add custom special maps by adding them, as executable
277maps named
278.Pa special_foo ,
279to the
280.Pa /etc/autofs/
281directory.
282.Sh EXECUTABLE MAPS
283If the map file specified in
284.Nm
285has the execute bit set,
286.Xr automountd 8
287will execute it and parse the standard output instead of parsing
288the file contents.
289When called without command line arguments, the executable is
290expected to output a list of available map keys separated by
291newline characters.
292Otherwise, the executable will be called with a key name as
293a command line argument.
294Output from the executable is expected to be the entry for that key,
295not including the key itself.
296.Sh INDIRECT VERSUS DIRECT MAPS
297Indirect maps are referred to in
298.Nm
299by entries with a fully qualified path as a mount point, and must contain only
300relative paths as keys.
301Direct maps are referred to in
302.Nm
303by entries with
304.Li /-
305as the mountpoint, and must contain only fully qualified paths as keys.
306For indirect maps, the final mount point is determined by concatenating the
307.Nm
308mountpoint with the map entry key and optional map entry mountpoint.
309For direct maps, the final mount point is determined by concatenating
310the map entry key with the optional map entry mountpoint.
311.Pp
312The example above could be rewritten using direct map, by placing this in
313.Nm :
314.Bd -literal -offset indent
315.Li /- auto_example
316.Ed
317.Pp
318and this in
319.Li /etc/auto_example
320map file:
321.Bd -literal -offset indent
322.Li /example/x -intr,nfsv4 192.168.1.1:/share/example/x
323.Li /example/share -fstype=smbfs,-N ://@server/share
324.Li /example/cd -fstype=cd9660 :/dev/cd0
325.Ed
326.Sh DIRECTORY SERVICES
327Both
328.Nm
329and maps may contain entries consisting of a plus sign and map name:
330.Bd -literal -offset indent
331.Li +auto_master
332.Ed
333.Pp
334Those entries cause
335.Xr automountd 8
336daemon to retrieve the named map from directory services (like LDAP)
337and include it where the entry was.
338.Pp
339If the file containing the map referenced in
340.Nm
341is not found, the map will be retrieved from directory services instead.
342.Pp
343To retrieve entries from directory services,
344.Xr automountd 8
345daemon runs
346.Pa /etc/autofs/include ,
347which is usually a shell script, with map name as the only command line
348parameter.
349The script should output entries formatted according to
350.Nm
351or automounter map syntax to standard output.
352An example script to use LDAP is included in
353.Pa /etc/autofs/include_ldap .
354It can be symlinked to
355.Pa /etc/autofs/include .
356.Sh FILES
357.Bl -tag -width ".Pa /etc/auto_master" -compact
358.It Pa /etc/auto_master
359The default location of the
360.Pa auto_master
361file.
362.It Pa /etc/autofs/
363Directory containing shell scripts to implement special maps and directory
364services.
365.El
366.Sh SEE ALSO
367.Xr autofs 4 ,
368.Xr automount 8 ,
369.Xr automountd 8 ,
370.Xr autounmountd 8
371.Sh AUTHORS
372The
373.Nm
374configuration file functionality was developed by
375.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
376under sponsorship from the FreeBSD Foundation.
377