我有一个包含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

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

1回复

如何将脚本设置为在路径可能更改的sudoers中不带密码运行

我的环境变量在安装我们的软件时会发生变化。 可以说这个环境变量是$SOFTWARE_ROOT 。 该脚本位于 如何在/ etc / sudoers中将类似$ SOFTWARE_ROOT / run_script的内容设置为NOPASSWD?
1回复

编辑sudoers文件未生效

嗨,程序员们, 我正在完成我的学士学位项目,但遇到了一些问题。 目标是创建一个Web应用程序,该应用程序可以运行和修改运行带有lighttpd Web服务器的嵌入式Linux的WAGO PLC 750-8202(可以将其想象为某种工业Raspberry PI)的I / O。 我制作
1回复

添加到sudoers.d的脚本不是以root用户身份执行

在xubuntu框上,我使用以下脚本让PHP创建用户所拥有的目录: 该脚本位于/var/www/path/to/mkdir.php 我还将此文件添加到/etc/sudoers.d/grantmkdir ,其内容如下: 我有chmod主编的文件,以0440为好。 从浏览器访
1回复

这是sudoers文件的正确条目,使php可以重新加载nginx吗?

我需要给php访问权限以重新加载nginx。 该命令是nginx -s reload因此下面sudoers文件中的条目正确吗? www-data ALL=NOPASSWD: nginx -s reload 然后<?php exec('sudo nginx -s reload'
1回复

Sudoers权限

的opensuse 12.1 我正在/etc/sudoers.d/中创建一个名为access的文件。 权限设置为0440。这可以正常工作。 当前文件中包含以下内容: 这使我的Web脚本无需密码即可以root身份运行任何内容。 (我知道这是不安全的) 我只想让www以
2回复

允许用户通过/ etc / sudoers和权限运行脚本

我希望没有管理员/ root权限的人员组中的用户在不提示输入密码的情况下运行以下脚本。 这是在OSX中。 请注意,/ usr / sbin / serveradmin需要root / sudo特权。 我尝试将以下内容添加到我的/ etc / sudoers中,但是它不起作用。 脚
1回复

我们可以缩短/ etc / sudoers中的脚本吗?

(这个问题与我上学期的作业有关,因此请不要提及风险。) 我面对这个: 有什么办法可以缩短这样的脚本: 我试图使用命令别名,但是没有用。 如果不可能的话,你能解释为什么吗?
1回复

sudo无法读取/etc/sudoers.d文件中的文件

我想在sudoers文件中添加一个用户,并且不想触摸原始的/etc/sudoers文件,因此我在目录/etc/sudoers.d下添加了一个新文件。 有趣的是有关新添加文件的名称。 最初,我将文件命名为sudoers.local ,该文件从未生效。 然后我将文件重命名为customiz
1回复

在sudoers文件中命令?

我在sudoers文件中添加了以下命令,但这给了我语法错误,不允许在命令前使用“ foo = bar”。 如果我使用/ bin / bash前缀添加,则可以正常工作 但是当我从用户运行sudo ,它要求我输入密码。 有人可以让我知道这应该如何工作吗?
1回复

为什么这个ansible lineinfile命令检查/ etc / sudoers中的一行是否在一个非常相似的行成功时失败?

我让Kodi在Raspberry Pi上运行,为此我正在写一本Ansible剧本。 这个剧本包括两个任务,用于检查/etc/sudoers是否存在一行,其中一行一致,但另一行一致失败。 我似乎无法确定原因; 这两个任务的语法完全相同,两行都在/etc/sudoers文件中。 我已经在下面