I've set up a Fedora 10 server and I want to print to an attached printer from three Windows Vista and two XP workstations.
After much manual reading I got this situation:
- All workstations can print
- One workstation can print from all but one application.
The offender is IE7 (and IE8) from a Vista Business workstation. Everytime a print job is started from this application on that specific workstation I get an "access denied" error in the CUPS logs. Printing from IE from other workstations works. (WTF?!)
My current workaround is to first print to a PDF file and then print this PDF from Adobe Reader from the same workstation.
A secondary problem is that I don't have much experience with Fedora/Linux, so this might be a noob question. Sorry if that's the case.
- What could be the problem?
- "Access denied" to what? The log doesn't give any more information on which resource the access has been denied. What are the usual suspects?
- What's the best way to debug such situations?
I'm not using Samba for printing, I just could not get it working. I'm using CUPS with no authentication, i.e. everyone can print.
On the workstations I've added the printers as "internet printer", providing this URL https://myserver:631/printers/myprinter
EDIT: I updated to Fedora 11 and the problem still exists...
EDIT 2: Some more information:
- I updated to Fedora 12 and the problem still exists
- Printing from Adobe Reader as an Internet Explorer plugin results in the same problem, so it seems the problem is somewhere with the process itself.
The problem might be the format of the data that is sent to the printer. Do you use native printer drivers on the windows workstation? If so, you might need to enable "raw" printing, that is, sending raw binary print codes from the workstation through to the printer.
You might need to edit the cups configuration file and uncomment
application/octet-stream
to enable raw printing. I'm not sure what the security ramifications of this are.The other thing that may or may not work for you is setting your printer up as a postscript printer, using a generic postscript driver on the Windows client. However, I've rarely gotten this to work properly.
How are you exposing the printer ... via Samba I assume? As Mr. Shiny and New said, you probably want to expose the printer as a "raw" printer, allowing the Windows devices to use the normal drivers to talk to the printer. This is how I've always exposed printers from a Linux server to Windows clients.
To debug this, you'll want to look at the Samba logs as well as the CUPS logs. First check the Samba logs to see if you can see access from the Windows machines to the printer. Also check the CUPS logs. Look for errors in either set of logs.
If you have selinux enabled, then for testing purposes only execute the command:
After doing this, restart Samba and CUPS and try access. If this makes a difference, then you may need to look in the selinux audit logs to change some permissions there. Assuming you normally have selinux in enforcing mode, when you're done with testing, re-enable it with: