サーバーでsshを構成しましたが、グラフィカルアプリケーションを実行する必要がある場合があります。 -X
オプションで接続するとうまく機能します。私は例えば走ることができますgoogle-chrome
。ただし、Sudo -i -u other_user
でユーザーを変更すると、このユーザーとしてGUIアプリを実行できなくなります。
環境とディスプレイのあるものだと思いますが、どうしたらいいのかわかりません。 -E
を追加しようとしましたが、-i
では使用できないというエラーメッセージが表示されました。別のユーザーとしてssh経由でGUIアプリを実行するにはどうすればよいですか?
最も簡単な方法は、ssh -X
を使用して他のユーザーとしてコマンドを実行することです。ただし、これにより、ローカルでもアプリケーションの実行速度が著しく低下します。
-i
オプションは、Sudo
に環境を再初期化するように指示します。 Xアプリケーションには$DISPLAY
および(一部のセットアップでは)$XAUTHORITY
が必要であり、ロケール設定などの他の環境変数を使用する場合があります。 -i
なしで試すか、-i
を使用する必要がある場合は、
Sudo -i -u other_user \
env DISPLAY="$DISPLAY" XAUTHORITY="${XAUTHORITY-$HOME/.Xauthority}" \
xapplication
-i
を削除した場合でも、XAUTHORITY
を明示的に指定する必要がある場合があります。デフォルトでは(変数が設定されていない場合)、ホームディレクトリの.Xauthority
です。
これまでのところ、他のユーザーがあなたの$XAUTHORITY
を読み取ることができると想定してきました。ただし、そうしない限り、そうではありません(たとえば、setfacl -m user:other_user:r $XAUTHORITY
を使用)。
または、他のユーザーに$XAUTHORITY
を読み取らせるのではなく、ユーザーが読み取れる別のファイルに適切なCookieをコピーすることもできます。
xauth extract -f - "$DISPLAY" |
Sudo -u other_user xauth -f ~other_user/.Xauthority merge -
別のユーザーにディスプレイへのアクセスを許可すると、偽のキー押下をアプリケーションに送信するなど、ほとんどすべてのことが可能になることに注意してください。したがって、分離のためにユーザーを変更する場合、多くは得られません。