HLFSD(8)

NAME
hlfsd - home-link file-system daemon

SYNOPSIS
hlfsd [ -fhnpv ] [ -a alt_dir ] [ -c cache-interval ] [ -i reload-interval ] [ -l logfile ] [ -o mount-options ] [ -x log-options ] [ -D debug-options ] [ dirname [ subdir ] ]

DESCRIPTION
Hlfsd is a daemon that automatically points an arbitrary symbolic link to a subdirectory within a user's home directory, depending on the user which accessed that link. It was primarily designed to redirect incoming mail to users' home directories, so that it can read from anywhere.

Hlfsd operates by attaching itself as an NFS server to the specified dirname. Lookups within that directory are handled by hlfsd, which uses the password map to determine how to resolve the lookup. Generally, this will be the user's home directory, with subdir appended to it.

A SIGTERM sent to hlfsd will cause it to cleanly shutdown. A SIGHUP will flush the internal caches, and reload the password map.

OPTIONS

-a alt_dir
    Alternate directory. The name of the directory to which hlfsd will set its symbolic link, if it cannot access the home directory of the user. The default for alt_dir is /usr/spool/hlfsspool. It is expected that either users will read these files, or the system-administrators resend this "lost mail" to their owners.

-c cache-interval
    Caching interval. Hlfsd will cache entries for this interval, in seconds. Entries which have been verified within the last cache-interval seconds will not be verified again, since the operation could be expensive, and the entries are most likely still valid. After the interval has expired, hlfsd will re-verify the validity of the user's home directory, and reset the cache time-counter. The default value for cache-interval is 300 seconds (5 minutes).

-f  Force fast startup. This option tells hlfsd to ignore a few startup-time consistency checks. This option is not recommended unless you know exactly what it does.

-h  Help. Print a brief help message, and exit.

-i reload-interval
    Map-reloading interval. Each reload-interval seconds, hlfsd will reload the password maps. Hlfsd needs the password maps for the UIDs and home directory pathnames. Hlfsd schedules a SIGALRM to reload the password maps. A SIGHUP sent to hlfsd will force it to reload the maps immediately. The default value for reload-interval is 900 seconds (15 minutes.)

-l logfile
    Specify a log file to which hlfsd will record events. If logfile is the string syslog then the log messages will be sent to the system log daemon by syslog(3). This is also the default.

-n  No verify. Hlfsd will not verify the validity of the symbolic link it will be returning. This can speed up hlfsd at the cost of possibly handing over filehandles to user's home directories, on servers which are down. By default, Hlfsd validates the symbolic-link in the background, which involves an expensive fork(2). The -n option overrides the meaning of the -c option, since no caching is necessary.

-o mount-options
    Mount options. Mount options which hlfsd will use to mount itself on top of dirname. By default, mount-options is set to "ro", unless M_CACHE is defined, in which case it is set to "ro,nocache".

-p  Print PID. Outputs the process-id of hlfsd to standard output where it can be saved into a file.

-v  Version. Displays version information to standard error.

-x log-options
    Specify run-time logging options. The options are a comma separated list chosen from: fatal, error, user, warn, info, map, stats, all.

-D log-options
    Select from a variety of debugging options. Prefixing an option with the strings no reverses the effect of that option. Options are cumulative. The most useful option is all. Since -D is only used for debugging other options are not documented here. A fuller description is available in the program source. A SIGUSR1 sent to hlfsd will cause it to dump its internal password map to the file /tmp/hlfsdump.

FILES
/hlfs/home
    directory under which hlfsd mounts itself and manages the symbolic link home.
.hlfsspool
    default sub-directory in the user's home directory, into which hlfsd will point its home symlink, for mail delivery.
/usr/spool/hlfsspool
    directory to which hlfsd will point its symlink if it were unable to verify the that user's home directory is accessible. This is also the default place where mail bound for "root" is delivered.

CAVEATS
hlfsd is still in its beta stage, and needs more testing.

Need an automatic script to be used in cron(8) which would resend "lost mail".

Symbolic links on an NFS filesystem can be incredibly inefficient. In most implementations of NFS, their interpolations are not cached by the kernel and each time a symlink is encountered during a lookuppn translation it costs an RPC call to the NFS server. It would appear that a large improvement in real-time performance could be gained by adding a cache somewhere. Replacing symlinks with a suitable incarnation of the auto-mounter results in a large real-time speedup, but also causes a large number of process context switches.

SEE ALSO
amd(8), automount(8), cron(8), getgrent(3), getpwent(3), mail(1), mount(8), mtab(5), passwd(5), sendmail(8), umount(8).

HLFSD - The design and implementation of the Home-Link Filesystem

AUTHORS
Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>, Department of Computer Science, Columbia University, New York City, New York, USA.