pcnfsd -- NFS authentication and print request server




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

pcnfsd is started from /etc/nfs. 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.

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


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. At this time, pcnfsd will also append a record to the wtmp(F) data base. If you do not wish to record PC ``logins'' in this way, you should add a line of the form:
   wtmp off
to the /etc/pcnfsd.conf file.


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 /usr/spool/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:
   spooldir path
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. pcnfsd interprets a printer as either a destination serviced by the system print spooler, or as a virtual printer. Setting up the system print spooler to handle a new printer is described on the lpadmin(ADM) manual page. Virtual printers, known only to pcnfsd clients, are 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

 |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 entries from /etc/pcnfsd.conf:
   printer rotated lw /usr/local/bin/enscript -2r $FILE
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.

   printer test - /usr/bin/cp $FILE usr/tmp/$HOST-$USER
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 ``-''.
   printer printer1 - lp -c -dprinter1 -og $FILE
Print to printer1. If the print server cannot access the files to be printed, the -c option to lp must be specified to make spool copies for printing.


pcnfsd configuration file

root of spool area for pcnfsd; the owner, group, and permissions of this directory and its subdirectories should be root, sys, and ``0755'' respectively, assuming that root will run pcnfsd

See also

cancel(C), lp(C), lpstat(C), passwd(C)
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003