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)
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.
Une autre façon, après que xhost +
ait été exécuté:
dbus-launch gedit --sm-client-disable