XForwarded 서버에서 Sudo 및 Gedit 사용이 실패합니다.

XForwarded 서버에서 Sudo 및 Gedit 사용이 실패합니다.

centos 서버와 우분투 호스트 모두 gedit가 설치되어 있습니다. 서버에 대한 루트 로그인은 차단되며 사용자만 rsa 키를 통해 SSH를 통해 로그인할 수 있습니다.

서버에 로그인할 때-엑스매개변수로 제공되면 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을 루트로 재설정하는 것을 sudo포함하여 많은 환경 변수가 재설정됩니다 ( 아마도). X11 프로그램을 실행할 때 DISPLAY에 연결하려면 XAUTHORITY 매직 쿠키가 필요합니다. 연결하면 적절한 쿠키가 리모컨 에 저장됩니다.$HOME/rootssh -X~/.Xauthority

그러나 sudo 이후에는 X11 프로그램이 /root/.Xauthority쿠키를 얻지 못하거나 오래되고 오래된 쿠키가 될 것입니다.

그러므로잘못된 인증당신이 보는 메시지. sudo 이후에 보존하거나 복구하는 방법에는 여러 가지가 있지만, 특정 경우에 가장 현명한 방법은 $HOME다른 답변처럼 사용하는 것입니다.sudoedit

관련 정보