Accès root gui

De Wiki doc

Problème

Depuis Debian 10 (Buster), il n'est plus possible d'exécuter des programmes graphiques via l'utilisateur root. On trouve tout un tas d'arguments comme quoi root c'est la mal, c'est pas sécurisé gnagnagna... Le fait est que je m'en balance et que si j'utilise Linux c'est bien pour pouvoir faire ce que je veux. Sinon, j'utiliserai Windows... d'autant plus que lorsque l'on fait des tests avec Qemu ou que l'on a besoin de Wireshark sans utiliser de Linux Capabilities qui imposent un redémarrage (vachement pratique quand on est en train de bosser avec 15 fenêtres d'ouvertes et un travail que l'on ne peut pas interrompre comme ça), on est bien obligé de passer par root pour simplement faire le travail (qui bien souvent ne prend pas trois plombe, lui, contrairement aux méthodes foireuses de contournements...). J'aimerai bien au passage, que les boulets qui sortent des inepties du style "root c'est dangereux" proposent des solutions au lieu de dire n'importe quoi...

Bref tout ça pour dire que parfois, root est indispensable et il est complètement débile de désactiver sont utilisation (c'est à l'utilisateur de décider, pas aux développeurs).

Solution

Pour permettre à root d'exécuter une fenêtre graphique, il faut désactiver le contrôle d'accès de la session graphique avec la commande suivante depuis un terminal en session utilisateur standard :

xhost +

Un message apparaît : access control disabled, clients can connect from any host.

Il faut ensuite passer en session root sans utiliser l'argument - qui récupère l'environnement d'une connexion réelle (afin de ne pas bousiller l’exception de sécurité accordé avant) :

su

Il est enfin possible de lancer un programme graphique en root en tapant le nom de ce programme.

INFORMATION

Cette exception est valable tout le temps (pas uniquement depuis le terminal où la commande a été entrée). Pour revenir au comportement précédent, il faut en théorie taper xhost -. Le message access control enabled, only authorized clients can connect apparaît et un message d'erreur s'exécute au lancement d'un programme graphique en root mais la fenêtre se lance quand même donc bon... bref ça fonctionne, c'est l'essentiel.

Solution 2

J'ai trouvé encore mieux ! Lorsque l'on se connecte en root via la traditionnelle commande su -, il suffit d'exporter l'affichage sur notre session et d'exécuter la commande d'autorisation d'accès X:

export DISPLAY=":0.0"
xhost +

Il est ainsi possible d'exécuter des applications graphique en root sans passer par l'utilisateur standard.

Source