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

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

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

答案1

最近的升级更改了 的默认设置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 的初始化中设置它。

答案2

根据这个线程,您的问题有两种可能的解决方案:

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

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

然后我也将 .Xauthority 复制到 root ,即

sudo cp ~/.Xauthority /root

现在警告消失了。

您也可以尝试通过 运行gksudo

无论如何,两个都值得一试……

答案3

尽管这个问题已经有一些答案,但没有一个对我完全有用。我通过结合上面的一些建议和我的 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

相关内容