不建议sudo与图形应用程序一起使用gedit,如本链接所述。因此,我倾向于使用vimwith sudo。
最近我注意到我~/.viminfo在一个相当新的Ubuntu 16.04 (Xenial Xerus)安装上被 root 所有,所以我想知道 Vim 是否被认为是图形化的,或者调用sudo vim. 通过以下方式将所有权更改为我自己后:
sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +
Run Code Online (Sandbox Code Playgroud)
随后运行sudo vim我无法~/.viminfo
拥有root。但是,我确信它最近由 root 拥有。
不建议调用sudo vim吗?
Ser*_*nyy 22
是的,这是安全的。
问题sudo gedit是因为 GUI 应用程序使用某些文件,例如~/.cache/dconf, 并且在提升后gedit该文件成为 root 拥有的。好吧,该特定文件包含 GUI 应用程序(包括桌面)的用户特定设置,因此如果系统无法读取这些设置 - 那就不好了。IIRC 用户无法启动特定桌面。用户最近的文件数据recently-used.xbel也会受到影响。
另一方面,Vim 没有这个问题。它不使用与 GUI 相关的数据库,也不将任何内容放入recently-used.xbel. 尽管 gVim 也存在,但它是为仅用于控制台的目的而创建的。事实上,在某些系统上,Vim 是您唯一的编辑器选择。因此,由于不会引起相同的问题,因此它比gedit更安全。在这两种情况下,您仍然以 root 用户身份进行编辑,因此您可能会因编辑不当而导致问题。
根据这篇博文:
第一次使用 vim 时,
~/.viminfo会创建该文件,如果您sudo vim在新系统上安装后第一次使用 vim,则其权限~/.viminfo会将所有者设置为 root 而不是默认用户。
虽然作者指出它可能会导致问题,但没有什么复杂的 - 只需chown将文件返回给您自己。
也可以看看:
GKF*_*KFX 15
也可以sudoedit用来实现这一点;它会在您的编辑器中打开该文件的临时副本,您的编辑器会像您一样运行。从手册页:
临时副本由要编辑的文件组成,所有者设置为调用用户。
运行策略指定的编辑器来编辑临时文件。sudoers 策略使用
SUDO_EDITOR,VISUAL和EDITOR环境变量(按此顺序)。如果没有的SUDO_EDITOR,VISUAL或EDITOR设定,在编辑器中列出的第一个程序sudoers(5)是使用选项。如果它们已被修改,则临时文件将复制回其原始位置并删除临时版本。
这适用于 vim(这是我通常所做的),我想它也可以让您使用 gedit。有一些安全限制。