OpenPrinting / cups-browsed

Apache License 2.0
6 stars 4 forks source link

cups-browsed cannot bind to port 631 as non-root user #17

Closed m0rgn closed 12 months ago

m0rgn commented 1 year ago

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.

zdohnal commented 12 months ago

Hi @m0rgn ,

this looks like an issue Ubuntu packaging of project cups-browsed (cups-browsed runs as root on Fedora Linux), please report the issue to Ubuntu.

Thank you in advance!