端末でユーザーを切り替えた場合。
su bob
gedit
がディスプレイを所有していないため、bob
を開けません。
私が実行する場合
xhost +
bob
に切り替える前に、一部のアプリケーションでディスプレイを開くことができますが、すべてではありません。 gedit
を実行しようとすると、次の出力が表示されます。
(crashreporter:4415):GnomeUI-WARNING * :セッションマネージャーへの接続中:指定された認証プロトコルはいずれもサポートされていません。
* GLib-GIO:ERROR:/build/buildd/glib2.0-2.28.6 /./ gio/gdbusconnection.c:2279:initable_init:assertion failed:(connection-> initialization_error ==ヌル)
ユーザーbob
がコマンドラインから既存のXセッションにアクセスできるようにする場合は、ターミナルプロンプトで次のコマンドを入力できます。
xauth nextract - $DISPLAY | Sudo -u bob xauth nmerge -
Thiusは xauth コマンドを使用して、現在のユーザー(コマンドの最初の部分、|
の前)の認証情報を抽出し、それをユーザーbob
の$HOME/.Xauthority
ファイルにマージします。ユーザーbob
としてコマンドを実行できるように設定するには/etc/sudoers
が必要であることに注意してください(これはUbuntuボックスの管理ユーザーの場合のデフォルトです)。
その後、su -l
でユーザーbob
に切り替えることができます。
または、次の個別のコマンドを発行できます。
xauth nextract - $DISPLAY > /tmp/xauth.temporary.file
su -l bob -c 'xauth nmerge - < /tmp/xauth.temporary.file'
rm /tmp/xauth.temporary.file
ご了承ください:
1)一時ファイルには、ユーザーbob
が読み取れる権限が必要です(多くの場合、システム上のanyユーザーが読み取れることを意味します) );
2)一時ファイルを読み取ることができるすべてのユーザーがXディスプレイにアクセスできる時間枠があります。
したがって、これらの欠点がないため、Sudo
アプローチを使用することをお勧めします。
別の方法、xhost +
が実行された後:
dbus-launch gedit --sm-client-disable