Linux ホストに SSH 接続を入力すると、XAUTHORITY 環境変数は設定されません。を実行すると、すぐにコマンドを追加しsudo -b
ないと接続が切断されますnohup
。この場合、ジョブは失敗して報告されます。X11 connection rejected because of wrong authentication.
回避策として値を手動で$HOME/.Xauthority
。
この変数は通常自動的に設定されます。変数を希望の方法(適切な時間に正しいプロセスを介して)に設定するにはどうすればよいですか?
答え1
Xauthorityファイルがある場合、環境変数はデフォルトパスであるため$HOME/.Xauthority
必要ありません。 X11ライブラリは自動的にこれを確認する必要があります。XAUTHORITY
$HOME/.Xauthority
その後、sudo
X11を使用してルートに切り替えると、X11セッションを維持してアクセスがより困難になります。これは、環境変数を維持し、ルートがどこからでもXauthorityを読み取ることができるというsudo
問題ではないからです。ある時点で、XAUTHORITY値を次に設定する必要があります。 Xauthority ファイルの実際の場所を識別します。必要なプロセスが始まる前に設定するだけで、設定方法は重要ではありません。DISPLAY
XAUTHORITY
変数が保持されるように設定されている場合は、sudo
以前の元のユーザーアカウントなど、ログインスクリプトで次のように明示的に設定することでXAUTHORITY
この問題を解決できます(設定されている場合)。XAUTHORITY
sudo
DISPLAY
if [ "$DISPLAY" != "" ] && [ "$XAUTHORITY" = "" ]; then
export XAUTHORITY=$HOME/.Xauthority
fi
sudo
または、保存されていないXAUTHORITY
場合、または設定が維持されたくない場合は、次のコードsudo
を内部に配置することもできます/etc/bash.bashrc
( ~/.bashrc
またはコマンドで実行されるシェルで実行されるスクリプトsudo
)。
if [ "$SUDO_USER" != "" ] && [ "$DISPLAY" != "" ]; then
export XAUTHORITY=$(getent passwd "${SUDO_USER}" | cut -d : -f 6)/.Xauthority
fi