他のユーザーと同じ画面にある2つのGUIアプリケーション

他のユーザーと同じ画面にある2つのGUIアプリケーション

私はuserAでログインしました。ユーザーBでGUIアプリケーションを実行したいです。ルートではないユーザーです。ユーザー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マシンに接続されている複数のユーザーが異なる物理端末を使用できるようにします。

答え2

必要なユーザー名と一緒にgksu -uを使用してパスワードを入力します。

DISPLAY=:1.0 gksu [-u <user>] [options] <command>

あるいは、suを使用してXDISPLAYを正しい画面に設定し、最後に目的のアプリケーションを起動することもできます。

答え3

これが私がこれを行った方法です。

  1. 既存のXセッションを持つユーザーとしてx端末を開きます。
  2. 注文を発行しますxauth list。 Xサーバーのさまざまな記述子に対する要求を認証するために使用されるX Magic Cookieの値を表示する必要があります。 「unix」参照のあるものをコピーしてください。例えば myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  3. 最初のユーザーとして2番目の端末を開き、ユーザー(su)を希望のIDに切り替えます。su - user2
  4. これでユーザーが切り替えられたので、コマンドを実行し、前に手順xauth add2でコピーした行を貼り付けて、Enterキーを押します。 xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
  5. コマンドラインから2番目の端末のXプログラムを起動します。たとえば、次のようになります。firefox

それだけです!

答え4

まず、2番目のユーザーをlocaluserに追加します。

$ xhost SI:localuser:user2

localuser:プレイヤーがアクセス制御リストに追加されました。

アプリケーションを実行するよりも:

$ sudo -u user2 -H firefox

関連情報