私は次のようなことをしようとしています。
$ sudo -u myuser DISPLAY=:1 xterm
ただし、次のエラーが発生します。
Client is not authorized to connect to Server
一方、私はこれを行うことができます:
$ sudo -u -i myuser
$ DISPLAY=:1 xterm
XサーバーがX11ベースのアプリケーションを別のユーザーとして直接実行することを許可していないのはなぜですか、それを明示的に許可する方法はありますか?
答え1
他のユーザーがあなたのXサーバーに接続することを許可するということは、その人があなたの画面を見ることができ、あなたが入力したもの(パスワードなど)を見ることができ、あなたのアプリケーションを終了できることを意味します(あなたのアプリケーションへの接続を終了すると、あなたはログアウトします。
他のユーザーがXサーバーにアクセスできるようにするには、そのユーザーにサーバーアクセスコードを提供できます(出力を参照するか、xauth list "$DISPLAY"
他のユーザーがローカルの場合は次のように実行します)。xhost +si:localuser:myuser
答え2
myuserのパスワード、またはmyuserの~/.ssh/authorized_keysにキーがあり、システムがそのxhost +si:localuser
構文をサポートしていない場合は試してみてください。ssh -X myuser@localhost xterm
-X
このSSH接続を介したX転送を有効にし、新しい接続を作成します。仮想他のユーザーのみがアクセスできるXサーバーは、システム内のすべてのユーザーが実行しているプロセスに要求を開かずにXサーバーに要求を転送します。これは通常、xhost
緊急の要件を満たすか、怠惰またはICBFRTFMによって引き起こされますxhost +localhost
。
この方法は、ユーザーがリモートシステムにいるときにも機能し、その可能性を最大限に発揮します。
配信に関連するわずかなオーバーヘッドがあります。-o Ciphers=arcfour
そのオプションをsshに追加すると、パフォーマンスが向上する可能性があります。
(しかし、私はこの接続を介して自宅のLAN上の他のコンピュータでSecond Lifeクライアントなどの3Dプログラムを実行しましたssh -X
。うまくいきませんが、テスト目的には十分に機能します。)