Describe the bug
After upgrading to Ubuntu 23.04, my laptop failed to discover our print server.
The problem seems to have been caused by a new change in cups-browsed that was added to Ubuntu 23.04.
I looked into it and found a small fix that seems to solve my issue.
Using the debug configuration for cupsd and cups-browsed, I looked through the logs and noticed the following line:
failed to bind CUPS Browsing socket: Permission denied
After reading more about printer advertisement and cups-browsed, I concluded that the printer is shared to my Ubuntu 23.04 laptop via CUPS on port 631.
When I connected an Ubuntu 22.04 laptop to the WIFI network, I saw the printer really was being shared with CUPS on port 631.
Cups-browsed was running as root on 22.04 while on 23.04 it is running as a new user - cups-browsed, but this new user didn't seem to have the necessary permissions to open a listening socket on port 631.
The solution I tried was granting the relevant binding permissions to the binary with this command (on the 23.04):
setcap cap_net_bind_service+ep /usr/sbin/cups-browsed
After giving the permissions, my computer successfully discovered the printer, just like it used to on 22.04!
I think the command should be added to the post install script or maybe the capability should be granted to the new cups-browsed user.
Describe the bug After upgrading to Ubuntu 23.04, my laptop failed to discover our print server. The problem seems to have been caused by a new change in cups-browsed that was added to Ubuntu 23.04. I looked into it and found a small fix that seems to solve my issue.
Using the debug configuration for cupsd and cups-browsed, I looked through the logs and noticed the following line:
failed to bind CUPS Browsing socket: Permission denied
After reading more about printer advertisement and cups-browsed, I concluded that the printer is shared to my Ubuntu 23.04 laptop via CUPS on port 631. When I connected an Ubuntu 22.04 laptop to the WIFI network, I saw the printer really was being shared with CUPS on port 631. Cups-browsed was running as root on 22.04 while on 23.04 it is running as a new user -
cups-browsed
, but this new user didn't seem to have the necessary permissions to open a listening socket on port 631. The solution I tried was granting the relevant binding permissions to the binary with this command (on the 23.04):setcap cap_net_bind_service+ep /usr/sbin/cups-browsed
After giving the permissions, my computer successfully discovered the printer, just like it used to on 22.04! I think the command should be added to the post install script or maybe the capability should be granted to the new cups-browsed user.