web-dev-qa-db-fra.com

Comment puis-je changer d'utilisateur dans un shell et utiliser la session d'affichage gnome existante?

Si je change d'utilisateur dans un terminal.

su bob

Je ne peux pas ouvrir gedit parce que bob ne possède pas l'écran.

Si j'exécute

xhost +

avant de passer à bob Je peux ouvrir l’affichage pour certaines applications mais pas pour toutes. J'obtiens la sortie suivante en essayant d'exécuter gedit:

(crashreporter: 4415): GnomeUI-WARNING * : lors de la connexion au gestionnaire de session: aucun des protocoles d'authentification spécifiés n'est pris en charge.
*
GLib-GIO: ERREUR: /build/buildd/glib2.0-2.28.6 /./ gio/gdbusconnection.c: 2279: initable_init: échec de l'assertion: (connexion-> initialization_error == NUL)

4
z7sg

Si vous souhaitez autoriser l'utilisateur bob à accéder à votre session X existante à partir de la ligne de commande, vous pouvez entrer ces commandes à l'invite du terminal:

xauth nextract - $DISPLAY | Sudo -u bob xauth nmerge -

Thius utilise la commande xauth pour extraire les informations d'authentification de l'utilisateur actuel (première partie de la commande, avant le |), puis les fusionner avec l'utilisateur bob 's $HOME/.Xauthority fichier. Notez que /etc/sudoers doit être configuré pour que vous puissiez exécuter des commandes en tant qu'utilisateur bob (par défaut si vous êtes l'utilisateur administrateur d'une boîte Ubuntu).

Vous pouvez ensuite passer à l'utilisateur bob avec su -l.

Alternativement, vous pouvez émettre ces commandes distinctes:

xauth nextract - $DISPLAY > /tmp/xauth.temporary.file
su -l bob -c 'xauth nmerge - < /tmp/xauth.temporary.file'
rm /tmp/xauth.temporary.file

Notez que:

1) le fichier temporaire doit avoir des autorisations telles que l'utilisateur bob puisse le lire (ce qui signifie souvent que tout utilisateur du système peut le lire )

2) il existe une fenêtre temporelle pendant laquelle tout utilisateur pouvant lire le fichier temporaire peut accéder à votre affichage X.

Par conséquent, il est préférable d’utiliser l’approche Sudo car elle n’a pas ces inconvénients.

3
Riccardo Murri

Une autre façon, après que xhost + ait été exécuté:

dbus-launch gedit --sm-client-disable
0
enzotib