The LPRng code has the ability to run as non-setuid software, and to use the non-default TCP/IP ports for communication. This facility allows a Test Version to be run in parallel with the normal LPRng software.
To simplify testing and portability issues,
a simple test version of the spool queues and jobs has been supplied with the
LPRng distribution.
These queues can be placed in a suitable location
(/tmp is common) and the LPRng software tested.
The test version of the software will use the LPD_CONF
environment variable to specify the location of the configuration file.
It will read this configuration file on startup and use the values
to override the normal defaults.
Since a user could maliciously set up their own configuration files
with values that could compromise system security,
it is strongly recommended that the test version is not made SETUID root.
In fact,
the LPRng code will chatter messages when the LPD_CONF ability is enabled
and it is run as root.
Edit src/Makefile, and uncomment the indicated line.
Then run make to regenerate the distribution.
#### ****** TESTING AND SECURITY LOOPHOLE ******************************
# Define GETENV to allow the LPD_CONFIG environment
# variable to be used as the name of a configuration file. In non-testing
# systems, this is a security loophole.
#CF := $(CF) -DGETENV
The LPRng TESTSUPPORT directory contains a set of shell scripts
and files that need to be installed in the appropriate directory.
The following steps are used.
HOST environment variable to the fully
qualified domain name of your host
and your USER environment variable to your user name.
This is done in order to get values to put into the Test Version configuration files.TESTSUPPORT directory,
edit the Makefile,
and specify the location of the Test Version spool queues.
The default location is /tmp;
since on most systems these files are deleted or are available to everybody,
a more secure location should most likely be used.
DO NOT USE THE RAW TESTFILE DIRECTORY.
These files need to be copied and placed in another directory.LPD_CONF environment variable should be set to the
location of the installed lpd.conf file.TESTSUPPORT directory,
run make.
This will copy and install the necessary files.Example:
CSH:
setenv HOST {fully qualified domain name};
setenv USER `whoami`
setenv LPD_CONF /tmp/LPD/lpd.conf
set path=( /tmp/LPD $path )
unsetenv PRINTER
Example:
setenv HOST astart1.astart.com
setenv USER papowell
setenv LPD_CONF /tmp/LPD/lpd.conf
set path=( /tmp/LPD $path )
unsetenv PRINTER
Bourne Shell:
HOST={fully qualified domain name}; export HOST;
USER='whoami'; export USER
LPD_CONF=/tmp/LPD/lpd.conf.$HOST; export LPD_CONF
PATH=/tmp/LPD:$PATH; export PATH
PRINTER=; export PRINTER
Example:
HOST=astart1.astart.com; export HOST
USER=papowell; export USER
LPD_CONF=/tmp/LPD/lpd.conf.$HOST; export LPD_CONF
PATH=/tmp/LPD:$PATH; export PATH
PRINTER=; export PRINTER
cd TESTSUPPORT
make
Set your current directory to the location of the compiled Test Version
executables.
Execute the various executables using ./cmd,
or set . as the first entry in the PATH .
If it is not the first entry,
then the standard system executables will be used.
./checkpc.
this will print out the various values for the spool queues in the Test Version
setup.
If the t1, t2,... spool queues are not displayed,
make sure that the LPD_CONF environment variable is set correctly and that you
are using the Test Version executable../checkpc -f.
This will fix up the (deliberately introduced) problems in the spool queues../lpd -F in one window,
and then run ./lpq -a in another window.
This will check that the server is working.Test Version flag from the
src/Makefile, recompile,
and install the LPRng software.