The problem here is how Chromium obtains the printer capabilities
(available paper sizes, trays, resolutions, duplex, ...) to display them
in the print dialog and give the user the possibility to choose from
them.

Chromium reads the capabilities from the printer's PPD files in
/etc/cups/ppd/QUEUE_NAME.ppd. This works with a classic (*.deb packages)
installation of Chromium and the current version of CUPS (2.x) without
problems.

Now Chromium comes as a Snap, so it cannot read the host's file system
any more. snapd uses AppArmor to prevent that, therefore we see these
"... audit ... DENIED ..." messages in syslog.

Due to the fact that we are moving to immutable distros and sandboxed,
distro-independent packaging, this way how the print dialog works is not
suitable any more. We will also get CUPS 3.x next year which by nature
does not support PPD files at all any more, as PPD files are from the
old times of PostScript printers and nowadays we have IPP (Internet
Printing Protocol) printers which tell their capabilities by themselves.

Therefore I have, as part of my OpenPrinting work, conducted a change on
Chromium's print dialog, to not access CUPS and PPDs directly any more,
but use OpenPrinting's Common Print Dialog Backends instead. This is a
D-Bus protocol where the print dialog talks via D-Bus with backends, one
for each print technology in use (CUPS, cloud printing services, ...).
The D-Bus communication works over sandbox boundaries and also the
dialog does not deal with PPDs any more.

The implementation work was done in the Google Summer of Code 2023, by
Kushagra Sharma:

https://github.com/kushagra20251/GSoC/

The project is now available as a merge request to Chromium upstream and
needs to get merged:

https://chromium-review.googlesource.com/c/chromium/src/+/5007092

What is needed now is that this code gets merged, so that we have a
future-proof print dialog in Chromium.

** Changed in: chromium-browser (Ubuntu)
       Status: Confirmed => In Progress

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to chromium-browser in Ubuntu.
https://bugs.launchpad.net/bugs/2088333

Title:
  Chromium - printer unavailable - apparmor denial

Status in chromium-browser package in Ubuntu:
  In Progress

Bug description:
  Snap chromium loads fine but when I open print preview window and
  select a USB connected printer and on the left I get a message that
  the printer is unavailable for all installed printers. Syslog shows
  the following error below. If I select the PDF printer, I get a print
  preview as expected. If I install chromium from a 3rd party repo, I do
  not have this problem and printing works.

  2024-11-16T04:14:32.340887+00:00 hostname kernel: kauditd_printk_skb: 39 
callbacks suppressed
  2024-11-16T04:14:32.340930+00:00 hostname kernel: audit: type=1400 
audit(1731730472.339:1550): apparmor="DENIED" operation="open" class="file" 
profile="snap.chromium.chromium" name="/etc/cups/ppd/printer001.ppd" 
pid=2189152 comm="ThreadPoolForeg" requested_mask="r" denied_mask="r" 
fsuid=1003 ouid=0
  2024-11-16T04:14:32.341776+00:00 hostname chromium_chromium.desktop[2189152]: 
[2189152:2189152:1115/231432.341331:ERROR:device_event_log_impl.cc(201)] 
[23:14:32.340] Printer: printer_capabilities.cc:235 Failed to get capabilities 
for printer001, result: kFailed

  I tried creating an override profile for apparmor but ran into
  additional errors that prevented Chromium from loading so I gave up on
  that.

  I think if we can add the following to the snap.chromium.chromium
  apparmor profile this would resolve the issue - /etc/cups/ppd/* path
  so all files inside are allowed to read as well as /var/spool/cups/*.

  If you have a working profile override that I can drop in with the two
  paths I can try that.

  
  Ubuntu 24.04 fully patched
  apparmor/noble-updates,now 4.0.1really4.0.1-0ubuntu0.24.04.3 amd64 
[installed,automatic]
  chromium           130.0.6723.116   2993   latest/stable  canonical✓     held

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/2088333/+subscriptions


-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to