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

Pet*_*gru 8 vim sudo sudoedit

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

t0w*_*7ne 17

最大的区别在于在编辑什么文件。

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

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

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

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

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

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

  • @terdon https://unix.stackexchange.com/questions/356142/sudoedit-root-owned-file-in-a-non-root-directory 导致 https://bugzilla.sudo.ws/show_bug.cgi?id =707。 (4认同)
  • 3 应该颠倒吗?如果您没有该目录的写权限,大概您将无法进行编辑,对吗?如果你这样做的话就不行吗? (2认同)
  • #3 直接来自 sudo 的手册页,我在 CentOS 9 Stream VM 上验证了它。我不确定原因是什么。 (2认同)

Ste*_*itt 8

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

\n

基本上,使用sudo -eroot 身份完成一小组操作(进行大量检查以避免 root 转义),并且用户交互以实际编辑文件的所有操作都以用户身份运行。使用sudo vim,一切都以 root 身份进行,并且用户可以以 root 身份有效地执行他们想做的任何事情。

\n

另请参阅如何在 Gnu/Linux 的 GUI(和 CLI)中正确编辑系统文件(以 root 身份)?

\n