![使用 visudo 设置 sudo.conf askpass 变量时出现“语法错误”](https://linux22.com/image/1433589/%E4%BD%BF%E7%94%A8%20visudo%20%E8%AE%BE%E7%BD%AE%20sudo.conf%20askpass%20%E5%8F%98%E9%87%8F%E6%97%B6%E5%87%BA%E7%8E%B0%E2%80%9C%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF%E2%80%9D.png)
我想为 sudo 设置 askpass 程序,我已创建/etc/sudoers.d/path-askpass
包含以下内容的文件:
# Path to askpass program
Path askpass /usr/bin/ssh-askpass
文件是用 编辑的visudo
,它抱怨第 3 行的语法错误,而我没有在那里看到任何语法错误。
sudo 版本:
~$LANG=C sudo -V
Sudo version 1.8.10p3
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43
Sudoers I/O plugin version 1.8.10p3
答案1
你忘了=
。试试这个方法:
Path askpass = /usr/bin/ssh-askpass
答案2
现在是 2022 年了,对于读到应该添加“=”的人,您可以尝试不添加它,并忽略错误消息。但也许可以用一种安全的方式做到这一点:
- 在另一个终端中,
sudo su
拥有 root 访问权限,以便在出现任何问题时可以恢复。 - 在 visudo 中,保存没有=,点击“Q”忽略警告并保存文件。
- 从非root终端尝试
sudo -A systemctl status sshd
或类似操作。
如果您请求的 askpass 可执行文件有效,那就太好了……您就大功告成了。否则,也许可以尝试 = 方法,或者找出您的 askpass 路径是否错误,或者您认为适合解决问题的任何方法。
对我来说,忽略警告是有效的。visudo 中似乎有一个错误,导致此行无法正确显示,至少在我的环境中如此。
如果更改后 sudo 无法再启动,请使用步骤 1 中建立的根会话来恢复文件。