«Протокол не указан» при запуске vim с sudo

9

Недавно я начал получать «Протокол не указан» при использовании sudo vim. Думаю, это просто предупреждение, потому что все работало нормально (я могу открывать, редактировать и сохранять файлы). Сообщение не появляется, если я использую, sudo -E vimпоэтому я думаю, что я сделал что-то не так при редактировании в /etc/profileпоследнее время, но я не уверен. Как я могу это исправить?

phunehehe
источник
1
Не все работает нормально. Поддержка мыши не работает, ей нужен протокол, такой как gpm или протокол мыши xterm.
ниндзя

Ответы:

8

Недавнее обновление изменило настройки по умолчанию для sudo. Если у кого-то есть такая проблема, проверьте свою sudoerконфигурацию. Из примера в справочной странице:

# Run X applications through sudo; HOME is used to find the
# .Xauthority file.  Note that other programs use HOME to find
# configuration files and this may lead to privilege escalation!
Defaults env_keep += "DISPLAY HOME"

Убедитесь, что у вас есть что-то подобное /etc/sudoers(используйте visudoдля редактирования файла, если вам нужно).

РЕДАКТИРОВАТЬ: Я не знаю точно, с каких пор, но, по крайней мере, xauth 1.0.9 поддерживает переменную среды XAUTHORITY. Установка этого значения и оставление HOME нетронутым также исправляет предупреждение протокола и является лучшим решением, поскольку не создаются общедоступные ресурсы IPC (сокеты / каналы), указывающие на корневые ресурсы (один из способов повышения привилегий). xauth автоматически не экспортирует переменную в среду, поэтому лучший способ - установить ее при инициализации вашей оболочки.

phunehehe
источник
3

Согласно этой теме , есть два возможных решения вашей проблемы:

Поместите следующую строку в мой .bashrcскрипт пользователя root

export XAUTHORITY=/home/<user>/.Xauthority

затем я скопировал .Xauthority в root также, т.е.

sudo cp ~/.Xauthority /root

и теперь предупреждение ушло.

Вы также можете попробовать запустить через gksudo.

Во всяком случае, оба стоит попробовать ...

Джастин этир
источник
Я скопировал .Xauthorityв /rootи это все !
phunehehe
Нет, я ошибся, после перезагрузки я получил ошибку «неверный ключ».
phunehehe
1
Насколько я помню, содержимое файла .Xauthority меняется, поэтому вместо копирования нужно использовать символическую ссылку.
Адам Быртек
2

Хотя на этот вопрос уже есть несколько ответов, ни один из них не сработал для меня полностью. Я решил это с помощью комбинации нескольких приведенных выше предложений и нескольких своих фрагментов для моего дистрибутива Debian.

Я сделал символическую ссылку на .Xauthorityфайл для пользователя root и всех остальных пользователей. Проблема была решена для пользователя root, потому что root имеет права доступа к этому файлу, но не для других пользователей. Я добавил разрешение только для чтения для всех остальных пользователей для файла .Xauthority.

#do this for all other users who do not have .Xauthority file    
ln -s /home/userwithxauth/.Xauthority .Xauthority

#run the following command to give read only access permission to .Xauthority file
chmod 644 /home/userwithxauth/.Xauthority
Макнолти
источник