Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ! tongue 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 ! wink

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 sad 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 ! big_smile

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 big_smile

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