Bonjour,

je suis passé hier de Fedora 28 à Fedora 29, sans trop de problèmes, sauf un truc.

J'ai un souci avec le display sous root.

Par exemple, j'ai ceci
[~]# echo 'bonjour' | xsel
xsel: Can't open display: (null)
: Inappropriate ioctl for device
ou avec gvim :
[~]# gvim
E233: ouverture du display impossible
Appuyez sur ENTRÉE ou tapez une commande pour continuer
Je n'avais pas de problème sous Fedora 28, et je n'ai pas de problème sous mon compte "user".

Est-ce un problème de DISPLAY mal configuré ? J'ai essayé sous root :
export DISPLAY=:0
Cela modifie les messages d'erreur sans résoudre le problème
[~]# echo 'bonjour' | xsel
No protocol specified
xsel: Can't open display: (null)
: Resource temporarily unavailable
Merci de votre aide

--

Jean-Yves
Tu fais ces manips sous environnement graphique ou dans une console ?
Bonjour,

je fais cela dans un terminal (le terminal GNOME) après avoir ouvert une session graphique "GNOME".

Je viens de faire le test en me connectant sur une session Cinnamon et sur une session MATE et je n'ai pas le problème.
Bonjour

voici un petit test rapide sur ma fedora qui devrait donner des pistes:
[edouard@latitude ~ ]$ xhost +
access control disabled, clients can connect from any host
[edouard@latitude ~ ]$ sudo gedit
[sudo] Mot de passe de edouard : 
########### ICI gedit se lance avec les droits root ###########
[edouard@latitude ~ ]$ xhost -   
access control enabled, only authorized clients can connect
[edouard@latitude ~ ]$ sudo gedit
No protocol specified
Unable to init server: Impossible de se connecter : Connexion refusée

(gedit:4988): Gtk-WARNING **: 15:59:24.543: cannot open display: :0
Après, je ne le répéterais jamais assez, lancer une appli graphique en root est très dangereux et rarement nécessaire.

Le soucis vient sûrement du passage à Wayland. Par défaut le contrôle d'accès est activé.
Bonjour,

Effectivement, ouvrir une appli graphique sous root n'est pas une bonne pratique, mais c'est ma machine perso..... alors je suis un peu laxiste....

Je peux tout à fait résoudre mon problème en améliorant mes pratiques et je pense effectivement qu'il doit y avoir du Wayland autour de mon problème, mais je ne suis pas suffisamment compétent pour savoir où se situe le pb.

Merci à nouvo09 et madko

--

Jean-Yves
Wayland est beaucoup plus strict sur les droits d'affichage que x11.
C'est peut être pour cette raison que Gnome te pose soucis.

Comme dis madko, lancer une application graphique en root n'est pas le mieux, encore moins une session complète.
Mais avec la commande
xhost +
ça ne passe toujours pas ?

Avec quelle commande passe tu en root ? Le mieux serait sudo cmd, ou sudo -i pour éviter de perdre des variables d'environnement indiquant l'accès au serveur graphique.
non cela ne passe pas avec "xhost +"

mon ouverture de session se passe habituellement ainsi :
- J'allume mon PC
- GRUB m'affiche un menu entre les 3 dernières versions de Fedora et un vieux Windows XP (Dual boot)
- je choisi la dernière version de Fedora (n°29 mainternant)
- j'arrive sur l'écran de choix de l'utilisateur
- C'est mon ordi perso -> il n'y a que moi
- je peux aussi choisir (bouton "roue crantée") mon environnement graphique parmi "Cinnamon, GNOME et MATE)
- je prends GNOME
- après ouverture de mon environnement graphique, j'ouvre le terminal "Terminal de GNOME 3.30.2"
- je passe sous root via ''su -"
- j'exécute : echo "bonjour" | xsel et j'ai un message d'erreur

si je fais "xhost +" (sous user) cela donne
[~]$ xhost +
access control disabled, clients can connect from any host
Le problème doit bien avoir un rapport avec Wayland car je n'ai pas le problème avec les environnements Cinnamon, Gnome classique, Gnome sur Xorg et MATE mais seulement avec "GNOME"

