Bug 1178604

Summary: cups cannot print to remote cups: Could not start IPP Backend (/usr/lib/cups/backend/ipp): 13 Permission denied
Product: [openSUSE] openSUSE Tumbleweed Reporter: Luiz Angelo Daros de Luca <luizluca>
Component: PrintingAssignee: Johannes Meixner <jsmeix>
Status: RESOLVED FIXED QA Contact: Johannes Meixner <jsmeix>
Severity: Major    
Priority: P5 - None CC: lubos.kocman, mephisto, michael.lashkevich, pieter, stefan.fent, werner
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: openSUSE Tumbleweed   
URL: https://github.com/OpenPrinting/cups-filters/issues/183
Whiteboard:
Found By: Community User Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Luiz Angelo Daros de Luca 2020-11-09 21:46:37 UTC
Hello,

For some time with Tumbleweed and now also with Leap 15.2, I cannot print to a remote cups server directly polled with:

  cupsd-browsed.conf:
  BrowsePoll remote.cups.server.addr
  LocalQueueNamingRemoteCUPS RemoteName

All remote cups printers are network printers. If I add that remote printer as a local printer (with remote uri), it works as expected.

I can list all remote printers correctly and I can print manually from my machine using:

  lp -h remote.cups.server.addr -d printername -t testjob a.txt

While this fails:

  lp -d printername -t testjob a.txt

with:

  Could not start IPP Backend (/usr/lib/cups/backend/ipp): 13 Permission denied


I used strace to follow the calls from cups until ipp and saw this:

[pid 29201] execve("/usr/lib/cups/daemon/cups-exec", ["/usr/lib/cups/daemon/cups-exec", "-g", "7", "-n", "0", "-u", "4", "none", "/usr/lib/cups/filter/texttopdf", ..., "/var/spool/cups/d00109-001"])
[pid 29201] execve("/usr/lib/cups/filter/texttopdf", [..., "/var/spool/cups/d00109-001"])
[pid 29202] execve("/usr/lib/cups/daemon/cups-exec", ["/usr/lib/cups/daemon/cups-exec", "-g", "7", "-n", "0", "-u", "4", "none", "/usr/lib/cups/backend/implicitclass", "implicitclass://printername/", ...])
[pid 29202] execve("/usr/lib/cups/backend/implicitclass", ["implicitclass://printername/", ...])
[pid 29203] execve("/usr/lib/cups/filter/gziptoany", ["ipp://remote.cups.server.addr:631/printers/printername", ..., "/var/spool/cups/tmp/072125faaaeab"])
[pid 29204] execve("/usr/lib/cups/backend/ipp", ["ipp://remote.cups.server.addr:631/printers/printername", "/var/spool/cups/tmp/072125fab6733"])

So cups switch to user 4(lp) group 7(lp), calls implicitclass, which calls gziptoany and ipp. However, ipp cannot be used by lp:

-rwxr-xr-x 1 root root 23096 ago 25 16:42 /usr/lib/cups/backend/implicitclass
-rwx------ 1 root root 84104 out 26 13:42 /usr/lib/cups/backend/ipp
-rwxr-xr-x 1 root root 14384 out 26 13:42 /usr/lib/cups/filter/gziptoany

If I change ipp owner to lp, printing works as expected.

As it might be a good reason for 0700 permission, I'll not guess the correct solution.
Anyway, the fix needs to be backported to 15.2
Comment 1 Johannes Meixner 2020-11-10 06:45:03 UTC
Luiz Angelo Daros de Luca
thank you for your clear and descriptive issue report
and in particular for your analysis and your solution!
It is much appreciated because such reports help us a lot.

I did the same analysis in the duplicate bug #1175113
but there I got no reply from the reporter whether or not
# chmod u=rwx,g=,o= /usr/lib/cups/backend/implicitclass
helped him.

