Welcome to Eric Hameleers (Alien BOB)'s Wiki pages.
Please leave your constructive comments on this page.
In Slackware 12 with CUPS 1.3.7 I found setting the pdf script to save the file did not work as expected. It appears the script is run as user lp, which cannot change the owner. Rather than remove the sticky bit, I used “sudo chown” to change the owner, of course that meant the following “chmod” failed, so I had to swap the two command. I also wanted to record the title of the pdf, so I added three lines to the script. That part of the script now looks like this: -
''## Normally the PDF file will be emailed to the creating user. ## Alternatively, you can decide not to email it, ## but leave the file on the server and restrict access by others: #if [ "$2" != "" ]; then # $MAILBIN $2 $OUTPUTFILENAME # rm -f $OUTPUTFILENAME #fi if [ "$2" != "" ]; then chmod 700 $OUTPUTFILENAME sudo chown $2 $OUTPUTFILENAME # Save the title of the file echo $3 >$OUTPUTFILENAME.title chmod 600 $OUTPUTFILENAME.title sudo chown $2: $OUTPUTFILENAME.title fi exit 0''
Is there a better way to achieve the same results?
(This is still the case in Slackware 13.37, with CUPS 1.4.6.)
I'm using the following, instead:
chmod 775 /var/spool/pdf chown lp:lp /var/spool/pdf
and making sure that the users I want to have access to the printed PDFs are in group lp.
This does mean that multiple users on my system could access my PDF prints, so there are still security implications.
Hi Erik, thanks for this guide! But I got it working only after
I did a chmod 755 on /usr/lib/cups/backend/pdf.
Yes you are right. Cups used to run as root (I wrote this article for Slackware 10) but modern cups processes run as user ”
lp”. The script needs to be owned by user ”
lp” or it needs to be ”
chmod 755”. I've fixed the article, thanks.
— Eric, Sun Feb 14 21:49:47 UTC 2010
The issue of saving the file, instead of mailing it, and copying it to a user's directory has popped up again in 14.0, with a slight variation to what Eric writes above. As Eric says, the pdf file in /var/spool/cups is owned by lp:lp (and also with the executable bit set – I modified the script so that the permission is 600, not 700). It seems the latest CUPS has changed permissions so that having /usr/lib/cups/backend/pdf owned by lp now longer works. The
chown within the script is failing again.
According to the CUPS docs here, “Backends that must run as root [ed: needed for the
chown] should use permissions of 0500 - read and execute by root, no access for other users.” So I have reverted back to that.
I changed the pdf backend script permissions to 0700 owned by root:lp and the script as is works fine, including any command at the end to move the pdf file out of the spool directory into your home directory. No need to add users to groups or other work.