<2>fam2><1> is a server that tracks changes to the filesystem and
relays these changes to interested applications.
Applications such as
1><2>fm2><1>(1G) and mailbox(1) present an up-to-date view of the filesystem.
In the absence of 1><2>fam2><1>, these applications and others like them
are forced to poll the filesystem to detect changes.
1><2>fam2><1> is
more efficient.
Applications can request 1><2>fam2><1> to monitor any files or directories in
any filesystem.
When 1><2>fam2><1> detects changes to monitored files, it notifies
the appropriate application.
The FAM API provides a programmatic interface to 1><2>fam2><1>; see
fam (3X). 1><2>fam2><1> is informed of filesystem changes as they happen by the
kernel through the 1><2>imon2><1>(7M) pseudo device driver.
If asked to
monitor files on an NFS mounted filesystem, 1><2>fam2><1> tries to use
1><2>fam2><1> on the NFS server to monitor files.
If 1><2>fam2><1> cannot
contact a remote 1><2>fam2><1>, it polls the files instead.
1><2>fam2><1> also polls special files.
Normally, 1><2>fam2><1> is started by 1><2>inetd2><1>(1M).
It is registered with
1><2>portmap2><1>(1M) as performing the sgi_fam service.
1>
OPTIONS
<3>-l3><1>
Disable polling of NFS
files.
It does not disable use of remote <2>fam2><1> on NFS servers,
nor does it disable polling of local files.
1>
1>
<3>-t3><1> 1><2>NFS_polling_interval2><1>
Set the interval for polling files to <2>NFS_polling_interval2><1> seconds.
The default
is six seconds.
1>
1>
<3>-T3><1> 1><2>idle_timeout2><1>
Set the idle timeout interval to <2>idle_timeout2><1>.
fam exits 1><2>idle_timeout2><1> seconds after its
last client disconnects.
A value of 0 causes fam to wait indefinitely for new connections.
The default is five seconds.
1>
1>
<3>-f3><1>
Remain in the foreground instead of spawning a child and exiting.
This option is ignored if <2>fam2><1> is started by 1><2>inetd2><1>.
1>
1>
<3>-v3><1>
Turn on verbose messages.
1>
<3>-d3><1>
Enable verbose messages and debug messages.
1>
<3>-p3><1> 1><2>program2><3>.3><2>version2><1>
Use the specified RPC program and version numbers.
1>
<3>-L3><1>
Local-only mode. <2>fam2><1> will only accept requests from clients running on the
local machine. This overrides the 1><2>local_only2><1> flag in the configuration
file. This option is ignored if 1><2>fam2><1> is started by 1><2>inetd2><1>.
1>
1>
<3>-C3><1>
Compatibility mode. This disables authentication and reduces access security
as described under SECURITY below. This overrides the
<2>insecure_compatibility2><1> flag in the configuration file.
1>
1>
<3>-c3><1> 1><2>config_file2><1>
Read configuration information from the given file rather than the default,
which is <2>/etc/fam.conf2><1>.
1>
1>
CONFIGURATION FILE
In addition to its command-line options, <2>fam2><1>'s behavior can also be
controlled through its configuration file. By default, this is
1><2>/etc/fam.conf2><1>; the 1><3>-c3><1> command-line option can be used to specify
an alternate file. Configuration lines are in the format 1><2>option=value2><1>.
Lines beginning with 1><2>#2><1> or 1><2>!2><1> are ignored.
1><2>fam2><1> recognizes the following options:
<3>insecure_compatibility3><1>
If set to <2>true2><1>, this disables authentication and reduces access security
as described under SECURITY below. This is 1><2>false2><1> by default. Setting
this option to 1><2>true2><1> is the same as using the 1><3>-C3><1> command-line
option.
1>
1>
<3>untrusted_user3><1>
This is the user name or UID of the user account which <2>fam2><1> will use for
unauthenticated clients. If a file can't be 1><2>stat2><1>'ed by this user,
1><2>fam2><1> will not tell unauthenticated clients about the file's existence.
If an untrusted user is not given in the configuration file, 1><2>fam2><1> will
write an error message to the system log and terminate.
1>
1>
<3>local_only3><1>
If set to <2>true2><1>, 1><2>fam2><1> will ignore requests from remote 1><2>fam2><1>s.
This is 1><2>false2><1> by default. Setting this option to 1><2>true2><1> is the same
as using the 1><3>-L3><1> command-line option. This option is ignored if
1><2>fam2><1> is started by 1><2>inetd2><1>.
1>
1>
<3>xtab_verification3><1>
If set to <2>true2><1>, 1><2>fam2><1> will check the list of exported filesystems
when remote requests are received to verify that the requests fall on
filesystems which are exported to the requesting hosts. This is
1><2>true2><1> by default. If this option is set to 1><2>false2><1>, 1><2>fam2><1> will
service remote requests without attempting to perform the verification. If
the 1><2>local_only2><1> configuration option or 1><3>-L3><1> command-line option is
used, 1><2>xtab_verification2><1> has no effect.
1>
1>
SECURITY
For backward compatibility, the <3>-C3><1> command-line option and
1><2>insecure_compatibility2><1> configuration option can be used to disable
authentication. Configuring 1><2>fam2><1> this way opens a publically known
security weakness whereby a "rogue client" can obtain the names of all the
files and directories on the system.
1><2>Note that fam never opens the files it's monitoring2><1>, and cannot
be used by a rogue client to read the contents of any file on the system.
1><2>fam2><1> only gives out the names of monitored files, and only monitors files
which the client can
stat (1M). 1>Users can stat a file without having read permission on it as long as
they have search permission on the directory containing it.