X11:sudoを呼び出すときにクライアントが認証されていません。

X11:sudoを呼び出すときにクライアントが認証されていません。

重複の可能性:
他のユーザーのデスクトップからrootとしてグラフィカルプログラムを起動できますか?

私は次のようなことをしようとしています。

$ 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。うまくいきませんが、テスト目的には十分に機能します。)

関連情報