Lancer des applications KDE4 à partir d'une console root

[size=120]“Pour rappel, il est fortement déconseillé de lancer une application graphique en tant qu’utilisateur root cela pouvant entraîner des répercutions négatives sur votre système.” Edit de l’équipe du forum[/size]
Voir le fil de discussion à ce sujet, et notamment l’excellente explication de fran.b.


J’avais l’habitude sous KDE3 de souvent utiliser sux au lieu de su pour passer en console root, afin de pouvoir lancer des applications graphiques pendant mes bricolages (l’exemple le plus commun étant mon éditeur favori kate pour éditer des fichiers système).
Mais avec mon install toute fraîche de KDE4, j’ai été assez surpris de ne plus pouvoir lancer d’applications KDE à partir d’une console root sans obtenir systématiquement une vilaine erreur DBus.

En cherchant un peu sur internet, j’ai trouvé qu’il fallait préfixer toute commande KDE par « dbus-launch », par exemple :

dbus-launch kate /etc/apt/preferencesÇa marche, mais on peut pas dire que ça soit super pratique…
De plus, cette méthode a un énorme souci : à chaque fois, un nouveau dbus-daemon est lancé qui reste en mémoire jusqu’au reboot de la machine à moins d’être killé à la main !
Ma « solution » originale à ce problème était de rajouter un eval $(dbus-launch) au fichier /root/.bashrc, mais le même problème se posait : chaque nouvelle session root lançait un nouveau dbus-daemon persistant.

Après avoir fouillé un peu partout (et notamment dans man dbus-launch, on ne répétera jamais assez que man est notre ami) j’ai finalement réussi à comprendre le pourquoi du comment.
Le problème est que lors d’un su ou sux « simples » (su - et sux - ne sont pas affectés) les variables d’environnement sont recopiées, y compris la variable DBUS_SESSION_BUS_ADDRESS qui pointe alors vers le serveur DBus de l’utilisateur (et qui refuse les connexions de tout autre utilisateur y compris root).

Partant de là, il ne reste plus qu’à exploiter la fonctionnalité « --autolaunch » de DBus : lorsque la variable DBUS_SESSION_BUS_ADDRESS est vide, DBus se débrouille comme un grand pour retrouver une précédente instance du démon, ou bien pour le lancer s’il n’existe pas encore.

En conséquence, si vous avez l’habitude d’utiliser su ou sux sans mettre de « - » après, il suffit de faire la manipulation suivante pour effacer automatiquement la variable au démarrage d’une session root :

# echo 'DBUS_SESSION_BUS_ADDRESS=' >> /root/.bashrcOn déconnecte/reconnecte la session root (avec sux pour faire le lien avec X) et tout fonctionne comme on est en droit d’attendre.

Résultat : un seul serveur DBus pour root, toutes les applications root peuvent communiquer entre elles sans pour autant pouvoir accéder aux DBus des utilisateurs. Et bien entendu, plus de vilain message d’erreur.

Voilà voilà, j’espère que ça pourra éviter à quelqu’un d’autre de perdre du temps à chercher comment résoudre ce souci !

Euh… Et gksu ?

Salut,

Trop sécurisé, on ne reste root que le temps de la commande :slightly_smiling:

en l’occurence, kdesu… Mais de mémoire, il faut le réactiver sous KDE4, la commande en question a été supprimée. (Alors… Je ne sais pas exactement où, mais c’est extrêmement simple à faire, suffit de googler kdesu + kde4… d’autres ont ce soucis)

@ggoodluck47 : merci pour ton sarcasme, mais la sécurité de ma machine se porte bien. Simplement, quand je suis déjà en train de bricoler en root je ne vois pas l’intérêt de devoir retaper le mot de passe alors que je peux lancer la commande directement.
Je pense que tu es mieux placé que moi (tu es en sid si j’ai bonne mémoire) pour savoir que ça arrive assez régulièrement de devoir passer un bon moment en root pour configurer une machine…
J’aurais dû être un peu plus explicite à ce sujet dans mon post d’origine.

Sinon, concernant kdesu : j’ai un comportement étrange ici, à savoir que le lanceur de commandes (Alt+F2) reconnaît kdesu, mais dès que je suis en console il n’y a plus rien à faire. Je n’ai pas cherché pour le moment, j’ai bien assez à faire à tout réinstaller.

Dernier point :

[quote]cela pouvant entraîner des répercutions négatives sur votre système[/quote]Mis à part les évidents soucis de sécurité si on fait n’importe quoi (oui, j’aurais dû mettre un disclaimer moi-même à ce sujet, mea culpa, mais ça me paraissait évident), à quelles autres répercussions peut-on s’attendre ? J’entends bien sûr par là des soucis dont l’origine ne se situe pas entre la chaise et le clavier : non pas que ça ne m’arrive jamais de faire des bêtises, mais mon utilisation en root d’applis graphiques se limite généralement à kate (et éventuellement quelques programmes comme systemsettings quand je n’ai pas le choix) ce qui en soi limite fortement les risques d’erreurs.

Salut syam,

Chaque fois que nous utilisons une commande graphique, il y a relations client <==> serveur et c’est dans cette relation que réside le maximum d’insécurité. Je ne suis pas assez “pointu” pour te montrer où mais j’ai assez confiance dans les gens qui m’ont expliqué cela.
Quand vous lancez en root une application graphique celui qui prendrait alors le contrôle de la relation aurait du même coup les droits de “root” !
Alors quand en plus cela dure entre deux actions …

Ok, je commence à comprendre l’idée. C’est encore un peu flou (et pour cause, ça semble l’être aussi pour toi) mais je vais creuser la question et je viendrai compléter ici au fur et à mesure de mes trouvailles.

Pour les discussions, allez là :
http://forum.debian-fr.org/viewtopic.php?f=1&t=26924
Quand tout sera “au propre”, on modifiera ici.
Merci.