Права на устройство /dev/bus/usb/001/005 устанавливаются root:scanner/0664 В связи с этим недостаточно прав для cups-driverd и как следствие принтер не показывается в интерфейсе в списке доступных устройств. # rpm -q udev udev-141-alt10 http://bugs.archlinux.org/task/15998: Вот тут есть пример правила. Вот пример вывода от cups-driverd /usr/lib/cups/daemon/cups-deviced 1 100 100 4 include_schemes=0 ... DEBUG: usb_find_devices=8 libusb couldn't open USB device /dev/bus/usb/001/004: Permission denied. libusb requires write access to USB device nodes. Ещё один способ тестирования: Принтер виден в выводе /usr/lib/cups/backend/usb, но не виден в lpinfo -v.
http://git.altlinux.org/people/shrek/packages/?p=udev.git;a=commitdiff;h=5b9a435790bba9e0f84a1e7642aa32fd4776c5bb $ grep scanner /lib/udev/rules.d/* /lib/udev/rules.d/70-acl.rules:# SCSI scanners /lib/udev/rules.d/70-acl.rules:# USB scanners группа scanner в udev-rules не упоминается
(В ответ на комментарий №1) > http://git.altlinux.org/people/shrek/packages/?p=udev.git;a=commitdiff;h=5b9a435790bba9e0f84a1e7642aa32fd4776c5bb > > $ grep scanner /lib/udev/rules.d/* > /lib/udev/rules.d/70-acl.rules:# SCSI scanners > /lib/udev/rules.d/70-acl.rules:# USB scanners > > группа scanner в udev-rules не упоминается Не исключаю, что это pam_console расстарался. Но по любому видимо надо прописать правило для выставления правильных прав.
(В ответ на комментарий №1) > http://git.altlinux.org/people/shrek/packages/?p=udev.git;a=commitdiff;h=5b9a435790bba9e0f84a1e7642aa32fd4776c5bb Как отдебажить это правило? Я заметил ещё одно интересное свойство. У меня два принтера. Так вот второй одно время был доступен для lp, а сегодня нет.
(В ответ на комментарий №1) > http://git.altlinux.org/people/shrek/packages/?p=udev.git;a=commitdiff;h=5b9a435790bba9e0f84a1e7642aa32fd4776c5bb > > $ grep scanner /lib/udev/rules.d/* > /lib/udev/rules.d/70-acl.rules:# SCSI scanners > /lib/udev/rules.d/70-acl.rules:# USB scanners > > группа scanner в udev-rules не упоминается Я кажется нашёл врага: пакет libsane считает некоторые устройства исключительно своими. Как бы разрулить этот конфликт?
Вот ведь мир куда прикатился - устройства слились вместе и начался конфликт групп ;) Надо видимо пользователю "scanner" добавлять в группу lp и убирать эти правила. (В ответ на комментарий №4) > (В ответ на комментарий №1) > > http://git.altlinux.org/people/shrek/packages/?p=udev.git;a=commitdiff;h=5b9a435790bba9e0f84a1e7642aa32fd4776c5bb > > > > $ grep scanner /lib/udev/rules.d/* > > /lib/udev/rules.d/70-acl.rules:# SCSI scanners > > /lib/udev/rules.d/70-acl.rules:# USB scanners > > > > группа scanner в udev-rules не упоминается > Я кажется нашёл врага: пакет libsane считает некоторые устройства исключительно > своими. Как бы разрулить этот конфликт?
Виталик, АУ! Мы будем как-нибудь это исправлять? Группа scanner, насколько я понял не является какой-то особенно нужной системной группой, а используется для того чтобы только члены этой группы имели доступ к устройству. Я посмотрел что делается на эту тему в разных дистрибутивах: 1. RH отказался от использования udev для организации разграничения доступа в пользу PolicyKit (см. https://bugzilla.redhat.com/show_bug.cgi?id=405211) 2. Debian старательно вырезает желание через udev настраивать права. Для этого у них там применяются какие-то 70-acl. Подробности видимо лучше узнать у тех у кого есть под рукой Debian. 3. Mandriva, для девайсов используется группа usb. Почему там работают МФУ - не знаю.
достаточно изменить в 25-libsane.rules ATTR{idVendor}=="03f0", ATTR{idProduct}=="0101", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes" на ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="0101", MODE="0664", ENV{libsane_matched}="yes" это первая попавшияся строка для примера, т.е. группу scanner упраздняем. а для того что бы выставлялись правильные права для сканера необходим пакет udev-extras
Итак. Убрал в sane из всех строчек GROUP. Вставляю девайс. Группа scanner более не появляется. Но группа lp тоже не появляется. Права на девайс: crw-rw-r--+ 1 root root 189, 516 Oct 6 10:25 005 Вывод от udevadm monitor: -- KERNEL[1254810380.436624] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6 (usb) KERNEL[1254810380.437251] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0 (usb) KERNEL[1254810380.437275] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep03 (usb_endpoint) KERNEL[1254810380.437299] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep84 (usb_endpoint) KERNEL[1254810380.437323] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.1 (usb) KERNEL[1254810380.437342] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.1/usb_endpoint/usbdev5.6_ep01 (usb_endpoint) KERNEL[1254810380.437361] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.1/usb_endpoint/usbdev5.6_ep82 (usb_endpoint) KERNEL[1254810380.437381] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/usb_device/usbdev5.6 (usb_device) KERNEL[1254810380.437399] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/usb_endpoint/usbdev5.6_ep00 (usb_endpoint) UDEV [1254810380.446580] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6 (usb) UDEV [1254810380.453005] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0 (usb) UDEV [1254810380.456045] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.1 (usb) UDEV [1254810380.457079] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep03 (usb_endpoint) UDEV [1254810380.458123] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep84 (usb_endpoint) UDEV [1254810380.459200] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.1/usb_endpoint/usbdev5.6_ep01 (usb_endpoint) UDEV [1254810380.460200] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.1/usb_endpoint/usbdev5.6_ep82 (usb_endpoint) UDEV [1254810380.464872] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/usb_device/usbdev5.6 (usb_device) UDEV [1254810380.466154] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6/usb_endpoint/usbdev5.6_ep00 (usb_endpoint) -- Запакованный sys прилагаю (В ответ на комментарий №7) > достаточно изменить в 25-libsane.rules > > ATTR{idVendor}=="03f0", ATTR{idProduct}=="0101", MODE="0664", GROUP="scanner", > ENV{libsane_matched}="yes" > > на > > ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="0101", MODE="0664", > ENV{libsane_matched}="yes" > > это первая попавшияся строка для примера, т.е. группу scanner упраздняем. а для > того что бы выставлялись правильные права для сканера необходим пакет > udev-extras
udev-extras установлен?
Created attachment 3961 [details] lsusb -v
Created attachment 3962 [details] /sys
(В ответ на комментарий №9) > udev-extras установлен? Установлен # rpm -qa|grep udev udev-rules-141-alt10 udev_static-addon-0.2-alt2 udev-extras-0.20090516-alt3 udev-initramfs-141-alt10 udev-141-alt10 libudev-141-alt10
покажи # /lib/udev/usb_id --export /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep84 # /lib/udev/usb_id --export /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep82
(В ответ на комментарий №6) > Мы будем как-нибудь это исправлять? Нельзя ли внести пользователя lp в группу scanner, этого не будет достаточно? > Группа scanner, насколько я понял не является какой-то особенно нужной > системной группой, а используется для того чтобы только члены этой группы имели > доступ к устройству. Именно так. > Я посмотрел что делается на эту тему в разных дистрибутивах: PolicyKit нам так сразу не поднять. > 2. Debian старательно вырезает желание через udev настраивать права. Для Это нужен порядок, а у нас его мало... > 3. Mandriva, для девайсов используется группа usb. Почему там работают МФУ - В этом есть некий смысл, потому что наверное разграничение доступа к сменным устройствам не должно быть на уровне групп camera / lp / scanner
(In reply to comment #6) > 3. Mandriva, для девайсов используется группа usb. Почему там работают МФУ - не > знаю. Это совершенно неправильный подход, поскольку usb-устройства могут быть совершенно любыми. В частности, на usb-устройстве может располагаться rootfs.
Виталий, в #7 я все сказал, дальше уже это не твоя забота
(В ответ на комментарий №14) > (В ответ на комментарий №6) > > > Мы будем как-нибудь это исправлять? > Нельзя ли внести пользователя lp в группу scanner, этого не будет достаточно? Не стоит смешивать служебных пользователей и неслужебные группы. Впрочем мы с Валерой кажется нашли оптимальное решение, попробуем его реализовать. Патчи будут.
(В ответ на комментарий №13) > покажи > # /lib/udev/usb_id --export > /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep84 > # /lib/udev/usb_id --export > /devices/pci0000:00/0000:00:1d.7/usb5/5-6/5-6:1.0/usb_endpoint/usbdev5.6_ep82 Они немного съехали, поэтому я прилагаю результат запуска скрипта который делает --export по всем endpoint. У принтера их оказалось аж четыре ;)
Created attachment 3966 [details] usb_endpoint list
возможно права не выставляются из-за ошибки в 50-udev-default.rules SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660" должно быть MODE="0664"
(В ответ на комментарий №20) > возможно права не выставляются из-за ошибки в 50-udev-default.rules > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", > ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660" > > должно быть MODE="0664" Не, вообще никак не реагирует. Даже 0666 ставил и даже ENV{ID_TYPE}="printer". Не матчится по каким-то причинам правило. Есть ли способ отдебажить как работают правила? По udevadm info --environment я вот что наблюдаю: -- UDEV [1254902087.150001] add /devices/pci0000:00/0000:00:1d.7/usb5/5-6 (usb) UDEV_LOG=3 ACTION=add DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb5/5-6 SUBSYSTEM=usb DEVTYPE=usb_device DEVICE=/proc/bus/usb/005/022 PRODUCT=4e8/341b/100 TYPE=0/0/0 BUSNUM=005 DEVNUM=022 SEQNUM=5725 libsane_matched=yes ID_VENDOR=Samsung ID_VENDOR_ENC=Samsung ID_VENDOR_ID=04e8 ID_MODEL=SCX-4200_Series ID_MODEL_ENC=SCX-4200\x20Series ID_MODEL_ID=341b ID_REVISION=0100 ID_SERIAL=Samsung_SCX-4200_Series_9C66BACP807850K. ID_SERIAL_SHORT=9C66BACP807850K. ID_BUS=usb ID_USB_INTERFACES=:ffffff:070102: ACL_MANAGE=1 DEVNAME=/dev/bus/usb/005/022 MAJOR=189 MINOR=533 DEVLINKS=/dev/char/189:533 --
(В ответ на комментарий №21) > (В ответ на комментарий №20) > > возможно права не выставляются из-за ошибки в 50-udev-default.rules > > > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", > > ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="lp", MODE="0666" Вот такое правило матчится.
(В ответ на комментарий №22) > (В ответ на комментарий №21) > > (В ответ на комментарий №20) > > > возможно права не выставляются из-за ошибки в 50-udev-default.rules > > > > > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", > > > ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660" > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="lp", MODE="0666" > Вот такое правило матчится. SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", GROUP="lp", MODE="0666" Такое тоже. А вот пара правил вместе с IMPORT не работает.
(В ответ на комментарий №23) > (В ответ на комментарий №22) > > (В ответ на комментарий №21) > > > (В ответ на комментарий №20) > > > > возможно права не выставляются из-за ошибки в 50-udev-default.rules > > > > > > > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", > > > > ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660" > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="lp", MODE="0666" > > Вот такое правило матчится. > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", > GROUP="lp", MODE="0666" > Такое тоже. > А вот пара правил вместе с IMPORT не работает. SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}==":ffffff:070102:", GROUP="lp", MODE="0666" О ... вот такая пара правил работает. Понял проблему. Там неправильная маска ID_USB_INTERFACES. Почему-то у этого девайса там перед первым * нужно ещё делать :
(В ответ на комментарий №24) > (В ответ на комментарий №23) > > (В ответ на комментарий №22) > > > (В ответ на комментарий №21) > > > > (В ответ на комментарий №20) > > > > > возможно права не выставляются из-за ошибки в 50-udev-default.rules > > > > > > > > > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", > > > > > ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660" > > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="lp", MODE="0666" > > > Вот такое правило матчится. > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", > > GROUP="lp", MODE="0666" > > Такое тоже. > > А вот пара правил вместе с IMPORT не работает. > > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", > IMPORT{program}="usb_id --export %p" > SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", > ENV{ID_USB_INTERFACES}==":ffffff:070102:", GROUP="lp", MODE="0666" > > О ... вот такая пара правил работает. Понял проблему. Там неправильная маска > ID_USB_INTERFACES. Почему-то у этого девайса там перед первым * нужно ещё > делать : SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}==":*:0701*:", GROUP="lp", MODE="0666" Вот так работает. Но что странно ведь в USB есть ID как двойные и одинарные. Интересно как правильно.
попробуй ENV{ID_USB_INTERFACES}=="*:0701*:"
(В ответ на комментарий №26) > попробуй ENV{ID_USB_INTERFACES}=="*:0701*:" Уже только завтра. Но думаю должно сработать ;)
(В ответ на комментарий №26) > попробуй ENV{ID_USB_INTERFACES}=="*:0701*:" Работает. Причём в обоих случаях: двойного ID и одинарного: -- ID_VENDOR=Canon_Inc. ID_VENDOR_ENC=Canon\x20Inc. ID_VENDOR_ID=04a9 ID_MODEL=Canon_SELPHY_CP750 ID_MODEL_ENC=Canon\x20SELPHY\x20CP750 ID_MODEL_ID=3170 ID_REVISION=0001 ID_SERIAL=Canon_Inc._Canon_SELPHY_CP750_GE07081500000131 ID_SERIAL_SHORT=GE07081500000131 ID_TYPE=printer ID_BUS=usb ID_USB_INTERFACES=:070102: ID_USB_INTERFACE_NUM=00 -- ID_VENDOR=Samsung ID_VENDOR_ENC=Samsung ID_VENDOR_ID=04e8 ID_MODEL=SCX-4200_Series ID_MODEL_ENC=SCX-4200\x20Series ID_MODEL_ID=341b ID_REVISION=0100 ID_SERIAL=Samsung_SCX-4200_Series_9C66BACP807850K. ID_SERIAL_SHORT=9C66BACP807850K. ID_TYPE=printer ID_BUS=usb ID_USB_INTERFACES=:ffffff:070102: ID_USB_INTERFACE_NUM=01 -- Так что жду новой версии udev, заодно хотелось бы увидеть волшебную фичу для сканеров ;)
(В ответ на комментарий №28) > Так что жду новой версии udev, заодно хотелось бы увидеть волшебную фичу для > сканеров ;) С alt11 тоже всё ok ;)
все это в сизифе еще вчера
Виталий, со стороны Валеры всё готово. Пожалуйста забери и приложи вот этот патч: http://git.altlinux.org/people/inger/packages/sane.git?p=sane.git;a=commitdiff;h=1e526b92d9b6503af3770d79f31ef5346c35a97a Ну или прошу NMU.
sane-1.0.20-alt2 -> sisyphus: * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 - fix device group (bug #21808)
(In reply to comment #32) > sane-1.0.20-alt2 -> sisyphus: > > * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 > > - fix device group (bug #21808) А есть какая-то надежда, что в Бранч 5.1 это будет работать?
(В ответ на комментарий №33) > (In reply to comment #32) > > sane-1.0.20-alt2 -> sisyphus: > > > > * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 > > > > - fix device group (bug #21808) > > А есть какая-то надежда, что в Бранч 5.1 это будет работать? Поставьте пакет udev-extras.
(In reply to comment #34) > (В ответ на комментарий №33) > > (In reply to comment #32) > > > sane-1.0.20-alt2 -> sisyphus: > > > > > > * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 > > > > > > - fix device group (bug #21808) > > > > А есть какая-то надежда, что в Бранч 5.1 это будет работать? > Поставьте пакет udev-extras. # rpm -q udev-extras udev-extras-0.20090516-alt4 Установлен, как видите.
(В ответ на комментарий №35) > (In reply to comment #34) > > (В ответ на комментарий №33) > > > (In reply to comment #32) > > > > sane-1.0.20-alt2 -> sisyphus: > > > > > > > > * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 > > > > > > > > - fix device group (bug #21808) > > > > > > А есть какая-то надежда, что в Бранч 5.1 это будет работать? > > Поставьте пакет udev-extras. > # rpm -q udev-extras > udev-extras-0.20090516-alt4 > > Установлен, как видите. Ну тогда, поскольку, sane одинаковый в 5.1 и в Сизифе, так что возможно что-то не то с udev. Уточните у мантейнера udev. sane тут точно не при чём.
(In reply to comment #36) > (В ответ на комментарий №35) > > (In reply to comment #34) > > > (В ответ на комментарий №33) > > > > (In reply to comment #32) > > > > > sane-1.0.20-alt2 -> sisyphus: > > > > > > > > > > * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 > > > > > > > > > > - fix device group (bug #21808) > > > > > > > > А есть какая-то надежда, что в Бранч 5.1 это будет работать? > > > Поставьте пакет udev-extras. > > # rpm -q udev-extras > > udev-extras-0.20090516-alt4 > > > > Установлен, как видите. > Ну тогда, поскольку, sane одинаковый в 5.1 и в Сизифе, так что возможно что-то > не то с udev. Уточните у мантейнера udev. sane тут точно не при чём. В Сизифе udev 147, в Бранче 5.1 141. Что касается sane, если я на установленной системе насильно меняю sane и libsane на предыдущую версию - 1.19, ничего более не трогая, то сканер прекрасно работает. Зато ломается apt-get и требует --fix-install, в результате которого опять ставит версии 1.20... Раньше, на Бранч 5.0 sane при запуске находил не только сканер, но и встроенную веб-камеру ноута (что мне совершенно не нужно, естественно). Теперь же - на Бранч 5.1 - он не находит ни того, ни другого.
(В ответ на комментарий №37) > (In reply to comment #36) > > (В ответ на комментарий №35) > > > (In reply to comment #34) > > > > (В ответ на комментарий №33) > > > > > (In reply to comment #32) > > > > > > sane-1.0.20-alt2 -> sisyphus: > > > > > > > > > > > > * Fri Oct 23 2009 Vitaly Lipatov <lav@altlinux> 1.0.20-alt2 > > > > > > > > > > > > - fix device group (bug #21808) > > > > > > > > > > А есть какая-то надежда, что в Бранч 5.1 это будет работать? > > > > Поставьте пакет udev-extras. > > > # rpm -q udev-extras > > > udev-extras-0.20090516-alt4 > > > > > > Установлен, как видите. > > Ну тогда, поскольку, sane одинаковый в 5.1 и в Сизифе, так что возможно что-то > > не то с udev. Уточните у мантейнера udev. sane тут точно не при чём. > > В Сизифе udev 147, в Бранче 5.1 141. > Что касается sane, если я на установленной системе насильно меняю sane > и libsane на предыдущую версию - 1.19, ничего более не трогая, то > сканер прекрасно работает. Зато ломается apt-get и требует > --fix-install, в результате которого опять ставит версии 1.20... > > Раньше, на Бранч 5.0 sane при запуске находил не только сканер, но и встроенную > веб-камеру ноута (что мне совершенно не нужно, естественно). Теперь же - на > Бранч 5.1 - он не находит ни того, ни другого. Ещё раз: пообщайтесь с мантейнером udev. Единственная вина sane состоит сейчас в том что он стал полагаться на udev.