Pages : 1
#1 Le 12/11/2005, à 16:44
- Vinvin2021
HOW-TO : Xbindkeys et sudo
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.
Dernière modification par Vinvin2021 (Le 13/11/2005, à 00:21)
Hors ligne
#2 Le 19/12/2006, à 19:49
- hyjCQj9J
Re : HOW-TO : Xbindkeys et sudo
Petit soucis avec xev, certaines touches ne renvoient pas de keycode.
Sous Edgy Kubuntu.
KDE : du vrai GUI qui sert tout en étant un vrai environnement de travail.
Sinon autant rester sous Ubuntu-server :)
Kubuntu, parce que je le vaux bien.
Hors ligne
#3 Le 18/07/2007, à 21:01
- ths
Re : HOW-TO : Xbindkeys et sudo
kikoo
j'aurai voulu pouvoir regler le gouveneur des mes cpu avec xbindkeys (core2duo, avec le screenlet faut faire l'operation pour chaque cpu...)
J'avais donc pensé utiliser la commande
sudo cpufreq-set -c 0 -g powersave; sudo cpufreq-set -c 1 -g powersave;
sudo cpufreq-set -c 0 -g ondemande; sudo cpufreq-set -c 1 -g ondemande;
Mais le probleme, c'est qu'il faut avoir les droits root pour cette commande, et je ne l'ai pas trouver dans /sbin/
je vais tester avec locate..
Edit :
cpufreq-set se trouve dans
/usr/bin/cpufreq-set
Tout fonctionne nikel ;p c'est trop bien
Dernière modification par ths (Le 18/07/2007, à 21:10)
ta mère elle est tellement grosse qu'elle retourne un stack overflow.
Et paf ! Dans les dents !
Hors ligne
Pages : 1