En fait (je ne sais pas si c'est le bon test), j'ai ouvert chaque session graphique et regardé les variables XDG_SESSION_TYPE et WAYLAND_DISPLAY. Seule la session sous "GNOME" affiche wayland.

Par ailleurs, j'ai remarqué que de changer de session utilisateur sans rebooter ne modifiait pas correctement les environnements graphiques. Donc j'ai rebooté mon PC pour chaque environnement avant de tester les 2 variables ci-dessus.

Voila.

D'un côté, comme déjà dit, ouvrir une appli graphique sous root c'est pas une bonne idée, donc mon problème n'est pas un vrai problème

D'un autre côté, j'aime bien comprendre
Le problème vient de ton "su -" le - te fait vraiment changer d'environnement (fait disparaitre par ex la variable $DISPLAY). D'où mon conseil de passer par sudo -i

Si tu tiens vraiment à su, utilise le sans le -.
$ echo $DISPLAY
:0
(c'est important d'avoir une valeur)
$ xhost +
$ su
# echo $DISPLAY
:0
# gedit (ou autre)
# exit
$ xhost -
Est-ce que ça ça marche ?
Cela fonctionne parfaitement. Merci

Par contre, j'ai toujours (plus de 15 ans) passé sous root avec "su -". Il faut que je revois mes habitudes et les conséquences de cela.

Et il faut que je regarde "xhost"

Merci madko pour ton aide
En fait, pour avoir toutes les info, "su -" c'est l'équivalent de "su -l root", ou le "-l" pour "login" indique qu'il faut ouvrir un véritable shell de connexion. Au final, "su" seul permet de se transformer temporairement en un autre utilisateur (Switch User) depuis son shell utilisateur de connexion initiale. Alors que le "-l" te déconnecte puis reconnecte sur le shell de l'utilisateur demandé (souvent root). Te faisant perdre toutes les variables liées à la session graphique par ex de l'utilisateur de départ. Avec l'explication du -login on retient plus facilement la différence entre su et su - (je trouve).

Même si les 2 usages sont différents, ils ont pourtant chacun leur utilité. Pour passer en root, le "su -" te permet d'être vraiment dans un environnement isolé, en rapport avec le compte root. Alors que le "su" te permet d'être comme root, mais dans ton environnement utilisateur. Le 2e cas est donc plus proche de ce que tu cherches à faire, et il est aussi plus proche de l'usage de sudo qui est maintenant la meilleure méthode, en tout cas celle conseillée sur Fedora (et d'autres) pour passer une commande en root (ou autres).

Il y a eu pas mal de sujet sur su vs sudo ici sur le forum, et justement sudo a en plus la force de pouvoir être configuré pour indiquer quelle variables d'environnement il peut garder ou non. Ce qui est bien plus difficile avec su.

A noter aussi que comme ce n'est qu'une question de variables d'environnement, tu aurais pu t'en sortir avec "su -" (avec toujours xhost + avant), mais tu aurais du repositionner ces variables à la main. Avant, il y a 15 ans par ex (au hasard), ça se limitait à repositionner $DISPLAY. Mais je suis sûr qu'aujourd'hui, il y a peut être d'autres variables, plus compliqué, comme des jetons pour wayland, et d'autres chemin vers DBUS et compagnie.

Pour finir, avec la tendance depuis des décennies à isoler finement les bouts de code/programme à pouvoir s’exécuter avec des droits élevés, la conséquence est d'avoir de plus en plus de difficulté à lancer des appli complète en tant que root sur un environnement graphique. Il y a peut être même une volonté de bloquer ce cas d'usage. Il faut dire que, c'est historique, Xorg n'a plus besoin de tourner en root que depuis quelques années seulement, et son successeur/concurrent wayland, avec l'avantage de la jeunesse, à directement adhéré à ce principe. Et dans la pratique, c'est vrai que l'affichage d'une fenêtre, d'une appli graphique, bref l'interface utilisateur, elle, n'a pas besoin de privilèges si élevés...

Désolé pour le pavé et bonne continuation
Tu n'as pas à être désolé de prendre de ton temps pour fournir une explication détaillée, dans un français impeccable.

On voit trop souvent sur les forums des questions posées par des utilisateurs qui ne prennent pas le temps de faire l'effort de rédiger convenablement, et des réponses expéditives par des experts fatigués de répondre pour la nième fois, incompréhension mutuelle amenant à des propos stériles.

Je te remercie très sincèrement Madko pour ton aide.

Bonne continuation

--

Jean-Yves
Pereil, super merci Madko pour ce bout de lecture tellement éclairant 🙂