See
https://github.com/OpenPrinting/cups-filters/issues/183
(which is also linked in bug #1175113) and therein
https://github.com/OpenPrinting/cups-filters/issues/183#issuecomment-570196216
where Till Kamppeter explains why
# chmod u=rwx,g=,o= /usr/lib/cups/backend/implicitclass
is better in general than changing ipp owner to lp.

In bug #1175113 there is a link to bug #1174709
where the initial comment
https://bugzilla.opensuse.org/show_bug.cgi?id=1174709#c0
tells that installing cups-filters from the OBS Printing repository
helped to fix bug #1174709.

Currently we (i.e. openSUSE) have cups-filters version 1.27.2
in the OBS Printing development project and in openSUSE:Factory
which means that version is currently also in Tumbleweed.

But you tell that this issue here appears also in Tumbleweed
which indicates cups-filters version 1.27.2 is not sufficient
to get this problem here fixed so that we need a more up-to-date
cups-filters version to get both issues fixed.

Is this right or does your Tumbleweed perhaps somehow still
have an older cups-filters version?
Comment 2 Johannes Meixner 2020-11-10 06:49:46 UTC
Stuipd me - dumb question.

That the "implicitclass" backend gets installed with 0700 permissions
is not an issue in the cups-filters sources so the cups-filters version
does not matter.

That the "implicitclass" backend gets installed with 0700 permissions
is an issue in our RPM spec file.
I will fix the right now...
Comment 3 OBSbugzilla Bot 2020-11-10 08:00:08 UTC
This is an autogenerated message for OBS integration:
This bug (1178604) was mentioned in
https://build.opensuse.org/request/show/847408 Factory / cups-filters
Comment 4 Johannes Meixner 2020-11-10 13:07:29 UTC
New (hopefully fixed) cups-filters RPMs
in the OBS development project "Printing"
for openSUSE_Leap_15.2 x86_64 are available from
http://download.opensuse.org/repositories/Printing/openSUSE_Leap_15.2/x86_64/

Please test them if it is possible for you to use
RPMs from the "Printing" development project and if yes
provide feedback if this issue is fixed in your environment.

Regarding using RPMs from the "Printing" development project
see the "Printing" project description at
https://build.opensuse.org/project/show/Printing
Comment 5 Luiz Angelo Daros de Luca 2020-11-11 06:17:26 UTC
If fixed the issue. Thanks
Comment 6 Johannes Meixner 2020-11-19 06:45:16 UTC
Fixed for openSUSE Factory and Tumbleweed:
https://build.opensuse.org/request/show/847408 was accepted
and the fixed cups-filters RPM package is in
openSUSE Tumbleweed snapshot 20201114, cf.
https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6NLC2T3VJ27BXG5KMGMEH4LXDRHE2MSR/

Because on openSUSE Leap 15.2 the cups-filters package is
inherited from SLES15 SP2 the fix for openSUSE Leap 15.2
must be done for SLES15 SP2 which will be handled via
a separated SUSE internal bug for SLES15 SP2.

For now (unitl the SLES15 SP2 fix appears in openSUSE Leap 15.2)
openSUSE Leap 15.2 users can install the fixed cups-filters RPM
from the openSUSE Build Service development project "Printing"
as described above in
https://bugzilla.suse.com/show_bug.cgi?id=1178604#c4
Comment 7 Johannes Meixner 2020-11-19 06:48:53 UTC
*** Bug 1175113 has been marked as a duplicate of this bug. ***
Comment 8 Johannes Meixner 2020-11-19 06:51:33 UTC
*** Bug 1174709 has been marked as a duplicate of this bug. ***
Comment 12 Johannes Meixner 2021-06-14 09:45:34 UTC
*** Bug 1187029 has been marked as a duplicate of this bug. ***
Comment 13 Johannes Meixner 2022-01-14 11:45:18 UTC
*** Bug 1194560 has been marked as a duplicate of this bug. ***
Comment 14 H Markert 2022-06-07 14:06:28 UTC
This bug still exists on a freshly installed leap 15.4 RC machine.
When will it be fixed in the leap repositories?