Visudo 没有给出错误,但会问“现在怎么办?”

Mat*_*ell 5 linux debian sudo debian-wheezy

我正在尝试使用sudo visudo -f /etc/sudoers.d/abe . 我添加了以下内容:

# Allow automatic update of abe
matt    ALL=(root) NOPASSWD: python /home/matt/token-abe/setup.py install --force
Run Code Online (Sandbox Code Playgroud)

但是当我尝试写作并退出时,我得到“现在怎么办?” 没有错误:

$ sudo visudo -f /etc/sudoers.d/abe
[sudo] password for matt: 
What now? e
What now? 
Run Code Online (Sandbox Code Playgroud)

我正在使用 Debian 7。

小智 12

您刚刚编辑的文件中存在错误,这就是 visudo 抱怨的原因。来自http://www.courtesan.com/sudo/man/1.7.10/visudo.man.html

visudo 会在编辑后解析 sudoers 文件,如果出现语法错误,则不会保存更改。发现错误后,visudo 将打印一条消息,说明发生错误的行号,用户将收到“现在怎么办?” 迅速的。此时用户可以输入“e”重新编辑sudoers文件,“x”退出而不保存更改,或“Q”退出并保存更改。'Q' 选项应该非常小心地使用,因为如果 visudo 认为存在解析错误,那么 sudo 也会如此,并且在错误修复之前没有人能够再次 sudo。如果在检测到解析错误后键入“e”来编辑 sudoers 文件,则光标将放置在发生错误的行上(如果编辑器支持此功能)。

关于您的错误,“python”命令不是缺少完整路径吗?我的意思是:

matt    ALL=(root) NOPASSWD: /usr/bin/python /home/matt/token-abe/setup.py install --force
Run Code Online (Sandbox Code Playgroud)

  • 确实,谢谢,它需要完整的路径。虽然 visudo 不应该给出解释错误的错误消息吗? (2认同)