我有一个包含shell_execute()的PHP脚本,它执行的命令通常需要sudo。 我用visudo编辑了sudoers来包含以下内容:

www-data ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
%users ALL = NOPASSWD: /var/root/node/npm/node_modules/less/

我怀疑这两种方法都应该起作用,但是我肯定会采用皮带悬挂式方法。

我正在用vim编辑etc / sudoers,所以添加这些行后,我执行:x,一切正常。 我的PHP脚本执行了预期的工作,大约需要10-15分钟。 然后脚本停止工作。 具体来说, shell_exec()停止工作。

如果我再次执行sudo visudo ,我的新行仍然存在。 但是只有当我再次保存它时,脚本才会再次开始工作。

谁能告诉我为什么会这样吗? 我有两个不太好的猜测:

  1. 当我对sudo visudo启动时,会有某种宽限期开始,这就是允许我的脚本正常工作的原因(但只有在它到期之前)。
  2. etc / sudoers中的新数据仍保存在sudoers.tmp(“锁定文件”)中。

===============>>#1 票数:1

我认为这可能对您有帮助:

在您需要再次输入密码之前增加sudo时间

开心的udo:D

===============>>#2 票数:0 已采纳

根据PHP文档中的评论 ,这将起作用。

system('echo "PASS" | sudo -u root -S COMMAND');

我还没有测试。

  ask by emersonthis translate from so

未解决问题?本站智能推荐:

关注微信公众号