Update:
The modified startup script continues to work flawlessly
For anyone who is interested in finding out why this has to be done, I've found something interesting:
If the modified startup script is not used, at the next boot, we will receive the dreaded "Unable to open file "/var/spool/cups/xxx" - Permission denied" error - the problem xav and I have been experiencing.
What i've noticed is that when it doesn't work, the job will appear in the "jobs" section of cups under the user "anonyomous", or "nobody" or my windows username if I'm tryint to print through samba. Nothing gets printed, and cups shows status as stopped with the permission denied error. Also, -everything- that you try to print shows up in the status and does not go away.
However!, after running:
rm -fr /var/spool/cups
/etc/init.d/cups restart
1) everything in jobs disappears (naturally...we just deleted the spool directory)
2) anything that I print actually DOES print
3) EVERYTHING that I print (whether through lpn, cups test page, or windows samba client) shows up in the cups "jobs" page showing user "root" None of them show "nobody" or "anonoymous"!
So it seems that after a reboot, cups writes anything that gets printed into the spool directory with that user's username (e.g. nobody, anonymous), BUT once you delete the spool directory & restart cups (and cups re-builds the spool directory and "repairs permissions") any printed files get written to the spool directory as user "root"
This seems to be the key - it looks to me like at each reboot, cups writes print jobs to the spool directory as "nobody, etc.", and subsequently, the necessary filters aren't able to read the file because of permissions mismatch. After executing our "fix", everything gets written as root, so the filters are able to process the print jobs without errors.
I've also noticed that this bug doesn't seem to affect post-script printers because there is no filtering to be done.
It also doesn't seem to affect windows samba clients, printing to a non-postscript printer when you use the proper windows driver for your printer, and set it to "print directly to printer" (raw). I'm guessing that once again, this is because the file doesn't need to pass through any filters, cups simply sends the raw data to the printer, and it prints fine.
It only seems to affect non-postscript printers when printing anything from a linux box, including the cups "print test page" (because it has to pass through the appropriate filters).
If anyone is interested, the printer I'm using is a canon MP-240, and I'm using "Patriot"s Canon MP-240 Puppy pet package (from 3.00 source) from
http://www.murga-linux.com/puppy/viewtopic.php?t=47444
After viewing the cups error log in debug mode, I see that the printing process gets stopped when cups tries to pass the job through the "pstops" filter - the log shows "Unable to open file "/var/spool/cups/xxx" - Permission denied" THE SAME error that we see on the cups "printer" page.
So it has something to do with how cups writes the print jobs to /var/spool/cups & who "owns" the file. Seems that if it's not root, the filters can't read it.
Nonetheless, the modified startup script fixes the problem so I'm happy (and I can print!!)