У меня есть разработанное мной приложение, которое контролирует доступ к принтеру для определенных пользователей. Я делаю это с помощью CUPS и команд lpadmin
lpadmin -u allow:"+PRINT_USER_NAME+" -p "+printerName
lpadmin -u deny:"+PRINT_USER_NAME+" -p "+printerName
Эта команда, кажется, отлично работает со всеми, кроме этого принтера EPSON Stylus Pro 9800. Даже если пользователю разрешено печатать, это сообщение об ошибке появляется в очереди.
/Library/Printers/EPSON/InkjetPrinter2/Filter/rastertoescpII.app/Contents/MacOS/rastertoescpII failed
Теперь вот кикер, который, я считаю, является ключевым. Когда пользователю разрешено печатать, он отображается на панели управления CUPS, как это разрешено.
Но если я полностью удалю этого пользователя из списка «Разрешить» и «Запретить», по сути говоря, что ему разрешено печатать, тогда все будет отлично работать. Таким образом, сообщение об ошибке появляется только в том случае, если пользователь находится в разрешенном списке, управляемом CUPS.
Итак, я могу придумать 2 варианта:
1) Выясните, почему использование CUPS для контроля доступа вызывает эту проблему с этим конкретным принтером.
2) Выясните, как (с помощью командной строки) вывести пользователя из списка запрещенных без использования lpadmin -u allow
команда. Это должно привести к тому, что пользователь больше не будет ни в одном списке управления доступом CUPS, что доказало свою эффективность.
Вариант №2 кажется самым простым. Помогите, пожалуйста?
Разобрался, когда с опцией тоже и использовал команду
lpadmin -u allow:all -p "+printerName
По сути, это очищает список управления доступом CUPS как на стороне утверждения, так и на стороне отклонения, что дает мне желаемый результат. Хотя мне любопытно, почему это вообще происходит.