据我所知,主要的区别在于 visudo 有一个简单的解析器,用于查看 /etc/sudoers(和其他 sudoers 文件)是否正常;但是,我还注意到,当我设置 时EDITOR=emacs
,sudoedit 会遵守更改,而 visudo 则不会。据我所知,这是因为 Visudo 不会遵守$EDITOR
值,除非它们在 sudoers 中列出。我想知道的是,我是否可以让 sudoedit 做同样的事情,不允许类似 的事情EDITOR=deleverything.sh
。
我注意到的另一件事似乎与此相关,即作为 root(在以用户 jef 身份执行 su 后)(使用export EDITOR=emacs
/home/anachrome/.bashrc 中的行),visudo 和 sudoedit 都使用 emacs 作为编辑器,但当未以 root 身份执行 su 时,只有 sudoedit 使用它。我很好奇这是为什么(我推测这与 sudo 在以您自己的身份执行 sudo 时不重置环境变量有关(例如root $ sudo -u root
),但这只是我的假设)。
编辑:第二个问题只是因为$EDITOR
它不是 sudo 保留的变量之一。
顺便说一句,我正在使用 Arch Linux,如果相关的话。
答案1
对我来说,在 Arch 上,既不visudo
是sudoedit
荣誉$EDITOR
,也不是他们做两者都是荣誉$VISUAL
,所以也许值得一试。
答案2
还要检查所需的编辑器是否确实已安装。指定EDITOR=vim
所有已安装的编辑器vi.tiny
不会带来太多乐趣。