CUPS отказывается печатать с сообщением “Неавторизовано”.

Вопрос или проблема

Подключил принтер 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:

  1. Отредактируйте /etc/cups/cupsd.conf:

    • Найдите конфигурационный блок <Policy default>.
    • Измените строку AuthType Default на AuthType None, чтобы отключить необходимость аутентификации при отправке документа с использованием lpr.

    Пример:

    <Policy default>
     ...
     <Limit Send-Document ... >
       AuthType None
       ...
     </Limit>
    </Policy>
  2. Перезапустите службу CUPS для применения изменений:

    sudo systemctl restart cups
  3. Убедитесь, что изменения вступили в силу, попытавшись напечатать документ заново.

Если проблема продолжает существовать, рекомендуется свериться с документацией CUPS и Debian, так как конфигурация по умолчанию может отличаться в зависимости от версий и используемых сборок.

Помимо этих шагов, стоит поддерживать актуальные резервные копии конфигурационных файлов перед внесением изменений, чтобы в случае необходимости иметь возможность вернуть систему к рабочему состоянию.

Оцените материал
Добавить комментарий

Капча загружается...