回显到 /etc/sudoers 导致解析错误

回显到 /etc/sudoers 导致解析错误

使用织物如果我第二次回显 sudoers 文件,则文件损坏,第一次回显时运行正常。可能是什么原因?

第一个回声:

sudo('echo "django    ALL=(ALL:ALL) ALL" | sudo tee -a /etc/sudoers')

第二次回声:

sudo('echo "celery    ALL(www-data) NOPASSWD: /usr/bin/unoconv" | sudo tee -a /etc/sudoers')

在第二次 echo 命令之后,当我尝试执行 sudo 时,出现了解析错误,并且无法再次恢复 sudoers 文件,遗憾的是我必须创建一个新实例:

>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting

第二条命令不存在语法问题,因为如果我手动输入它,visudo它就可以正常工作。我不认为这是与 Fabric 相关的问题。Fabric 只是在远程服务器上执行命令。

答案1

正如所发布的,第二个回声中的行是错误的;我尝试手动添加

django ALL=(ALL:ALL) ALL 
celery ALL(www-data) NOPASSWD: /usr/bin/unoconv 

使用 visudo 添加到我的 sudoers 中,我也遇到了语法错误。您需要在第二行中的 (www-data) 之前添加 =。

一个在不破坏 sudoers 文件的情况下验证 sudo 语法的技巧:echo 'blah blah' | visudo -f - -c。这至少会告诉您该行是否正常或有错误,而无需触碰您的 sudoers 文件。

相关内容