私はユーザー A としてログインしています。ユーザー B として GUI アプリケーションを実行したいのですが、root ではなくユーザーです。ユーザー B もローカルであり、リモートではありません。必要なのは異なる環境変数だけです。2 番目の X を実行したくはありません。同じディスプレイで実行したいのです。ターミナルでプログラムを実行することには問題はありませんsu - ...
。動作します。グラフィカルの場合、エラー メッセージが表示されます。
Application initialization failed: couldn't connect to display ":0.0"
または
Gtk-WARNING **: cannot open display: :0.0
これを修正する良い方法はありますか? の正しい使い方に関する記事xhost
か何かでしょうか?
答え1
userBname
ディスプレイへのアクセスを許可するには、次のコマンドを実行します。xhost +SI:localuser:userBname
を使用して全員にアクセスを許可することもできますxhost +
が、これは安全ではありません。ユーザーごとにアクセスを許可する方がよいでしょう。ローカル ユーザーの xhosts エントリの正しい構文は ですSI:localuser:username
。
次にsu userBname
、export DISPLAY=:0.0
を実行し、最後に GUI プログラムを実行します。 でディスプレイへのアクセスを許可しましたがxhost
、プログラムがグラフィック出力を配置する場所を認識できるように、環境変数も設定する必要がありますDISPLAY
。 ユーザーごとに異なる変数を許可すると、DISPLAY
1 台のマシンに接続している複数のユーザーが異なる物理端末を使用できるようになります。
答え2
gksu -u 希望のユーザー名を使用し、パスワードを入力するだけで準備完了です。
DISPLAY=:1.0 gksu [-u <user>] [options] <command>
あるいは、su を使用して XDISPLAY を適切な画面に設定し、最後に目的のアプリケーションを起動することもできます。
答え3
これを実現する方法は次のとおりです:-
- 既存の X セッションを持つユーザーとして x ターミナルを開きます。
- コマンドを発行します
xauth list
。さまざまな記述子について、X サーバーへの要求を認証する X Magic クッキー値が表示されます。「unix」参照のものをコピーします。例:myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 2番目のターミナルを最初のユーザーとして開きますが、ユーザーを希望のIDに切り替えます(su)。例:
su - user2
- これでユーザーが切り替わりました。コマンドを発行し
xauth add
、ステージ2でコピーした行を貼り付けて、リターンキーを押します。例:xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- コマンドラインから 2 番目のターミナルで X プログラムを起動します。例:
firefox
それでおしまい!
答え4
まず、2 番目のユーザーを localuser に追加します。
$ xhost SI:localuser:user2
localuser:player がアクセス制御リストに追加されました
アプリを実行します:
$ sudo -u user2 -H firefox