# HPLIP, CUPS e permessi.

## to.alex

Dopo mesi, finalmente ho trovato il tempo (e la pazienza) di tornare ad occuparmi della mia stampante (HP PSC 1210, di quelle all-in-one con stampante e scanner), che più o meno da febbraio aveva deciso di non stampare più.

Già allora avevo capito che c'era qualche problema tra cups e hplip e che era legato ai permessi.

Ma in giro non ero riuscito a trovare niente che mi permettesse di far tornare la stampante a stampare, e io stampo pochissimo.

Per farla breve, adesso ho risolto aggiungendo in cupsd.conf la riga

```
Group plugdev
```

Questo perché quando la stampante viene collegata, viene creato il nodo /dev/bus/usb/001/005 relativo al dispositivo (da udev) ma con plugdev come gruppo di appartenenza.

Ho cercato un po' con google, ho provato le varie soluzioni che vedevano modifiche alle regole impostate in /etc/udev/rules.d/70-hpmud.rules o a /etc/udev/rules.d/50-udev-default.rules ma sempre senza successo.

Adesso con cups che usa il gruppo plugdev per i processi di stampa tutto funziona, ma non è la soluzione corretta. Diciamo che è un workaround.

Purtroppo gentoo-wiki.com è tutto il giorno che non funziona (la home page risponde, ma il search e le varie pagine restituiscono tutte degli errori), altrimenti mi ci fiondavo.

Qualcuno sa darmi qualche dritta per risolvere in maniera corretta (sistemando cioè le regole di udev)?

Grazie.

----------

## codadilupo

beh... aggiungi l'utente cups al gruppo plugdev, se non vuoi cambiare il gruppo dentro il file cups.conf  :Wink: 

Coda

----------

## to.alex

Vabbè, ma sarebbe lo stesso un workaround.

Invece ho scoperto dov'è il problema.

Dopo circa un'oretta buona a capire come funziona udev (  :Shocked:  ), ho potuto constatare che le regole presenti all'interno del file /etc/udev/rules/70-hpmud.rules sono sbagliate (in pratica non si verificano mai le condizioni perché le regole vengano applicate) e le regole del file /etc/uedv/rules.d/70-libgphoto2.rules fanno un bel casino.

Per quanto riguarda il file 70-hpmud.rules, la condizione iniziale

```
SUBSYSTEM!="usb|usb_device", GOTO="hpmud_rules_end"
```

non si verifica mai. Quell'OR messo li, mi sa di svista colossale. Ci vorrebbe un AND. Ho comunque preso ispirazione dello stesso blocco di regole della openSuSE presente sul portatile e ho convertito quella condizione come segue

```
SUBSYSTEM=="usb", GOTO="hpmud_rules_continue"

# For backward compatibility match also against "usb_device":

SUBSYSTEM=="usb_device", GOTO="hpmud_rules_continue"

GOTO="hpmud_rules_end"

LABEL="hpmud_rules_continue"

```

Si, è cresciuta un pochino, ma sostituita a quella riga è l'equivalente di un AND. Poi magari se scopro come si fa l'AND (non so se va bene un & e basta, dovrei provare) lo ripulisco.

Ma non è tutto. Il file 70-libgphoto2.rules, fa in modo che la correzione da sola non basti.

In particolare la linea 34

```
GROUP="plugdev"
```

finisce con l'assegnare qualunque cosa passi per sbaglio la dentro, al gruppo plugdev.

Al momento l'ho commentata e tutto (stampante, scanner e macchina fotografica) funziona correttamente.

A questo punto, mi sa che tocca fare due segnalazioni di bug.

Però vorrei prima capire perché ho come l'impressione di essere l'unico ad essere incappato in questo problema.

C'è quindi qualcun altro con una stampante/scanner HP che ha installato libgphoto2, a cui però funziona tutto senza problemi (e senza aver dovuto smanettare con i permessi di cups, o altro)?

----------

## skypjack

io ho usato una hp via cups con hplip e non ho avuto di questi problemi.  :Confused: 

----------

## codadilupo

tra l'atro, per quanto ho capito, è piu' che corretto che tutto cio' che viene montato autonomamente appartenga al gruppo plugdev, tanto che il manuale raccomanda di mettere il proprio utente in tale gruppo  :Wink: 

Coda

----------

## to.alex

Ma infatti il mio utente (come anche root, che non riusciva comunque a stampare) appartiene al gruppo plugdev (come anche al gruppo lp), ma cups quando fa partire i processi di stampa li lancia facendoli appartenere (di default) al gruppo lp, salvo indicare diversamente in cupsd.conf.

Infatti aggiungendo a cupsd.conf "Group plugdev" stampa, ma non mi sembra corretto. Cups dovrebbe lanciare i suoi processi facendoli appartenere al gruppo lp, anche perché se si fa diversamente, a cosa serve aver separati i gruppi plugdev e lp? A cosa servirebbe a sto punto tutto il gruppo lp?

Del resto, controllando nella openSuSE che ho sul portatile, quand attacco la stampante, il dispositivo che viene creto in /dev/bus/usb/... ha impostato i permessi 664 (mentre gentoo prima che ci mettessi mani, impostava 644) e gruppo lp. Lo trovo più corretto.

Però magari dipende dal fatto di avere HPLIP assieme a libgphoto2 compilato con ogni tipo di camera supportata (in particolare le PTP2, che poi è quello che mi serve).

In ogni caso nel week-end apro due segnalazioni, una per HPLIP e una per libgphoto2, vediamo che mi dicono i devel.

Ciao.

----------

## djinnZ

Il gruppo lp serve ad identificare chi può stampare e chi no (in ambiente distribuito la cosa riveste un considerevole peso anche dal punto di vista pratico) oppure chi può agire sulle code di stampa. Plugdev serve a decidere chi può e chi non può collegare hardware. Ovviamente su un pc di uso domestico queste distinzioni sono inutili ma in altri ambiti sono obbligate. Ciò non toglie che siano due cose distinte e separate.

Per caso hai la use parallel attiva su hplip?

----------

