sudo -e
和之间有主要区别吗sudo vim
?我已经设置了该sudoers
文件,以便 vim 成为我的默认编辑器。两者之间有关键区别吗?另外,我应该从 切换vim
到 吗rvim
?我尝试过,但我的配置文件有一些问题
答案1
最大的区别是WHO正在编辑什么文件。
(sudo vim
假设身份验证成功),root 用户调用 vim 并就地编辑文件(root 的环境和 vim 交换文件与正在编辑的文件并行)。
调用sudo 的用户sudo -e
或sudoedit
用户在自己的环境中编辑自己拥有的文件的临时副本(包括诸如〜/.vimrc)。用户保存输出后,临时文件的内容将被复制回用户无权编辑的原始文件中。此方法还有一些检查,可防止在某些情况下进行编辑:
- 用户正在尝试编辑符号链接
- 用户正在尝试使用包含符号链接的路径编辑文件
- 用户对包含该文件的目录具有写权限
我不知道为什么严格执行这些特定规则(我认为是某种安全问题)。
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 身份有效地执行他们想做的任何事情。