最近,我在使用时开始收到“未指定协议”的消息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/sudoers
(visudo
如果需要,可用于编辑文件)。
编辑:我不知道从什么时候开始,但至少 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