Вопрос или проблема
Подключил принтер Brother без драйверов к машине с Debian 12. Попытка печати приводит к “lp: Unauthorized”. CUPS может успешно напечатать тестовую страницу.
Проверил проблему OpenSuse CUPS, но CUPS, похоже, работает в группе ‘lp’, и я нахожусь в обеих группах ‘lp’ и ‘lpadmin’.
Проверил ServerFault: CUPS Unauthorized. Я не менял никаких настроек, но текущая настройка — “AuthInfoRequired None”. Комментарии в конфигурационном файле говорят не изменять файл, пока CUPS работает.
Некоторые похожие страницы на SuperUser не содержали конкретных ответов на ошибку “Unauthorized”. Я включил журналирование в режиме отладки, но ничего необычного в журнале нет, большинство строк говорят “Success”.
Какие-нибудь идеи?
P.S.: Я удалил CUPS и попытался установить снова. Безуспешно. Эта система — обновление с Debian 11 до Debian 12. Печать работала нормально на Debian 11.
P.P.S.: Оказывается, требуется “AuthInfoRequired negotiate”. Это позволяет старому принтеру работать как положено. Однако современный принтер без драйверов все еще не работает, поскольку невозможно добавить эту строку в файл printers.conf. Когда CUPS остановлен, запись для принтера без драйверов исчезает. Кажется, эта строка должна присутствовать для конкретного принтера, чтобы усложнить задачу.
P.P.P.S.: Кто-то на другом форуме предложил добавить директиву в /etc/cups/cupsd.conf, которая может заставить директиву “AuthInfoRequired” применяться ко всем принтерам. Этот вопрос, Установить значение по умолчанию для ЛЮБОГО принтера, тоже задает тот же вопрос. Есть ответ на этот вопрос?
У меня была похожая проблема, и мне удалось ее решить с помощью небольшого изменения в /etc/cups/cupsd.conf
. Вы можете прочитать подробности на GitHub issue#1135, но коротко:
В моем случае в этом конфигурационном файле была секция:
<Policy default>
...
<Limit Send-Document ... >
AuthType Default
...
</Limit>
</Policy>
Текущий AuthType Default
соответствует более раннему DefaultAuthType Basic
, что означает, что требуется имя пользователя и пароль. Однако при печати через lpr
пароль не передается, и это требование не может быть удовлетворено.
Это означало, что обычная печать через lpr
была сломана для меня.
Одним из решений является либо удаление строки AuthType Default
, либо установка ее в AuthType None
. Возможно, более правильное решение — скопировать из конфигурации по умолчанию для вашей версии CUPS (пример, хотя это шаблон, а не настоящий файл).
Вы, вероятно, можете сделать свое изменение более ограниченным. Как отмечено в вопросе на GitHub: “Аутентификация должна требоваться только для CUPS-Get-Document, а не для всего набора этих операций.”
Большая проблема, похоже, заключается в том, что конфигурация CUPS в Debian по умолчанию несколько отклонилась от конфигурации upstream, в отношении этих разрешений. Как подробно описано в этом вопросе на GitHub, некоторые из этих различий не имеют большого смысла.
Это также могло быть из-за плохого процесса обновления пакета — что бы это ни было, случилось автоматически с моей точки зрения. Я слышал, что в более новых версиях Debian этой проблемы нет, поэтому это может быть в основном исторической проблемой или проблемой для людей на старых сборках Debian (у меня была версия 10.13).
Ответ или решение
Теория:
Когда CUPS выдает ошибку "Unauthorized" при попытке печати, это зачастую связано с проблемами авторизации, особенно после обновления системы или изменения конфигурационных файлов. CUPS, система печати, используемая в UNIX-подобных ОС, требует определенных настроек в cupsd.conf
для корректной работы. Обычно причинами отказов в доступе являются некорректные настройки политики (Policy), которые требуют аутентификации для операций, таких как отправка документа (Send-Document).
Пример:
В вашем случае, на машине с Debian 12 после обновления с Debian 11 возникла проблема с печатью через драйверless принтер Brother. При этом CUPS успешно печатает тестовую страницу, что исключает проблемы с физическим подключением принтера. Ваша конфигурация cupsd.conf
содержит политику, в которой для операции Send-Document
установлено AuthType Default
, что соответствует DefaultAuthType Basic
. Это требует указания пользователя и пароля при использовании утилит lp
и lpr
, которые по умолчанию не передают пароль, следовательно, аутентификация не выполняется, и печать блокируется.
Применение:
Для решения данной проблемы можно внести изменения в файл конфигурации CUPS:
-
Отредактируйте
/etc/cups/cupsd.conf
:- Найдите конфигурационный блок
<Policy default>
. - Измените строку
AuthType Default
наAuthType None
, чтобы отключить необходимость аутентификации при отправке документа с использованиемlpr
.
Пример:
<Policy default> ... <Limit Send-Document ... > AuthType None ... </Limit> </Policy>
- Найдите конфигурационный блок
-
Перезапустите службу CUPS для применения изменений:
sudo systemctl restart cups
-
Убедитесь, что изменения вступили в силу, попытавшись напечатать документ заново.
Если проблема продолжает существовать, рекомендуется свериться с документацией CUPS и Debian, так как конфигурация по умолчанию может отличаться в зависимости от версий и используемых сборок.
Помимо этих шагов, стоит поддерживать актуальные резервные копии конфигурационных файлов перед внесением изменений, чтобы в случае необходимости иметь возможность вернуть систему к рабочему состоянию.