Pagina 2 di 2

Re: Scanner solo da root

Inviato: mer giu 12, 2013 0:03
da joe
Farò la prova dei permessi quando riavvio il pc.
Per il momento ho staccato e riattaccato l'usb senza toccare niente, ed ecco cosa dice scanimage:

Codice: Seleziona tutto

joe@darkstar:~$ scanimage -L
device `mustek_usb:libusb:001:008' is a Mustek 600 CU flatbed scanner

In pratica quindi dopo la manovra fisica di connessione dello scanner "a caldo" non ci sono problemi, viene rilevato tutto anche da simple user ed è correttamente utilizzabile anche con XSane.
Pertanto ribadisco che personalmente non credo che i guai siano dovuti ad un problema di permessi: se così fosse infatti, come giustificheremmo l'output di scanimage soprariportato?

Re: Scanner solo da root

Inviato: mer giu 12, 2013 8:15
da aschenaz
Ma pensate che quel fix riportato nel changelog current non abbia niente a che fare con questo problema?
No, perché se invece lo riguardasse sarebbe la dimostrazione che si tratta di un problema noto, che non dipende dalle impostazioni dei permessi.
E, in ogni caso, mi pare che ci fossero diverse discussioni al proposito, qui e altrove. Ora vado un po' di fretta, ma poi conto di cercare qualcosa.

Re: Scanner solo da root

Inviato: mer giu 12, 2013 10:35
da joe
Non penso che il fix di cui parlavi non sia inerente alla faccenda, tant'è che ho preso il pacchetto sane della current e ho provato a sostituire il file 80-libsane.rules con quello preso dal pacchetto della current. Quindi ho riavviato il PC perchè non so bene come riavviare udev (forse con udevadm trigger, ma per sicurezza ho fatto un reboot...).
Il risultato è stato il medesimo di prima... la manovra non ha risolto il problema. Questo non significa comunque che il fix di cui parlavi non sia inerente la soluzione.

Ad ogni modo adesso che ho acceso il PC con lo scanner già collegato all'usb ecco cosa riporta scanimage:

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).

Non vedo d'altra parte come possa trattarsi di un problema di permessi perchè staccando e riattaccando lo scanner tutto funziona e i permessi sono sempre gli stessi...

Re: Scanner solo da root

Inviato: mer giu 12, 2013 12:43
da joe
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

Codice: Seleziona tutto

ACTION="add"

La stringa:

Codice: Seleziona tutto

ACTION="add|change"

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! :D
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 :D

Re: [SOLVED] Scanner solo da root

Inviato: mer giu 12, 2013 16:41
da aschenaz
:thumbright:
Funziona!

Re: [SOLVED] Scanner solo da root

Inviato: mer giu 12, 2013 18:18
da joe
Premesso che sono ignorante in materia di pacchetti bugfix ecc ecc...
E anche in fatto di rilascio aggiornamenti relativi a pacchetti delle varie versioni di slack.

Cosa ne pensate di proporre a Pat di aggiornare il pacchetto sane anche per quello che riguarda la versione stabile di slackware?
Alla fine si tratta di un file di configurazione di udev... poca roba, è un peccato lasciare la stabile affetta dal bug quando si può correggere con poco sforzo... o no?

Infatti la soluzione alla fine non è stata troppo banale viste le due pagine di topic...
Dite la vostra! :D

Re: [SOLVED] Scanner solo da root

Inviato: sab giu 29, 2013 11:10
da joe
Ok, aggiorno la situazione dopo aver cercato di contattare lo staff slackware.
Premesso che le mail inviate ai contatti ufficiali non hanno prodotto alcuna risposta, mi sono rivolto al forum di linuxquestions che sembra il posto più vicino agli sviluppatori. slackware.
Vi metto il link sotto:
http://www.linuxquestions.org/questions ... 4175467306

Bene, come vedete il pacchetto "sane" affetto da questa specie di bug non può essere incluso nell'applicazione della patch di Pat anche per il ramo -stable, come è stato fatto invece per lo stesso pacchetto del ramo -current.
Perchè? perche il bug non è relativo a problemi di sicurezza. Pertanto come da tradizione gli sviluppatori non apportano modifiche generiche ai pacchetti di versioni stabili, solo il ramo current ne viene coinvolto.

Ok, in soldoni a livello ufficiale per quel che riguarda slackware-14.0 dobbiamo accontentarci di un pacchetto sane in qualche misura bacato.
Il fix al bug come si vede da questo topic è una scemata pazzesca, basta sostituire una riga ad un file di testo contente regole di udev...
Da quello che mi hanno risposto su linuxquestions sembra inoltre che il bug non riguardasse tutti i dispositivi scanner.

Per conludere:
1- o si risolve a mano editando il file di udev
2- oppure, la butto lì, si potrebbe anche pathcare il pacchetto sane e pubblicarlo qui su slacky.eu.
È solo un'idea, ma vista l'entità del bug non so se è il caso di scomodare il repo slacky.
In ogni caso se qualcuno fosse interessato a farlo (io mi vedo un po' impacciato con la ripacchettizzazione) potrebbe anche aggiungere un post a questa discussione per conoscenza.
In caso contrario da parte mia chiudo qua il discorso. ;)

Alla prossima! :D

Re: [SOLVED] Scanner solo da root

Inviato: sab giu 29, 2013 20:38
da navajo
dico la mia:
avere un pacchetto patchato, sarebbe bello e comodo. Magari affiancato da quello originale.