centosサーバーとUbuntuホストの両方にgeditがインストールされています。サーバーへのルートログインはブロックされ、ユーザーだけがrsaキーを介してSSHを介してログインできます。
サーバーにログインするとき- Xパラメータとして提供されたら、geditを使用できます。たとえば、
gedit filename.txt &
ファイルは編集して保存できるように gedit で開きます。しかし、ファイルを編集するためにsudoを実行すると、次のエラーが発生します。
sudo gedit filename.txt &
[1] 11039
[user@server ~]$ X11 connection rejected because of wrong authentication.
** (gedit:11040): WARNING **: Could not open X display
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
(gedit:11040): Gtk-WARNING **: cannot open display: localhost:10.0
[1]+ Exit 1 sudo gedit filename.txt
この状況でGeditをどのように使用できますか?
答え1
代わりにこのコマンドを使用できますsudoedit
。
EDITOR=gedit sudoedit filename.txt
それがするのは、ファイルのコピーを取得し、あなたがしたようにエディタを実行し、ファイルが変更されたことを検出したら結果を再コピーすることです。
ほとんどの場合、同じ効果はありますが、sudo gedit filename.txt
権限のない方法でエディタを実行するため、X転送は引き続き機能します。
答え2
説明を提供するために実行すると、HOMEをrootにリセットするなど、sudo
多くの環境変数がリセットされます(おそらく)。 X11プログラムの実行時にDISPLAYに接続するには、XAUTHORITYマジッククッキーが必要です。接続すると、適切なクッキーがリモコンに保存されます。$HOME
/root
ssh -X
~/.Xauthority
しかし、sudoの後、X11プログラムは/root/.Xauthority
Cookieを取得できないか、古い、古いCookieになるでしょう。
だから無効な認証あなたが見るメッセージ。 sudoの後に保存または回復する方法はいくつかありますが、特定のケースで最も賢明な方法は、他の答えのように使用すること$HOME
です。sudoedit