У меня есть приложение, которое я разработал, которое контролирует доступ к принтеру для определенных пользователей. Я делаю это с помощью 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.
Поэтому я могу предложить два варианта:
1) Выясните, почему использование CUPS для контроля доступа вызывает эту проблему с этим конкретным принтером.
2) Выясните, как (используя командную строку) вывести пользователя из списка Deny без использования команды lpadmin -u allow
. Это должно привести к тому, что пользователь больше не будет ни в одном списке контроля доступа CUPS, что, как оказалось, работает.
Вариант №2 кажется самым простым. Помогите, пожалуйста?
решение1
Разобрался, когда с опцией тоже и использовал команду
lpadmin -u allow:all -p "+printerName
Это по сути очищает список контроля доступа CUPS как на стороне одобрения, так и на стороне отклонения, тем самым давая мне результат, который я хочу, который работает. Хотя мне интересно, почему это происходит в первую очередь.