GNU/Linux >> Tutoriels Linux >  >> Linux

Lancer un programme graphique sur le bureau d'un autre utilisateur en tant que root ?

Voici d'autres questions que je pense avoir besoin de savoir :

  • D'une session non X ? (ce qui signifie que root n'est pas connecté à X)

  • Si plusieurs personnes étaient connectées sur X, pourrais-je détecter automatiquement qui était sur quel écran, et ainsi détecter par programmation sur quel écran je dois lancer l'application ?

  • Puis-je lancer l'application en tant qu'utilisateur ? (ok, je suis sûr à 99,999 % que c'est un oui)

  • Puis-je détecter si les utilisateurs du groupe X sont connectés à X ?

Réponse acceptée :

Pour lancer un programme graphique sur le bureau d'un utilisateur, vous devez trouver deux éléments :sur quel écran se trouve le bureau de l'utilisateur (l'adresse) et quel cookie d'autorisation utiliser (le mot de passe).

La commande suivante doit répertorier les affichages locaux auxquels l'utilisateur est connecté (un par ligne) sur la plupart des unix :

who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'

Trouver le cookie d'autorisation est un peu plus difficile. Vous devez rechercher le fichier cookie de l'utilisateur, qui est ~/.Xauthority par défaut (tout ce dont vous avez besoin est l'emplacement du fichier cookie, vous n'avez pas besoin d'en extraire le cookie). Cela fonctionne sur de nombreux systèmes, mais pas sur tous; cela dépend du gestionnaire d'affichage et de la façon dont il est configuré, et en particulier Gdm (la valeur par défaut sur Ubuntu) n'a pas utilisé l'emplacement par défaut la dernière fois que j'ai regardé. Je ne peux pas penser à un moyen portable de trouver le fichier de cookie X réel. Le moyen le plus précis de le savoir est de trouver le pid du processus X et de rechercher l'argument de -auth option. Une autre façon est de trouver un processus en cours d'exécution sur ce serveur X et de récupérer son XAUTHORITY variable d'environnement. Si vous ne parvenez pas à trouver le fichier cookie, consultez Ouvrir une fenêtre sur un affichage X distant (pourquoi "Impossible d'ouvrir l'affichage") ?

Une fois que vous avez les deux informations, mettez l'affichage choisi dans le DISPLAY variable d'environnement, le fichier de cookie d'autorité X choisi dans XAUTHORITY variable d'environnement, et vous êtes défini. Peu importe l'utilisateur sous lequel le programme s'exécute ; combiner avec su si vous le souhaitez.


Linux
  1. Comment exécuter un programme spécifique en tant que root sans invite de mot de passe ?

  2. "Erreur lors de la construction du proxy…" lors de la tentative de lancement de Gnome-terminal en tant que root ?

  3. Comment lancer un ensemble de programmes dans Tmux ou Gnome-terminal dans un script ?

  4. Comment passer d'un utilisateur root à un autre utilisateur disposant d'un shell Nologin ?

  5. XeroLinux Review:encore une autre distribution basée sur Arch pour les débutants

Deux outils graphiques pour manipuler des PDF sur le bureau Linux

Avis de l'utilisateur sur Linux Lite 3.0 - Bureau Linux simple, rapide et gratuit

Mise à jour d'ISPConfig 3.1 vers ISPConfig 3.2

Gotop - Encore un autre moniteur d'activité graphique TUI, écrit en Go

Toujours lancer le terminal en tant qu'utilisateur root (sudo) dans Ubuntu

Comment un gestionnaire de fichiers peut-il monter un lecteur sans racine ?