1

我有一个包含 a 的 PHP 脚本,shell_execute()它执行的命令通常需要 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 (“锁定文件”)中......这些都不适合我。
4

2 回答 2

1

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

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

快乐的 sudoing :D

于 2011-12-11T17:03:28.437 回答
0

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

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

我还没有测试过。

于 2011-12-11T17:48:33.063 回答