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

Как это окошко аутентификации убрать? Или где-то прав на принтер надо накидать?

окошко аутентификации

    Первое. Тащем-то после аутентификации в ALD вы получаете билет Kerberos, который используется в качестве "пароля" далее. При использовании PAM аналогичного "билета" нет и приходится вводить пароль. Второе. Вводить в группу не пробовали? – Администрация
    С группой lpadmin только, но это даёт все права по управлению принтерами, а так нельзя же. – Виталий
    Тогда только молитва и пост. Либо пилить свою группу и sudo NOPASSWD на конкретную команду. – Администрация
    Виталий, получилось чего? – Администрация

    Лучший ответ

    1

    Для разработчиков

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

    cupsSetUser («print_admin»);

    auto cb2 = [](const char *prompt, http_t *http, const char *method,
    const char *resource, void *user_data)
    {
    const char* pwd = …; //из конфига
    return pwd;
    };

    cupsSetPasswordCB2(cb2, nullptr);

    Выполнить сразу после коннекта к серверу печати.

    Для написания гуя для markjob подход выше не работает. Я создал на клиентской машине пользователя-заглушку с логином админа печати и выполняю sudo -u print_admin markjob. В этом случае окошко ввода не появляется, а идёт вывод запроса пароля в stdout типа Введите пароль для print_admin. Если бы делали без sudo, то пользователем для ввода пароля был владелец процесса, а это нам не надо. Ну, а дальше пишем в stdin и парсим.

    Чтобы разрешить создавать задачи на печать.

    Сам же принтер у меня с политикой parsec, следовательно идём в /etc/cups/cupsd.conf, ищем <Policy parsec>… <Limit Create-Job Print-Job…> и коментим AuthType Default. Перезапускам сервис. С другими Limit’ами тоже нужно поиграться, в плане комментирования AuthType Default

      редакт.
      ×

      выполните вход