VIM:“sudo vim bad_idea”?

VIM:“sudo vim bad_idea”?

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

sudo vim bad_idea

当我在 /var/www/ 等位置执行操作时,如果没有 sudo,我将无法写入。因此不使用 sudo 会成为一个问题。当然,我可以在 /tmp/ 等不同位置进行更改,然后将目录复制到 /var/www。但是,我觉得还有一种更简单的方法。

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

答案1

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

答案2

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

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

:w !须藤 tee %

答案3

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

rvim 包含在 vim 中。它是一个受限制的 vim,不允许使用 shell 命令。(或者允许您暂停 vim,原因相同。)

是否需要在自己的盒子上采取这些极端措施仍值得商榷。

答案4

这个问题让我拍拍脑门。我站在安全的另一边,“安全不应该干扰用户体验,除非是为了防止普通人进行恶意活动而预期或要求的安全。”

阻止使用 sudo 的 vim 只是一个权宜之计。如前所述,有人可以使用:

sudo su -

或者

sudo /bin/bash

或者

sudo nano file

或者

sudo my_exectuable_text_editor file

如果你真的担心有人在机器上做坏事,就不要给他们 sudo(或 root 密码)权限,就这样。没有办法阻止使用 sudo 进行恶意活动,你只会通过“应用”所有“修复”来确保某人不能做任何恶意的事情而让自己发疯。

有人提到更改所有权/组。这是一个棘手的问题,因为如果 Web 服务器以另一个用户身份运行,并且您更改了文件的权限,那么您的网站就会突然无法正常工作。好吧,这显然对您没有帮助。您可以将自己添加到 Web 服务器运行的组中,但是,如果该组没有文件的写权限,则需要执行 chmod -R g+w *(或 chmod 单个文件),这可能不是您想要的,如果您必须对每个文件进行 chmod,那么这可能会很麻烦。

有些人甚至建议使用 rvim。当然,只需在 /etc/sudoers 中添加一行,只允许某些用户使用 sudo rvim,但是,从逻辑上讲,如果必须采用这种方式,最好实现基于 Web 的文件管理器。这样,它就可以以 Web 服务器所用的用户身份运行,因此不存在文件权限问题,并且您仍然可以精细地控制谁可以编辑哪些文件。

无论如何,这是我的看法。

相关内容