Unix 和 shell 脚本新手,更新了 visudo
username ALL=(ALL) NOPASSWDMDS : /path/name
现在无法编辑 sudo、visudo 或使用任何 sudo 命令。
我怎样才能恢复到以前的状态?
当我尝试时
visudo
visudo: /etc/sudoers: Permission denied
visudo: /etc/sudoers: Permission denied
当我尝试时
sudo
sudo: >>> /etc/sudoers: syntax error near line 62 <<<
sudo: parse error in /etc/sudoers near line 62
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
答案1
首先,直接回答你的问题,@Tablemaker 和 @guillermochamorro 走在正确的轨道上。一些可能的选项是:
- 如果您为 root 启用了基于密钥的登录,则通过特权 ssh 密钥登录
- 通过管理员帐户登录并使用
su
命令成为 root(如果您知道当前的 root 密码) - 让其他人执行上述操作之一(如果他们有密钥或密码,但您没有)
- 如果您在托管环境中,您(或其他人)可能有一些方法将 root 密码重置为已知密码,因此您可以按照
su
上述路线进行操作
对于未来可能物理访问计算机的读者来说,还可以从 Live CD 或 USB 记忆棒启动(甚至 PXE 启动,如果您碰巧有可用的基础设施),并修复您的 sudoers 文件。
希望预防胜于治疗,我想为未来可能会做您刚才所做的事情的读者提供这篇说明。 :)
您可能有机会避免完全这个问题,但是忽略了它。
visudo
保存文件后检查文件语法的一些实现sudoers
,并提醒您检测到的问题:
$ sudo visudo
(edit file to add the line given in your example, then type ZZ to save & exit)
/usr/local/etc/sudoers.tmp: 36 lines, 773 characters
>>> /usr/local/etc/sudoers: syntax error near line 36 <<<
What now?
在这里我们看到它visudo
检测到您的sudoers
文件中存在问题,并询问您如何处理这些问题。按Enter给出可用选项的简要概述:
Options are:
(e)dit sudoers file again
e(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
What now?
显然,e将返回到编辑器以更正文件中的错误。如果保存后,语法警告再次出现,x建议选择保留 sudoers 文件不变,同时研究更改所需的正确语法。
这Q选项是非常不可取的(因此危险!警告),并导致您现在遇到的情况:sudo
安装无法正常工作。