Fermi tutti! Questa mia affermazione potrebbe essere non del tutto corretta.
Bisogna chiarire i permessi di "chi", di quale file sino importanti...
Da quello che ho letto l'oggetto di interesse dovrebbe essere lo scanner. Vediamo di capire a quale file corrisponde:
Codice: Seleziona tutto
root@darkstar:~# scanimage -L
device `mustek_usb:libusb:001:005' is a Mustek 600 CU flatbed scanner
root@darkstar:~# ls -l /dev/bus/usb/001/005
crw-rw-r-- 1 root root 189, 4 giu 12 09:49 /dev/bus/usb/001/005
Ok, quindi ecco perchè il mio utente non può usare quell'arnese. Banalmente perchè non appartiene al gruppo "root".
Ma la colpa è di udev che avrebbe dovuto dare a quel file il gruppo "lp" come da regola. Invece l'ha lasciato a root.
Facciamo una prova, cambio il gruppo a root:lp e vediamo se funge:
Codice: Seleziona tutto
root@darkstar:~# chown root:lp /dev/bus/usb/001/005
root@darkstar:~# su - joe
Mitchell's Law of Committees:
Any simple problem can be made insoluble
if enough meetings are held to discuss it.
joe@darkstar:~$ scanimage -L
device `mustek_usb:libusb:001:005' is a Mustek 600 CU flatbed scanner
joe@darkstar:~$
Ok, lasciate perdere il "fortune"
Praticamente ho cambiato la proprietà del file speciale associato allo scanner impostando che il gruppo di appartenenza fosse "lp" e non "root".
Poi mi sono loggato come utente semplice "joe" e ho provato ad utilizzare lo scanner, già dal comando "scanimage -L" si vede che il problema è "risolto". Confermo che anche xsane da simpleuser trova lo scanner e funziona come dovrebbe.
Ora vediamo di ripristinare i permessi originali e fare la prova del nove.
Codice: Seleziona tutto
joe@darkstar:~$ scanimage -L
device `mustek_usb:libusb:001:005' is a Mustek 600 CU flatbed scanner
joe@darkstar:~$ exit
logout
root@darkstar:~# chown root:root /dev/bus/usb/001/005
root@darkstar:~# su - joe
10.0 times 0.1 is hardly ever 1.0.
joe@darkstar:~$ scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
joe@darkstar:~$
Quindi il punto secondo me è il seguente:
Udev grazie alla sua regola cambia gli attributi allo scanner quando questo viene collegato al PC a sistema avviato.
Ma se lo scanner non viene collegato, come nel caso che sia già presente prima del boot, allora udev non applica la regola allo scanner.
E qui mi viene in mente quanto diceva "aschenaz":
xap/sane-1.0.23-x86_64-2.txz: Rebuilt.
Recompiled against libgphoto2-2.5.2.
Modified the udev rules so they'll be processed on change actions as well
as add actions, which might fix the device permissions errors some people
have reported. Thanks to Phil Bevan
Ora, il fatto è che per Udev "ADD" e "CHANGE" hanno un certo significato (mia beata ignoranza...), ma il punto è che nel nuovo pacchetto dovrebbe esserci un file tipo 80-libsane.rules valido con alcune modifiche che vanno a risolvere il problema.
Ho trovato anche questo topic sul solito linuxquestions.org che descrive esattamente il mio caso... però la soluzione mi sembra poco definitiva: il tipo scrive una regola per udev apposita per il suo scanner e al contempo modifica la regola generale "libsane" ma non è sicuro che non comporti poi effetti collaterali...
Ad ogni modo ecco il link:
http://www.linuxquestions.org/questions ... 4175433843
Per quanto mi riguarda penso che la strada giusta sia stata imbroccata da aschenaz che ringrazio insieme a tutti quelli che hanno preso parte alla discussione.
Allora riassumendo, sono andato a rileggermi il changelog della current e ho visto il pezzo riportato da aschenaz.
Ho quindi preso il pacchetto seguente:
sane-1.0.23-i486-3.txz
Lo metto in neretto perchè ieri avevo provato a scaricarlo ma era la build "-2" che non conteneva il file di udev corretto
Dentro al pacchetto c'è il file delle regole di udev che si chiama sempre "80-libsane.rules".
Insomma per risolvere il problema basta sostituire questo file con quello che si ha nella dir /lib/udev/rules.d.
Personalmente ho semplicemente applicato la modifica al punto chiave, prendendo spunto dallo slackbuild di Pat:
Codice: Seleziona tutto
# Add the default udev rules. Use group "lp" rather than "scanner" to avoid
# breaking CUPS access for multifunction printer/scanner devices (possibly
# the most common type of scanner these days)
#
# Use ACTION!="add|change" to avoid skipping these rules if coming from an
# initrd where udev was started.
mkdir -p $PKG/lib/udev/rules.d
cat tools/udev/libsane.rules \
| sed -e "s/GROUP=\"scanner\"/GROUP=\"lp\"/g" \
| sed -e "s/MODE=\"0664\"/MODE=\"0660\"/g" \
| sed -e "s/ACTION!=\"add\"/ACTION!=\"add|change\"/g" \
> $PKG/lib/udev/rules.d/80-libsane.rules
In pratica ho solo sostituito a
La stringa:
Per i dettagli di cosa significhi precisamente "add" e "change" per udev vi invito a dare un'occhiata alla documentazione o in rete.
Se poi qualcuno di buona volontà vuole contribuire a rendere più completo questo topic può anche spiegarcelo in due righe!
Risultato.
Dopo aver editato e salvato il file 80-libsane.rules ho lanciato scanimage come utente semplice e lo scanner non era ancora accessibile.
Poi allora ho cercato di rileggere le regole di udev lanciando da root il comando "udev trigger" (non so quanto sia pulita come cosa ma a quanto apre funziona).
Infine ho di nuovo lanciato scanimage da utente semplice e sta volta lo scanner è utilizzabile.
Per completezza riporto gli attributi e permessi dello scanner, che dopo la modifica e il reload di udev ha assunto gruppo di appartenenza "lp" anzichè "root".
Codice: Seleziona tutto
joe@darkstar:~$ scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
root@darkstar:/lib/udev/rules.d# udevadm trigger
joe@darkstar:~$ scanimage -L
device `mustek_usb:libusb:001:005' is a Mustek 600 CU flatbed scanner
root@darkstar:/lib/udev/rules.d# ls -l /dev/bus/usb/001/005
crw-rw-r-- 1 root lp 189, 4 giu 12 12:22 /dev/bus/usb/001/005
Ok, per quanto mi rigurda metterei SOLVED!
Mi accorgo dall'anteprima di aver scritto un sermone lunghissimo... spero almeno che la faccenda sia chiarita.
Grazie ancora a tutti per il supporto.
Alla prossima