Desde hace bastantes años tengo un escáner HP ScanJet 5p con una tarjeta SCSI PCI que funciona a la perfección en GNU/Linux. El dispositivo es utilizado por todos los usuarios del PC y por tanto necesito que todos tengan permiso para escanear. Sin embargo, el sistema UDEV de Ubuntu asocia automáticamente el escáner a un dispositivo “/dev/sg3” con permisos únicamente para root, por tanto el resto de usuario no pueden utilizarlo.
$ ls -la /dev/sg3 crw-rw----+ 1 root root 21, 2 2009-05-24 14:36 /dev/sg3
Para cambiar este comportamiento, vamos a extraer información sobre el dispositivo que en mi caso corresponde sg3 pero puede variar según la configuración (consultar dmesg):
# udevadm info -a -p /sys/class/scsi_generic/sg3
...
looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:05:02.0/host10/target10:0:2/10:0:2:0':
KERNELS=="10:0:2:0"
SUBSYSTEMS=="scsi"
DRIVERS==""
ATTRS{device_blocked}=="0"
ATTRS{type}=="3"
ATTRS{scsi_level}=="3"
ATTRS{vendor}=="HP "
ATTRS{model}=="C5110A "
ATTRS{rev}=="3701"
ATTRS{state}=="running"
ATTRS{timeout}=="0"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x7"
ATTRS{iodone_cnt}=="0x7"
ATTRS{ioerr_cnt}=="0x0"
ATTRS{modalias}=="scsi:t-0x03"
ATTRS{evt_media_change}=="0"
ATTRS{queue_depth}=="2"
ATTRS{queue_type}=="none"
...
A continuación, creamos una nueva regla UDEV en el fichero “/etc/udev/rules.d/99-personalizado.rules”:
# permissions for SCSI scanner
KERNEL=="sg[0-9]*", SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{model}=="C5110A*", NAME="%k", SYMLINK="scanner", MODE="0660", GROUP="scanner"
En la regla estamos indicando que todos los dispositivos sgX (sg1, sg2, etc.), del tipo SCSI y modelo C5110A (información que coincide con el scanner, según el comando udevadm que hemos ejecutado antes) deben tener permisos lectura y escritura para el grupo “scanner”. Adicionalmente, se creará un enlace simbólico “/dev/scanner” apuntando al dispositivo.
A continuación, crearemos el grupo “scanner” y añadiremos todos los usuarios que queremos que utilicen este dispositivo:
groupadd scanner adduser miusuario scanner
En este punto, ya podemos reiniciar el equipo o recargar el driver del scanner:
rmmod sym53c8xx modprobe sym53c8xx
Si ha funcionado, nuestro dispositivo tendrá los siguientes permisos:
$ ls -la /dev/sg3 crw-rw----+ 1 root scanner 21, 2 2009-05-24 14:56 /dev/sg3
Finalmente podremos escanear utilizando “Aplicaciones -> Gráficos -> Programa de escaneo de imágenes XSane” o bien directamente desde Gimp.