Berechtigung für Scanner?

A

Anonymous

Gast
Hallo,

ich habe einen HP Scanjet 6300 mit USB-Anschluß und Suse 9.0.
Yast hat ihn richtig erkannt und er wurde eingerichtet mit dem hp-Modul von Sane.
xsane moniert nun, daß kein Scanner vorhanden sei. Rufe ich es als root auf, fuktioniert alles tadellos. Vermutlich liegt es an einer falschen Berechtigung der Gerätedatei.
scanimage -L als root ergibt:
Code:
device `hp:libusb:003:002' is a Hewlett-Packard ScanJet 63x0C flatbed scanner

Keine Ahnung, wo ich was einstellen soll, ich hatte eher so was wie
device 'hp:/dev/usb/scanners0' is a Hewlett-Packard ScanJet 63x0C flatbed scanner erwartet.

Danke für die Hinweise! Andreas
 
Hi,

andtolle schrieb:
xsane moniert nun, daß kein Scanner vorhanden sei. Rufe ich es als root auf, fuktioniert alles tadellos. Vermutlich liegt es an einer falschen Berechtigung der Gerätedatei.
scanimage -L als root ergibt:
Code:
device `hp:libusb:003:002' is a Hewlett-Packard ScanJet 63x0C flatbed scanner

Keine Ahnung, wo ich was einstellen soll, ich hatte eher so was wie
device 'hp:/dev/usb/scanners0' is a Hewlett-Packard ScanJet 63x0C flatbed scanner erwartet.

das mit der LibUSB kommt daher, da das scanner Kernelmodul
aus dem Kernel rausgeflogen ist. Deshalb wird in Zukunf und auch
schon in der SuSE9.0 ein Scanner via LibUSB angesprochen und
das genau siehst Du.
Die Rechte solltest Du über die Hotplug-Utilities einstellen lassen.
Wie das geht,
Im Abschnitt LIBUSB steht einiges über die Rechtevergabe drin.
Alternativ hab ich hier noch eine Beschreibung, wie das mit den Hotplug-Utilities geht.

Ach ja, das Device, bzw. die Datei, wo die Rechte zu ändern sind,
findest Du unter /proc/bus/usb/BUSNR/DEVNR, wobei in deinem
Beispiel dann /proc/bus/usb/003/002 stehen würde.

Hilft hoffentlich weiter,
Gerhard
 
OP
A

Anonymous

Gast
scanner_freak schrieb:
(...) Die Rechte solltest Du über die Hotplug-Utilities einstellen lassen.
Das wäre dann das Beispiel mit dem Epson-Scanner:
Alternativ hab ich hier noch eine Beschreibung, wie das mit den Hotplug-Utilities geht.
Habe ich gemacht:
1.) Eintrag in die /etc/hotplug/usb.usermap
Code:
hp_scanjet 0x0003 0x03f0 0x0601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
Die Vendor- und ProduktID entnahm ich der /proc/bus/usb/devices.
2.) Gruppe scanner in Yast angelegt und meinem username zugeordnet
3.) Das erwähnte Sript als /etc/hotplug/usb/hp_scanner gesichert.

Klappt leider nicht, immer noch wie vorher: root geht, user nicht.
Im Abschnitt LIBUSB steht einiges über die Rechtevergabe drin.
Da steht, daß das usbdevfs gemountet werden muß. Ich habe den vorhandenen Eintrag
Code:
usbdevfs  /proc/bus/usb  usbdevfs  noauto  0 0
in der /etc/fstab von "noauto" auf "defaults" geändert, wie beschrieben.
Nun bekomme ich beim Starten die Fehlermeldung:
Code:
mount: mount point /proc/bus/usb does not exist
Das Verzeichnis existiert, ist jedoch belegt.
Ach ja, das Device, bzw. die Datei, wo die Rechte zu ändern sind,
findest Du unter /proc/bus/usb/BUSNR/DEVNR, wobei in deinem
Beispiel dann /proc/bus/usb/003/002 stehen würde.
Das habe ich im Zusammenhang mit den oben genannten Anleitungen nicht verstanden. :-(

Vielen Dank für Deine Mühe. Andreas
 
andtolle schrieb:
1.) Eintrag in die /etc/hotplug/usb.usermap
Code:
hp_scanjet 0x0003 0x03f0 0x0601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
Die Vendor- und ProduktID entnahm ich der /proc/bus/usb/devices.
2.) Gruppe scanner in Yast angelegt und meinem username zugeordnet
3.) Das erwähnte Sript als /etc/hotplug/usb/hp_scanner gesichert.
Klappt leider nicht, immer noch wie vorher: root geht, user nicht.
...
scanner_freak schrieb:
Ach ja, das Device, bzw. die Datei, wo die Rechte zu ändern sind,
findest Du unter /proc/bus/usb/BUSNR/DEVNR, wobei in deinem
Beispiel dann /proc/bus/usb/003/002 stehen würde.
Das habe ich im Zusammenhang mit den oben genannten Anleitungen nicht verstanden.

