NAME
pcnfsd, rpc.pcnfsd - (PC)NFS authentication and print request server
SYNOPSIS
/usr/sbin/rpc.pcnfsd
DESCRIPTION
pcnfsd is an
RPC server that supports Sun ONC clients on
PC (DOS, OS/2, Macintosh, and other) systems. This page describes version two
of the
pcnfsd server.
rpc.pcnfsd may be started from
/etc/rc.local or by the
inetd(8) superdaemon. It reads the configuration file
/etc/pcnfsd.conf if present, and then services RPC requests directed to
program number 150001. This release of the
pcnfsd daemon supports both
version 1 and version 2 of the pcnfsd protocol. Consult the
rpcgen
source file
pcnfsd.x for details of the protocols.
The requests serviced by
pcnfsd fall into three categories:
authentication, printing, and other. Only the authentication and printing
services have administrative significance.
AUTHENTICATION
When
pcnfsd receives a
PCNFSD_AUTH or
PCNFSD2_AUTH request,
it will "log in" the user by validating the username and password
and returning the corresponding uid, gids, home directory, and umask. If
pcnfsd was built with the
WTMP compile-time option, it will also
append a record to the
wtmp(5) data base. If you do not wish to record
PC "logins" in this way, you should add a line of the form
to the
/etc/pcnfsd.conf file.
PRINTING
pcnfsd supports a printing model based on the use of NFS to transfer the
actual print data from the client to the server. The client system issues a
PCNFSD_PR_INIT or
PCNFSD2_PR_INIT request, and the server
returns the path to a spool directory which the client may use and which is
exported by NFS.
pcnfsd creates a subdirectory for each of its clients:
the parent directory is normally
/export/pcnfs and the subdirectory is
the hostname of the client system. If you wish to use a different parent
directory, you should add a line of the form
to the
/etc/pcnfsd.conf file.
Once a client has mounted the spool directory using NFS and has transferred
print data to a file in this directory, it will issue a
PCNFSD_PR_START
or
PCNFSD2_PR_START request.
pcnfsd handles this, and most other
print-related requests, by constructing a command based on the printing
services of the server operating system and executing the command using the
identity of the PC user. Since this involves set-user-id privileges,
pcnfsd must be run as root.
Every print request from the client includes the name of the printer which is to
be used. In SunOS, this name corresponds to a printer definition in the
/etc/printcap(5) database. If you wish to define a non-standard way of
processing print data, you should define a new printer and arrange for the
client to print to this printer. There are two ways of setting up a new
printer. The first involves the addition of an entry to
/etc/printcap(5) and the creation of filters to perform the required
processing. This is outside the scope of this discussion. In addition,
pcnfsd includes a mechanism by which you can define virtual printers
known only to
pcnfsd clients. Each printer is defined by a line in the
/etc/pcnfsd.conf file of the following form
printer name alias-for command
name is the name of the printer you want to define.
alias-for is
the name of a "real" printer which corresponds to this printer. For
example, a request to display the queue for
name will be translated
into the corresponding request for the printer
alias-for. If you have
defined a printer in such a way that there is no "real" printer to
which it corresponds, use a single "-" for this field. (See the
definition of the printer
test below for an example.)
command is
a command which will be executed whenever a file is printed on
name.
This command is executed by the Bourne shell,
/bin/sh using the
-c option. For complex operations you should construct an executable
shell program and invoke that in
command. Within
command the
following tokens will be replaced:
- Token
- Substitution
- $FILE
- Replaced by the full path name of the print data file. When
the command has been executed, the file will be unlinked.
- $USER
- Replaced by the username of the user logged in to the
client system.
- $HOST
- Replaced by the host name of the client system.
Consider the following example
/etc/pcnfsd.conf file:
printer rotated lw /usr/local/bin/enscript -2r $FILE
printer test - /usr/bin/cp $FILE /usr/tmp/$HOST-$USER
If a client system prints a job on the printer
rotated the utility
enscript will be invoked to pre-process the file $FILE. In this case,
the
-2r option causes the file to be printed in two-column rotated
format on the default PostScript® printer. If the client requests a list
of the print queue for the printer
rotated the
pcnfsd daemon
will translate this into a request for a listing for the printer
lw.
The printer
test is used only for testing. Any file sent to this printer
will be copied into
/usr/tmp. Any request to list the queue, check the
status, etc. of printer
test will be rejected because the
alias-for has been specified as "-".
FILES
- /etc/pcnfsd.conf
- configuration file
- /export/pcnfs
- default print spool directory
SEE ALSO
lpr(1),
lpc(8)
HISTORY
The
pcnfsd source code is distributed by Sun Microsystems, Inc. with
their
PC/NFS product under terms described in common.h in that
source code. Those terms require that you be informed that this version of
pcnfsd was modified to run on NetBSD and is NOT supported by Sun.