Created attachment 22252 [details] логи для 3 разных принтеров cups-2.4.19-alt2 Стенды: Alt Workstation 11.2 x86_64, обновленный до Sisyphus Alt Workstation K 11.4 x86_64, обновленный до Sisyphus Alt Education KDE 11.2 x86_64, обновленный до Sisyphus Alt Education XFCE 11.2 x86_64, обновленный до Sisyphus Проверялось на реальном оборудовании: Ноутбук F+ Flaptop FLTP-5i5-16512-W Acer Aspire 5 A517-52-542X МФУ Pantum CM1100ADW MФУ Pantum M6700DW МФУ Canon i-SENSYS MF264dw II Шаги воспроизведения: 1. Подключить принтер и ноутбук к одной и той же сети (wi-fi/eth) для возможности отправки задания на печать 2. В браузере открыть cups: http://localhost:631/admin 3. Найти подключение принтера по dnssd. Пример для Pantum CM1100ADW: # lpinfo -v | grep dnssd | grep CM110ADW Должна появиться строка вида: network dnssd://Pantum%20CM110ADW%20Series%203E9917._ipp._tcp.local/?uuid=a984b... 4. В cups перейти во вкладку Администрирование > Добавить принтер > Выбрать "Backend Error Handler" > Продолжить > Подключение: beh:/1/0/60/протокол_из_вывода_команды_предыдущего_шага (например beh:/1/0/60/dnssd://Pantum%20CM110ADW%20Series%203E9917._ipp._tcp.local/?uuid=a984b...) > Продолжить > Написать название принтера > указать драйвер IPP Everywhere > Добавить принтер 5. В cups выбрать Принтеры > Выбрать принтер > Печать пробной страницы Результат: страница не печатается, в логах появляется строка "Unable to execute backend: Permission denied". Такая же ошибка указана в статусе принтера, а в статусе задания может быть указано "Unable to detect print-quality, using normal!" или то же "Unable to execute backend: Permission denied" Ошибка, вероятно, связана с правами на бэкенд dnssd, которые позволяют выполнение только от рута: $ l /usr/lib/cups/backend/ итого 1072 drwxr-xr-x 1 root root 266 июн 25 10:27 ./ ... -rwxr--r-- 1 root root 22792 апр 28 09:38 dnssd ... -rwxr-xr-x 1 root root 84248 апр 28 09:38 ipp lrwxrwxrwx 1 root root 3 апр 28 09:38 ipps -> ipp ... -rwxr-xr-x 1 root root 43288 апр 28 09:38 socket -rwxr--r-- 1 root root 35080 апр 28 09:38 usb -rwxr-xr-x 1 root root 14600 апр 22 17:57 beh Но смущает то, что печать напрямую осуществляется корректно, хотя печать в обоих случаях производится от непривиллегированного пользователя (test). Т.е. в случае прямой печати по dnssd передача прав как-то организована, а при использовании beh - нет. В пользу этой теории говорит то, что аналогичную ситуацию наблюдаю при попытке печатать по протоколу beh:/1/0/60/usb:..., который обладает аналогичными правами. Напрямую по usb печать успешна, через beh - "Permission denied". А через socket:// и ipp(s)://, у которых права на исполнение есть у всех, печать осуществляется успешно как напрямую, так и через beh. Ожидаемый результат: не совсем понятен. Возможно, в таком формате печать действительно не задумана изначально, но т.к. beh это лишь обертка, смущает, что на части бэкендов его использовать нельзя. Кроме того, насколько мне известно, beh может переключаться между бэкендами при возникновении ошибок, т.е. отсутствие прав влияет на его возможность выполнять свои функции.
Спасибо за подробный отчёт и логи — диагноз про права верный, теория подтверждается. Что происходит: 1. cupsd решает, от кого запускать бэкенд, по правам файла в /usr/lib/cups/backend/ (scheduler/job.c): если у файла нет бита o+x (0744, 0700) — бэкенд стартует от root, иначе — от непривилегированного пользователя lp. Поэтому usb и dnssd (0744) напрямую работают: cupsd запускает их от root. 2. beh из cups-filters установлен с правами 0755 (так же, как в upstream), поэтому cupsd запускает его от lp. beh — просто обёртка: он сам делает execv() бэкенда из вложенного URI. От lp он может выполнить ipp/ipps/socket (0755), но не usb/dnssd (0744) — отсюда "Unable to execute backend: Permission denied". Обратите внимание: сообщение выдаёт не cupsd, а beh, когда пытается запустить dnssd. 3. Так же поломано у Debian; Fedora обходит это, ставя beh 0744 (всегда root). Минус такого обхода — beh:/.../ipp:// тоже начинает работать от root, хотя сам ipp этого не требует. Планирую исправить в cupsd: для device URI вида beh:/... привилегии будут определяться по правам обёрнутого бэкенда, т.е. beh:/.../dnssd:// и beh:/.../usb:// получат root, как и прямые dnssd:// и usb://, а beh:/.../ipp:// останется от lp. "Unable to detect print-quality, using normal!" в статусе задания — это не ошибка, обычное предупреждение фильтра.
cups-2.4.19-alt3 -> sisyphus: Tue Sep 22 2026 Anton Farygin <rider@altlinux> 2.4.19-alt3 - Run beh-wrapped backends with the privileges of the wrapped backend, so beh:/.../usb:// and beh:/.../dnssd:// queues can print (Closes: #60646)