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.