lpoptions: printer has no PPD file unless root

George gk at t-t-l.co.uk
Tue Nov 30 14:08:31 PST 2004


I sussed it.  For the benefit of anyone searching later...

It was simply that I messed up /var/tmp/ where the normal user was trying to create a temporary file and couldn't.  Once I fixed the permissions it all started working.

It would have been nice to get a more accurate error message though :)

George wrote:
> Trying to use lopotions -l as a normal user returns
> lpoptions: Destination samsung has no PPD file!
> although root returns sensible results.
>
> The only possibilities I spotted with searching the lists regarded SeverName but this has made no difference.  Here is my cupsd.conf
>
> DocumentRoot /usr/share/cups/docs
> LogLevel debug2
> User lp
> Group lp
> SystemGroup lp
> <Location />
> Order Deny,Allow
> Deny From All
> Allow From 127.0.0.1
> </Location>
> <Location /admin>
> AuthType Basic
> AuthClass System
> Order Deny,Allow
> Deny From All
> Allow From 127.0.0.1
> </Location>
>
> I am using 1.1.22 and the following extracts look to be the relevant part from the error_log.  All other lines in the log are the same whichever user tries the command.
>
> I've tried to keep this post shortish so if I've snipped anything that matters then just ask for more detail...
>
> For both users:
>
> AcceptClient(lis=0x807e4c0) 0 NumClients = 0
> AcceptClient: 5 from localhost:631.
> AcceptClient: Adding fd 5 to InputSet...
> ReadClient: 5, used=0, file=-1
> ReadClient: 5 POST / HTTP/1.1
> decode_auth(0x402aa008): Authorization string = ""
> decode_auth: 5 username=""
> IsAuthorized: con->uri = "/"
> FindBest: uri = "/"...
> FindBest: Location / Limit 7f
> FindBest: Location /admin Limit 7f
> FindBest: best = "/"
> IsAuthorized: auth = 0, satisfy=0...
> POST /
> CONTENT_TYPE = application/ipp
> ReadClient: 5 con->data_encoding = length, con->data_remaining = 137, con->file = -1
> <snip>
> LoadAllPrinters: Loading printer samsung...
> AddPrinter("samsung")
> Adding filter application/vnd.cups-raw printer/samsung 0 -
> FindBest: uri = "/printers/samsung"...
> <snip>
> ProcessIPPRequest(0x402aa008[5]): operation_id = 4005
> get_printers(0x402aa008[5], 1)
> ProcessIPPRequest: 5 status_code=1
> ProcessIPPRequest: Adding fd 5 to OutputSet...
> WriteClient: Removing fd 5 from OutputSet...
> ReadClient: 5, used=0, file=-1
> ReadClient: 5 POST / HTTP/1.1
> <snip>
> ReadClient: 5 con->data_encoding = length, con->data_remaining = 77, con->file = -1
> ProcessIPPRequest(0x402aa008[5]): operation_id = 4001
> get_default(0x402aa008[5])
> copy_attrs(0x808e280, 0x8087590, (nil), 0)
> <snip>
> ProcessIPPRequest: 5 status_code=0
> ProcessIPPRequest: Adding fd 5 to OutputSet...
> WriteClient: Removing fd 5 from OutputSet...
>
> Now this is where thigs differ, firstly root:
>
> AcceptClient(lis=0x807e4c0) 0 NumClients = 1
> AcceptClient: 7 from localhost:631.
> AcceptClient: Adding fd 7 to InputSet...
> ReadClient: 5, used=0, file=-1
> ReadClient: httpGets returned EOF...
> CloseClient: 5
> CloseClient: Removing fd 5 from InputSet and OutputSet...
> ReadClient: 7, used=0, file=-1
> ReadClient: 7 POST / HTTP/1.1
>
> now user george:
>
> ReadClient: 5, used=0, file=-1
> ReadClient: httpGets returned EOF...
> CloseClient: 5
> CloseClient: Removing fd 5 from InputSet and OutputSet...
> AcceptClient(lis=0x807e4c0) 0 NumClients = 0
> AcceptClient: 5 from localhost:631.
> AcceptClient: Adding fd 5 to InputSet...
> ReadClient: 5, used=0, file=-1
> ReadClient: 5 POST / HTTP/1.1
>
> Then we get the same again but with root using "7" and george using "5"
>
> <snip>
> ReadClient: 7 con->data_encoding = length, con->data_remaining = 204, con->file = -1
> ProcessIPPRequest(0x402aa008[7]): operation_id = 000b
> ProcessIPPRequest: URI="ipp://localhost/printers/samsung"
> get_printer_attrs(0x402aa008[7], ipp://localhost/printers/samsung)
> add_printer_state_reasons(0x402aa008[7], 0x8086fb0[samsung])
> add_queued_job_count(0x402aa008[7], 0x8086fb0[samsung])
> copy_attrs(0x808fd20, 0x8087590, (nil), 0)
> copy_attribute(0x808fd20, 0x80875b8[printer-uri-supported,4,45])
> <snip>
> ProcessIPPRequest: 7 status_code=0
> ProcessIPPRequest: Adding fd 7 to OutputSet...
> WriteClient: Removing fd 7 from OutputSet...
>
> This is where root receives the ppd file info but george gets nothing
>
> ReadClient: 7, used=0, file=-1
> ReadClient: 7 GET /printers/samsung.ppd HTTP/1.1
> <snip>
>
> then back to the same with "7" or "5" according to user
>
> ReadClient: 7, used=0, file=-1
> ReadClient: httpGets returned EOF...
> CloseClient: 7
> CloseClient: Removing fd 7 from InputSet and OutputSet...
>
> I have no idea where to go next in working this out so any and all help will be much appreciated, as this is part of wider printing problems. This is at least command line only and easy to describe so it looks like a good place to start.
>
> Thanks,
> George.





More information about the cups mailing list