Lancer une appli lors du plug d'une clé USB cryptée

Bonjour,

Je développe une application de gestions de partitions Luks (partitions cryptée avec clés). Voila ce que je veux faire:

  1. L’utilisateur branche une clé USB cryptée
  2. Mon programme est démarré et propose à l’utilisateur de sélectionner la clé de décryptage
  3. La clé USB est dévérouillée et montée

Ca a l’air facile, mais en fait plusieurs problèmes se posent:

  1. Comment désactiver les auto-monteur par default (de KDE/Gnome ou autre) uniquement pour les clés usb cryptées
  2. Comment détecter le plug de la clé USB (règle udev ?)

Merci d’avance,

1 J'aime

ACTION=="add", ENV{SUBSYSTEM}=="block", ENV{ID_TYPE}=="floppy" , PROGRAM="/lib/udev/usb_crypt.sh %k" ACTION=="add", ENV{SUBSYSTEM}=="block", ENV{ID_FS_TYPE}!="" , PROGRAM="/lib/udev/usb_crypt.sh %k" ACTION=="remove", ENV{SUBSYSTEM}=="block", ENV{ID_TYPE}=="floppy" , PROGRAM="/lib/udev/usb_crypt.sh %k" ACTION=="remove", ENV{SUBSYSTEM}=="block", ENV{ID_FS_TYPE}!="" , PROGRAM="/lib/udev/usb_crypt.sh %k" ettu mets ton script dans /lib/udev/usb_crypt.sh

J’étais partit sur un règle comme ceci:

(Ici le programme est la pour tester)

Ca fonctionnait bien sauf que le périphérique, example /dev/sdb n’a pas de env ID_FS_TYPE. Du coup la règle ne s’applique pas, et elle est ensuite analysée par les autres règles (notemment celle de KDE/Gnome), du coup ça marche pour /dev/sdb1 par exemple, il détecte, mais /dev/sdb est quand même géré par les autres règles.

Sauf erreur de ma part, l’example que tu me donnes me permet de détecter le plug, mais comme mon application ne sera pas bloquante (le système ne seras pas monté dans cette règle, mais plus tard), l’evènement sera quand même gérer par les autres règles, et par exemple KDE/gnome pourrait monter ou vouloir monter la partition. Or je voudrais empecher ça.

Rajoute ENV{ID_FS_TYPE}==“crypto_LUKS”, OPTIONS+=“last_rule”

Ca marche bien, mais j’ai toujours ce problème du ‘parent’ détecté :-/

Comme /dev/sdb ne correspond pas à la règle, il passe outre (normal, il a pas de ID_FS_TYPE). Alors le système détecte un nouveau periph. Ensuite je suppose que KDE/Gnome/whatever mattes les partitions de ce periph et propose le montage :confused:

Merci pour ton aide,

Hum, pour le parent, ton explication est plausible mais dans ce cas, tu es dans la mouise sauf à mettre un wrapper sur la règle s’appliquant au parent.

Bon bah merci pour ton aide, je vais regarder ça :wink:

C’est grave tu penses si le script exécuté bloque pendant quelques secondes (~1min max) le temps que l’utilisateur choisisse s’il veut monter ou pas la partition?

Non, met tu peux toujours lancer un script shell qui lance le programme en tache de fond. J’ai fait un script de fabrication automatique de clefagreg à l’insertion d’une clef USB, la partie dialogue se faisait dans un script lancé en tache de fond.

oui mais l’idée c’était que si je monte le système, le futur utilitaire le ferait pas puisqu’il est déjà monté, donc ça évite le soucis si l’utilisateur le monte avec mon outils. Bon par contre s’il le monte pas il aura aussi la prochaine fenetre(de KDE/etc) lui proposant de le monter :slightly_smiling:

En tout cas, à condition de le prévoir réentrant, rien ne s’oppose à mon avis à ce qu’il prenne du temps…

Merci pour ton aide en tout cas!