использование Sudo wth Gedit не выполняется с сервера XForwarded

Сервер Centos и хост-машина ubuntu имеют установленный gedit. Корневой вход на сервер заблокирован, и только пользователь может войти через SSH через ключи rsa.

Когда я вхожу на сервер с параметром -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 в такой ситуации.

  • Как клиенты X знают, что им нужно будет подключиться к TCP-порту 6000+ <номер дисплея>?
  • X пересылка с Mac на Linux не выполняется
  • SSH & ForwardX11 против ForwardX11Trusted -> за пределами моего понимания
  • Более эффективная X-пересылка?
  • XForwarding не загружает правильные $ PATH
  • SSH через PuTTY: запуск gnome-session и gnome-panel в одном окне
  • Как ограничить скорость соединения для IP-адресов «X-Forwarded-for»?
  • SSH - Как сделать приложения X на клиенте?
  • 2 Solutions collect form web for “использование Sudo wth Gedit не выполняется с сервера XForwarded”

    sudoedit этого вы можете использовать команду sudoedit .

     EDITOR=gedit sudoedit filename.txt 

    то, что это делает, берет копию файла, затем запускает редактор как вы, а затем, если он обнаруживает, что файл изменил, скопируйте результаты назад.

    В большинстве случаев тот же эффект, что и sudo gedit filename.txt но он запускает редактор непривилегированным, и поэтому ваша X-пересылка должна работать.

    Просто для объяснения, когда вы запускаете sudo он сбрасывает множество переменных среды, включая $HOME который сбрасывается в HOME HOME (возможно, /root ). Когда вы запускаете свою программу X11, ей нужен волшебный cookie XAUTHORITY, позволяющий ей подключаться к DISPLAY. Соответствующий файл cookie будет помещен ssh -X в ~/.Xauthority на удаленный компьютер при подключении.

    Но после sudo ваша программа X11 будет выглядеть в /root/.Xauthority и, следовательно, не получит cookie или старый, устаревший, cookie.

    Следовательно, вы видите неправильные сообщения аутентификации . Существует несколько решений по сохранению или восстановлению $HOME после sudo, но для вашего конкретного случая sudoedit использовать sudoedit как и в другом ответе.

    Linux и Unix - лучшая ОС в мире.