私は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
これが私がこれを行った方法です。
- 既存のXセッションを持つユーザーとしてx端末を開きます。
- 注文を発行します
xauth list
。 Xサーバーのさまざまな記述子に対する要求を認証するために使用されるX Magic Cookieの値を表示する必要があります。 「unix」参照のあるものをコピーしてください。例えばmyhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- 最初のユーザーとして2番目の端末を開き、ユーザー(su)を希望のIDに切り替えます。
su - user2
- これでユーザーが切り替えられたので、コマンドを実行し、前に手順
xauth add
2でコピーした行を貼り付けて、Enterキーを押します。xauth add myhost/unix: MIT-MAGIC_COOKIE-1 df8923ae98098fb890c63454c7c
- コマンドラインから2番目の端末のXプログラムを起動します。たとえば、次のようになります。
firefox
それだけです!
答え4
まず、2番目のユーザーをlocaluserに追加します。
$ xhost SI:localuser:user2
localuser:プレイヤーがアクセス制御リストに追加されました。
アプリケーションを実行するよりも:
$ sudo -u user2 -H firefox