Le programme xbindkeys permet d'assigner des fonctions à des touches ou des combinaisons de touches, y compris aux touches supplémentaires qui équipent les clavier multimédias ! 😛 Malheureusement, il semble impossible d'utiliser xbindkeys pour lancer des commandes sudo. L'utilisation du bit setuid de la commande permet de résoudre ce problème.
Ce tutoriel est valable sous Gnome et KDE.
Mon clavier multimédia est équipé de touches supplémentaires :
Courrier, Démarrage, Augmenter/Diminuer le volume, Poste de Travail, Mise en veille, etc .... En utilisant
xbindkeys (disponible dans Synaptic), j'ai assigné des fontions à ces différentes touches (
lancer Thunderbird, lancer Firefox, lancer une Konsole, lancer mon client jabber, etc ...). De plus, j'ai rajouté un script dans
/home/vinvin2021/.kde/Autostart qui lance automatiquement
xbindkeys dès le lancement de ma session KDE. Que du bonheur ! 😉
Ensuite, j'ai souhaité assigner les fonctions
Redémarrer/Éteindre l'ordinateur à des touches, toujours en utilisant
xbindkeys. Pour Redémarrer/Éteindre l'ordinateur, je n'utilise pas les commandes
reboot,
halt ou
shutdown, mais plutôt la commande
telinit. Ça devrait marcher également pour ces commandes.
Première tentative : Comme la commande
telinit nécessite
sudo, j'ai rajouté la ligne suivante dans le fichier
/etc/sudoers afin de pouvoir lancer la commande
sudo telinit sans avoir besoin de rentrer un mot de passe :
vinvin2021 ALL= NOPASSWD: /sbin/telinit
Et ça marche ! La commande
sudo telinit ne me demande plus de mot de passe pour fonctionner. J'ai donc assigné cette commande à une touche dans le fichier de configuration de
xbindkeys. Et là, ça ne marche pas 🙁 Apparement,
xbindkeys ne peut pas lancer de commande
sudo. Sniff !
Deuxième tentative : Armer le bit setuid de la commande
telinit, de façon à ne plus avoir besoin de
sudo pour lancer la commande
telinit.
sudo chmod +s /sbin/telinit
Bon, ça marche ! La commande
telinit se lance sans avoir besoin de
sudo. Maintenant, l'assignation de la commande
telinit dans le fichier de configuration de
xbindkeys marche. Je peux redémarrer (
telinit -t10 6) et éteindre (
telinit -t10 6) l'ordinateur simplement en appuyant sur une touche ! 😃
Pour en savoir plus sur
xbindkeys :
-
http://qliu.free.fr/Linux/programmer-touche.html (Partie 2 : « Sous X11: XBindKeys »)
-
http://hocwp.free.fr/xbindkeys/xbindkeys.html
-
http://forum.ubuntu-fr.org/viewtopic.php?pid=13367#p13367
Pour en savoir plus sur le
bit setuid :
-
http://www.linux-kheops.com/line/html/line/line-jan1997/datas/droits.htm (en bas de page)
Remarque : Soyez prudent lors de l'utilisation du bit setuid sur des commandes de root. En effet, en armant le bit setuid d'une telle commande, vous autorisez tout le monde à lancer cette commande en tant que root.