不建议sudo
与图形应用程序一起使用gedit
,如所述在这个链接。因此,我倾向于vim
使用sudo
。
最近我注意到我的~/.viminfo
是 root 用户在刚刚安装的Ubuntu 16.04(Xenial Xerus),所以我想知道 Vim 是否也被认为是图形化的,或者调用时是否存在其他问题sudo vim
。通过以下方式将所有权更改为我自己后:
sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +
随后运行,sudo vim
我无法将~/.viminfo
其归 root 所有。但是,我确信它最近归 root 所有。
是否不建议调用sudo vim
?
答案1
是的,很安全。
的问题在于sudo gedit
,GUI 应用程序使用某些文件,例如~/.cache/dconf
,提升权限后,gedit
该文件将归 root 所有。好吧,该特定文件包含 GUI 应用程序(包括桌面)的用户特定设置,因此如果系统无法读取这些设置 - 那就糟糕了。如果我没记错的话,用户无法启动特定桌面。用户的最近文件数据recently-used.xbel
也会受到影响。
另一方面,Vim 没有这个问题。它不使用与 GUI 相关的数据库,也不会将任何东西放入recently-used.xbel
。它是为控制台专用而创建的,尽管 gVim 也存在。事实上,在某些系统上,Vim 是你唯一的编辑器选择。所以它比编辑因为不会引起同样的问题。在这两种情况下,您仍以 root 身份进行编辑,因此,不正确的编辑可能会导致问题。
根据这篇博文:
第一次使用 vim 时,
~/.viminfo
会创建该文件,如果您sudo vim
在全新系统上安装 vim 后第一次使用 vim,则其权限~/.viminfo
将把所有者设置为 root 而不是默认用户。
虽然作者指出这可能会导致问题,但这并不复杂 - 只需chown
将文件返回给您自己。
也可以看看:
答案2
也可以使用来sudoedit
实现这一点;它会在编辑器中打开该文件的临时副本,编辑器将以您的身份运行。从手册页:
对要编辑的文件制作临时副本,并将所有者设置为调用用户。
运行策略指定的编辑器来编辑临时文件。 sudoers 策略使用
SUDO_EDITOR
、VISUAL
和EDITOR
环境变量(按此顺序)。如果没有设置SUDO_EDITOR
、VISUAL
或EDITOR
,则编辑器中列出的第一个程序sudoers(5)
选项被使用。如果它们已被修改,则将临时文件复制回其原始位置并删除临时版本。
这在 vim 上工作得很好(我通常就是这么做的),我想它也会让你使用 gedit。一些安全限制。
答案3
该链接非常老旧(2013 年)。它建议对图形应用程序使用gksudo
或,gksu
但这两种方法都已过时。后来被接受的答案也建议使用sudo -H
。
普遍的共识是询问 Ubuntu社区最近使用的是:
sudo -H gedit /path/to/filename
唯一的问题是sudo
没有标签设置、扩展、自动换行、字体名称、字体大小等的配置文件。您可以使用如下包装器脚本从用户配置文件中继承这些内容:我如何将我的根 gedit 与我的用户 gedit 的偏好设置同步?
答案4
以 root 身份使用 vi 是没问题的。有时你需要编辑需要 sudo 或 root 权限的文件,例如更改网络接口文件,或者编辑 sshd 配置文件。使用 root 进行图形操作是不好的,因为人们会以 root 身份连接到 IRC 或浏览网页。如果他们在这样做时感染了病毒,它将具有完全的 root 访问权限。