特使任务运行程序:运行需要 sudo 访问权限的命令



我正在使用 https://laravel.com/docs/5.4/envoy 作为部署工具。 在Envoy.blade.php中,我有需要sudo访问权限的命令,例如:-

chmod 777 -R storage/
chmod 777 -R bootstrap/cache

这些命令失败,并显示错误,指出不允许操作。我们如何解决这个问题?

要以 sudo 身份运行这些命令,请尝试以下操作:

echo "{{ $password }}" | sudo -S chmod 777 -R storage/
echo "{{ $password }}" | sudo -S chmod 777 -R bootstrap/cache

显然,您需要将 sudo 密码传递到特使运行命令中。

envoy run mytask --password=mypass

在 Ubuntu 服务器 16.04 和 17.04 上测试

我在服务器上更改了以下配置

sudo visudo

并添加

username ALL=(ALL) NOPASSWD: ALL

现在无需输入密码即可执行所有命令

您还可以指定单个命令

username ALL=(username) NOPASSWD:/etc/init.d/apache2 reload