sudo visudo命令慎用 pkexec vi /etc/sudoers
由于定时任务需要sudo命令,但又需要密码
0 0 * * * echo "your_password" | sudo -S docker exec -i php php /www/scrm_4/artisan TaskLibrary:run
所以执行了sudo visudo命令,然后添加了这一行:
your_username ALL=(ALL) NOPASSWD: /usr/bin/docker exec -i php php /www/scrm_4/artisan TaskLibrary:run
结果导致sudo出问题,不能使用了,报错如下:
sudo vi TaskLibrary.log
>>> /etc/sudoers: syntax error near line 110 <<<
sudo: parse error in /etc/sudoers near line 110
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
当你看到 /etc/sudoers: syntax error near line 110 这个消息时,意味着你的 sudoers 文件存在语法错误,需要进行修复。以下是你可以采取的步骤:
选择选项 (e) 再次编辑 sudoers 文件。
转到第 110 行,仔细查看语法,找到并纠正错误。
进行必要的更改以修复语法错误。
在进行更改后,保存文件并退出编辑器。
如果你对语法或如何修复错误感到不确定,可以在这里分享 sudoers 文件的相关部分(大约在第 110 行附近),我可以帮助你识别和纠正问题。另外,你可以查阅 sudoers 手册(man sudoers)以获取有关正确语法的指导。
记得在编辑 sudoers 文件时要小心,因为不正确的更改可能导致 sudo 访问丧失。在进行更改后,最好通过运行一个无害的命令(例如 sudo ls)来测试 sudo,以确保一切按预期工作。如果出现问题,你可以使用恢复模式来修复 sudoers 文件。
解决方案:
切换到root账号:
su root
再打开:pkexec vi /etc/sudoers
找到刚才报错的那一行,删除之。成功。