Droits sur un fichier récalcitrant [résolu]

Bonjour.

Une fois n’est pas coutume, j’ai besoin d’un coup de main pour résoudre un problème de droits sur un fichier.

J’ai une imprimante un peu exotique (LaserJet P1005) qui fonctionne avec le driver «foo2xqx» à condition de lui envoyer un firmware à chaque branchement par la commande

qui ne peut être exécutée qu’en root pour des raisons de droits sur /dev/usb/lp0.

Mon idée est d’automatiser la chose par la création d’un script minimaliste qui sera appelé à chaque branchement:

[code]#!/bin/bash
cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0

exit 0[/code]
Le problème est que comme /dev/usb/lp0 est créé au branchement, je ne peux lui donner les droits user en permanence. J’ai donc cherché une solution du côté de sudoers:

[code]#!/bin/bash
sudo cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0

exit 0[/code]
et

[code]Defaults env_reset

Uncomment to allow members of group sudo to not need a password

%sudo ALL=NOPASSWD: ALL

Host alias specification

User alias specification

Cmnd alias specification

Cmnd_Alias PRINT=cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0

User privilege specification

root ALL=(ALL) ALL

eric ALL=NOPASSWD:PRINT[/code]
mais je me heurte à un problème de syntaxe avec l’alias de la commande cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0

Si un familier de sudoers (que j’utilise peu) pouvait m’éclairer, je lui en serai reconnaissant.

J’ai résolu le problème très simplement de la façon suivante:

[code]Defaults env_reset

Uncomment to allow members of group sudo to not need a password

%sudo ALL=NOPASSWD: ALL

Host alias specification

User alias specification

Cmnd alias specification

Cmnd_Alias PRINT=/home/eric/Scripts/print.sh

User privilege specification

root ALL=(ALL) ALL

eric ALL=NOPASSWD:PRINT[/code]
pour autoriser l’utilisation de sudo sans mot de passe dans mon script,

et

[code]#!/bin/bash
sudo chmod 777 /dev/usb/lp0
cat /usr/share/foo2xqx/firmware/sihpP1005.dl > /dev/usb/lp0

exit 0[/code]
pour donner les droits user à la sortie usb, puis envoyer le firmware vers l’imprimante.

Ensuite, dans gnome/système/préférences/périphériques et médias amovibles/imprimante et scanner, j’ai coché l’option “lancer automatiquement un programme lors de la connexion d’une imprimante” avec la commande: /home/eric/Scripts/print.sh

Et voilà, au branchement, le firmware est envoyé et tout fonctionne. En revanche, j’ignore si cette méthode est très orthodoxe, mais c’est la seule que j’ai trouvée.