VIM:“sudo vim bad_idea”?

Léo*_* 준영 20 sudo vim

#Vim 中的 irc 用户敦促我不要将 Sudo 与 Vim 一起使用,例如:

sudo vim bad_idea
Run Code Online (Sandbox Code Playgroud)

当我在 /var/www/ 等位置做事时,没有它我无法写作。所以不使用 sudo 成为一个问题。当然,我可以在不同的位置进行更改,例如 /tmp/,然后将目录复制到 /var/www。不过,我觉得有一种更简单的方法。

  1. 如果你不“sudo Vim”,为什么?
  2. 如果第一个问题是肯定的,你如何规避不使用 sudo 的问题?

Kev*_*n M 38

我属于第一类:sudo vim /var/www/html/some_file是个坏主意;它允许未记录的 shell 转义。相反,使用sudoedit /var/www/html/some_file; 具有相同的效果。

  • 好的,所以它本身不是别名,但它具有相同的效果: 'function sudo () { [[ $1 == vi ]] && shift && sudoedit "$@" || 命令 sudo "$@"; }' (9认同)
  • vim 有能力在命令行上运行其他命令。但是,因为 vim 是通过 sudo 启动的,因此以 root 身份运行,任何这些命令都将以 root 权限运行。这些命令被称为“shell 转义”并且不会像 sudo 的其他调用那样被记录。它不仅限于 /var/www;它无处不在,我会使用它。我什至在我的 bashrc 文件中将“sudo vi”别名为“sudoedit”。 (7认同)
  • 什么是“未记录的 shell 转义”?为什么不仅在 /var/www 中重要? (5认同)
  • 凯文,你是如何设法将“sudo vi”别名为“sudoedit”的?来自 bash 手册...“字符 /、$、` 和 = 以及上面列出的任何 shell 元字符或引用字符可能不会出现在别名中。” ...space 是它所谈论的元字符之一。 (3认同)

hyp*_*lug 10

参考:https : //stackoverflow.com/questions/1005/getting-root-permissions-on-a-file-inside-of-vi

% 替换为当前文件名,因此您可以使用:

:w !sudo tee %


Ric*_*ins 7

vim 允许用户执行任意 shell 命令,因此许多系统管理员不允许 vim 与 sudo 一起使用。

rvim 包含在 vim 中。它是一个受限制的 vim,不允许 shell 命令。(或者允许你暂停 vim,出于同样的原因。)

您是否需要在自己的盒子上走极端是有争议的。

  • 实际上,如果您可以 sudo vim,您可能可以使用 `sudo bash` 或 `sudo su -` 对吗? (3认同)

bal*_*pha 6

在编辑系统范围的配置文件时,这完全没问题——只要记住你是 root 用户,因此拥有所有权力,一旦你不再需要它们,就放弃这些特权。

在特殊情况下/var/www/,即 Web 服务器页面,您可能需要考虑更改某些所有权/组/权限---但是是否以及如何很大程度上取决于您的特定设置(单/多用户、真实的 Web 服务器/仅本地主机、动态/ 静态等)

  • +1确实 - 这是处理网络服务器页面的最佳方式。确保您可以访问它们,而不是提升您的权限。 (6认同)