pcnfsd

NAME

SYNOPSIS

/usr/sbin/pcnfsd

DESCRIPTION

The pcnfsd daemon is an
RPC
server that supports ONC clients on PC (DOS, OS/2, Macintosh, and other)
systems. This reference page describes Version 2 of the
pcnfsd server.

The rpc.pcnfsd daemon is started via /etc/rc.config
by default. It can be turned off by running nfssetup
and by answering 'no' to the appropriate question.
The pcnfsd daemon reads the /etc/pcnfsd.conf configuration
file 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.

The requests serviced by pcnfsd
fall into three categories: authentication, printing, and other. Only the
authentication and printing services have administrative significance.

AVAILABILITY

This program can be redistributed freely.

AUTHENTICATION

When pcnfsd receives a PCNFSD_AUTH or PCNFSD2_AUTH
request, it "logs in" the user by validating the user name and
password and returning the corresponding UID, GIDs, home directory,
and umask.

By default, pcnfsd only allows authentication requests for users
with UIDs in the range 101 to 60002. (This corresponds in SVR4 to the
range for non-system accounts.) To override this, you can add a line in
the following format to the /etc/pcnfsd.conf file. Here each range
is either of the following forms indicating an inclusive range:
uidrange uid

uidrange uid-uid

PRINTING

The pcnfsd daemon 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 that
the client can use and that is exported by NFS.
The pcnfsd daemon creates a subdirectory for each of its clients: the
parent directory is normally /usr/spool/pcnfs
and the subdirectory is the host name of the client system.
You must also export the /usr/spool/pcnfs directory to the PC
clients. If you want to use a different parent directory, add a
line of the following format to the /etc/pcnfsd.conf file:

spooldir path

Once a client has mounted the spool directory by using NFS
and has transferred print data to a file in this directory, the client
issues a PCNFSD_PR_START or PCNFSD2_PR_START
request. The pcnfsd daemon handles this, and most other
print-related requests, by
constructing a command based on the printing services of
the server operating system and by 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. This name corresponds to a printer
definition in the /etc/printcap
database. If you want to define a nonstandard 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
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 format:

printer name alias-for command

The name variable is the name of the printer you want to define
and the alias-for variable is the name of a ``real'' printer that
corresponds to this printer. For
example, a request to display the queue for name is 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 dash (-) for this field. (See the
definition of the printer test
below for an example.) The command variable is a
command that 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 pathname of the print data file. When
the command has been executed, the file will be unlinked.

$USER

Replaced by the user name of the user logged in to the client system.

$HOST

Replaced by the host name of the client system.

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, and so on of printer
test
will be rejected because the alias-for has been specified as a
dash (-).