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

phu*_*ehe 9 vim sudo environment-variables

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

phu*_*ehe 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"
Run Code Online (Sandbox Code Playgroud)

确保您有类似的内容/etc/sudoersvisudo如果需要,可用于编辑文件)。

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