我只是想执行命令日期无需输入密码,因此我通过 Emacs 编辑器编辑了 sudoers 文件。我只是在文件末尾添加了一行代码
Boris Boris-MacBook-Air.local = (root) NOPASSWD: /usr/sbin/ntpdate
我有两台 Macbook。一款是 2011 年型号,配备 EL Capitan 操作系统和 sudo 版本 1.7.10p9。另一个是 2017 年型号,配备 High Sierra 操作系统和 sudo 版本 1.8.17p1。我在两台电脑上都做了同样的事情。它适用于 2011 年 Macbook,但对于 2017 年 Macbook,编辑后,当我调用 $sudo 时,它会打印出一条错误消息。
/etc/sudoers: 第 63 行附近的语法错误
sudo:在 /etc/sudoers 第 63 行附近解析错误
sudo:找不到有效的 sudoers 源,正在退出
sudo:无法启动策略插件
这是第 60-62 行
# Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d
我无法理解为什么它不能在新笔记本电脑上运行
答案1
sudoers
以下是我的 Mac 上该文件的序言。 (我不认为它的措辞在过去十五年里发生过变化。)
该文件必须以 root 身份使用“visudo”命令进行编辑。未能使用“visudo”可能会导致语法或文件权限错误,从而阻止 sudo 运行。
有关如何编写 sudoers 文件的详细信息,请参阅 sudoers 手册页。
这是以下的一个片段visudo man page
:
编辑完成后,维苏多解析苏多尔斯文件。如果存在语法错误,它不会保存更改。
发现错误后,维苏多将打印一条消息,说明发生错误的行号,并且用户将收到“现在怎么办?”迅速的。此时,用户可以输入e重新编辑 sudoers 文件,X退出而不保存更改,或者问退出并保存更改。
这问应极其小心地使用选项,因为如果维苏多认为存在解析错误,因此将须藤, 和没有人将能够再次 sudo 直到错误得到修复。如果e键入以编辑苏多尔斯检测到解析错误后,光标将放置在发生错误的行上。
。 。 。这就是我实际上使用 visudo
而不是说,nano
。如果出现问题,visudo
在我提交之前会警告我并指导我解决问题,不仅锁定我自己,还锁定我自己大家退出 root 访问权限。 (就像我十五年前所做的那样,我不会承认这一点。)无论如何,由于$sudo
抱怨不存在的行号上的语法错误,我敢打赌这是一个杂散的 EOF 字符或类似的打字错误导致了问题。