Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > P


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


pcnfsd: rpc.pcnfsd — PC-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 describes version two of the pcnfsd server.

pcnfsd can be started from the /sbin/init.d/nfs.server startup script by setting the PCNFS_SERVER variable to 1 in /etc/rc.config.d/nfsconf, or from the inetd daemon (see inetd(1M)). It reads the configuration file /etc/pcnfsd.conf, if present, and services RPC requests directed to program number 150001. The pcnfsd daemon supports 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 categories have administrative significance.


When pcnfsd receives a PCNFSD_AUTH or PCNFSD2_AUTH request, it will "log in" the user by validating the user name and password, returning the corresponding user ID, group IDs, home directory, and umask. The PCNFSD protocol supports user names up to 32 characters for authentication requests.

pcnfsd will also append a record to the wtmps data base (see wtmps(4)). If you do not want PC "logins" recorded in this way, add a line to the /etc/pcnfsd.conf file in the form:

wtmp off

By default, pcnfsd will only allow authentication or print requests for users with user IDs in the range 101 to MAXUID. To override this, add a line to the /etc/pcnfsd.conf file in the form:

uidrange range [, range ]...

where each range is a user ID number in the form


or an inclusive range of user ID numbers in the form


NOTE: pcnfsd will deny authentication if the /etc/shells file is incorrectly setup.


pcnfsd supports a printing model that uses NFS to transfer 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 is exported by NFS for use by the client. pcnfsd creates a subdirectory for each client. By default, the parent directory is /var/spool/pcnfs, and the name of each subdirectory is the same as its client's host name. The PCNFSD protocol limits the length of the absolute path of the client's spool directory to 64 characters. To use a different parent directory, add a line to the /etc/pcnfsd.conf file in the form:

spooldir path

Once a client has mounted the spool directory using NFS, and transferred print data to a file in that directory, it will issue a PCNFSD_PR_START or PCNFSD2_PR_START request. pcnfsd handles most print-related requests by constructing a command based on the printing services of the server's operating system, and executing that command using the identity of the PC user. Because this involves set-user-ID privileges, pcnfsd must be run as root. The PCNFSD protocol supports user names up to 64 characters for print requests.

Every print request from a client includes the name of the printer to be used. This name corresponds to a printer that has been configured into the line printer spooling system using the lpadmin command. The PCNFSD protocol only supports printer names up to 64 characters. Any printer configured using the lpadmin command with a name greater than 64 characters will be ignored by pcnfsd.

To process print data in a special way (for example, to print it in landscape mode, or to print it in duplex mode), define a new printer and arrange for the client to print to that printer. There are two ways to define the new printer:

  • You can add a new printer to the line printer spooling system that uses a different printer model script, and arrange for the client to use the new printer. Do this using the lpadmin command (see lpadmin(1M)).

  • pcnfsd includes a mechanism to define virtual printers known only to pcnfsd clients. Each of these printers is defined by an entry in the file /etc/pcnfsd.conf using the following format:

    printer name alias-for command

    with the following values:


    The name of the printer, as it will be referred to in print requests from clients.


    The corresponding name for the printer, as it is defined in the line printer spooling system. 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 within pcnfsd that has no corresponding printer defined in the line printer spooling system, use a single hyphen (-) for this field. For an example, see the definition of the printer test in the EXAMPLES section below.


    A command that will be executed whenever a file is printed on name. This command is executed by the POSIX shell, /usr/bin/sh using the -c option. For complex operations, construct an executable shell program and execute that in command.

    Within command the following tokens will be replaced:




    Replaced by the full path name of the print data file. When the command has been executed, the file will be unlinked.


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


    Replaced by the host name of the client system.


By checking the modification time (and contents) of the file /var/spool/lp/pstatus, pcnfsd will detect when printers have been added or deleted, and will rebuild its list of valid printers. However, pcnfsd does not monitor the file /etc/pcnfsd.conf for updates; if you change this file, you must kill and restart pcnfsd for the changes to take effect.


Given the following entries for the file /etc/pcnfsd.conf:

printer abc lj lp -dlj -oraw printer test - /usr/bin/cp $FILE /usr/tmp/$HOST-$USER

If a user on a client system prints a job on printer abc, the request will be sent to destination lj in raw mode.

If the client requests a list of the print queue for printer abc, the pcnfsd daemon will translate this into a request for a listing for printer lj.

Printer test is used only for testing. Any file sent to this printer will be copied into the directory /usr/tmp. Any request to list the queue, check the status, and so on, of printer test will be rejected because alias-for has been specified as a hyphen (-).


/etc/pcnfsd.conf /etc/rc.config.d/nfsconf /var/spool/lp/pstatus /var/spool/pcnfs /etc/shells

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.