Gerade das wäre aber wichtig ;)
Als Linux nutzt ein spezielles Dateisystem namens ProcFS um
diverse Systeminformationen dem Benutzer bzw. unterschiedlichen
Programmen zur Verfügung zu stellen. So auch das USB-
Subsystem. Dieses nutzt die Einträge unter /proc/bus/usb.
Richtigerweise konntest Du ja bereits Vendor- und Device-ID aus
/proc/bus/usb/devices auslesen. Beim Hochfahren des
USB-Systems, geht dieses her und sucht seine Controller und die
damit verbundenen Busse. Für jeden gefundenen Bus, macht das
System einen Eintrag unter /proc/bus/usb, so erhält z.B. der erste
Bus die Nummer 1, der zweite die 2 usw. bei Dir sind es wohl 3 oder
4 Busse die gefunden werden. Also erhälst Du unter /proc/bus/usb/
folgende Einträge:
Code:
/proc/bus/usb/001
/proc/bus/usb/002
/proc/bus/usb/003
/proc/bus/usb/004
/proc/bus/usb/devices
/proc/bus/usb/drivers

Verstanden soweit :?::?:
Okay, mit der Nummerierung der USB-Geräte, die an so einem
Bus hängen wird ähnlich verfahren. In deinem ersten Beispiel, hängt,
dein Scanner an Bus 003 und hatte die Nummer 2, somit ergibt sich
ein Eintrag im ProcFS der so aussieht:

Code:
/proc/bus/usb/003/002

und wenn Du den Eintrag in der "lang"-Version anschaust:
Code:
ls -l /proc/bus/usb/003/002
-rw-r--r-- 1 root root 18 2004-05-27 08:16/proc/bus/usb/003/002

Jetzt siehst Du bereits, dass so ein Gerät auch eine "Datei" hat, die
mit ihm korrespondiert und dass diese Datei einem Benutzer
gehört - root hier. Das Script sollte dies ändern und zwar jedesmal,
wenn ein Gerät neu eingesteckt wird.

Jedesmal, wenn Du den Scanner aus- und wieder einsteckst, ändert
sich seine Nummer am Bus. Zu Testzwecken, kannst Du also
Deinen Scanner einstecken und im ProcFS (Du weisst ja jetzt wo)
die Rechte "händisch" ändern...

Ich hoffe die Erläuterungen helfen Dir weiter. Ach ja was mir zu dem
Script "hp_scanjet" einfällt: Hat es Executable Rechte?

Viel Erfolg beim "Probieren",
Gerhard
 
OP
A

Anonymous

Gast
scanner_freak schrieb:
Zu Testzwecken, kannst Du also
Deinen Scanner einstecken und im ProcFS (Du weisst ja jetzt wo)
die Rechte "händisch" ändern...

Ich hoffe die Erläuterungen helfen Dir weiter. Ach ja was mir zu dem
Script "hp_scanjet" einfällt: Hat es Executable Rechte?

Hallo Gerhard,

herzlichen Dank für die ausführliche Erläuterung. Irgendwo hatte ich das ja schon mal gelesen, aber der Praxisbezug fehlte.

Ich habe die Rechte mal "zu Fuß" vergeben, entsprechend dem script. Das klappt, ich kann als user scannen.
Das Script ist ausführbar, ls -l bringt:
Code:
-rwxr-xr-x    1 root     root          165 2004-05-26 18:27 /etc/hotplug/usb/hp_scanner
(ich hatte mich oben verschrieben, das Script heißt hp_scanner, dieser Name steht auch in der /etc/hotplug/usb.usermap.)

Warum arbeitet dann das Script nicht?
Wenn ich das richtig verstanden habe, übergibt der Kernel dem Script /sbin/hotplug beim Auftreten entsprechender Events die Aufgabe, die notwendigen Aktionen einzuleiten. Das Script Hotplug wiederum ruft dann abhängig des angesteckten Gerätes eines der Scripte
/etc/hotplug/usb.agent
/etc/hotplug/pci.agent
/etc/hotplug/net.agent
auf. usb.agent schaut dann in der usb.usermap nach und startet mein Script mit der Festlegung der Berechtigung.
Habe ich was übersehen?

Vielen Dank für Deine Mühe und Geduld.
Andreas
 
Oben