sudo -e 和 sudo vim 之间的区别?

sudo -e 和 sudo vim 之间的区别?

sudo -e和之间有主要区别吗sudo vim?我已经设置了该sudoers文件,以便 vim 成为我的默认编辑器。两者之间有关键区别吗?另外,我应该从 切换vim到 吗rvim?我尝试过,但我的配置文件有一些问题

答案1

最大的区别是WHO正在编辑什么文件。

sudo vim假设身份验证成功),root 用户调用 vim 并就地编辑文件(root 的环境和 vim 交换文件与正在编辑的文件并行)。

调用sudo 的用户sudo -esudoedit用户在自己的环境中编辑自己拥有的文件的临时副本(包括诸如〜/.vimrc)。用户保存输出后,临时文件的内容将被复制回用户无权编辑的原始文件中。此方法还有一些检查,可防止在某些情况下进行编辑:

  1. 用户正在尝试编辑符号链接
  2. 用户正在尝试使用包含符号链接的路径编辑文件
  3. 用户对包含该文件的目录具有写权限

我不知道为什么严格执行这些特定规则(我认为是某种安全问题)。

PS 用户也不允许使用 sudo 的编辑模式来编辑设备特殊文件(块设备、串行设备等)。

编辑:不以 root 身份运行 vim 的另一个后果是,用户无法以这种方式使用 vim 的 shell 功能以 root 身份运行任意命令。这允许用户通过 sudoers 规则来编辑某些文件,同时不将密钥移交给王国。

答案2

有一个关键区别:使用 时sudo -e,编辑器以您的用户身份运行,而不是以 root 身份运行;使用sudo vim,编辑器以 root 身份运行。这会产生许多后果;其中之一是,使用sudo -e,您将获得自己的编辑器设置;另一个是,使用sudo -e,您不会冒险对 root 拥有的文件进行其他更改。sudo -e还可以防止用户以 root 身份运行其他任何内容(因为大多数编辑器都可以启动 shell)。

基本上,使用 时sudo -e,您可以以 root 身份完成一小组操作(通过多项检查来避免 root 逃逸),并且用户交互以实际编辑文件的所有内容都以用户身份运行。使用sudo vim,一切都以 root 身份进行,并且用户可以以 root 身份有效地执行他们想做的任何事情。

也可以看看如何在 Gnu/Linux 的 GUI(和 CLI)中正确编辑系统文件(以 root 身份)?

相关内容