使用sudo运行vim时“未指定协议”


9

最近,我开始使用时收到“未指定协议” sudo vim。我猜这只是一个警告,因为一切都正常工作(我可以打开,编辑和保存文件)。如果我使用该消息,则不会出现该消息,sudo -E vim因此我认为/etc/profile最近编辑时做错了什么,但不确定。我怎样才能解决这个问题?


1
并非一切都正常工作。鼠标支持不起作用,它需要一个协议,例如gpm或xterm鼠标协议。
ninjalj 2011年

Answers:


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/sudoersvisudo如果需要,可使用来编辑文件)。

编辑:我不知道确切的时间,但是至少xauth 1.0.9支持环境变量XAUTHORITY。进行设置并保持HOME不变,还可以解决协议警告,并且是更好的解决方案,因为不会创建指向根资源的世界可写IPC资源(套接字/管道)(特权升级的一种途径)。xauth不会自动将变量导出到环境,因此最好的方法是在shell的初始化中进行设置。


3

根据此线程,有两种可能的解决方案:

将以下行放入我的root用户.bashrc脚本中

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

然后我也复制了.Xauthority到根,即

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.