如何调用从PHP需要SUDO shell脚本?如何调用从PHP需要SUDO shell脚本?(How

2019-05-10 14:32发布

我有一个文件,它是一个bash脚本,需要sudo来工作。

我可以在命令行中使用sudo运行它,但我会提示放入输入sudo密码。

我想通过运行从PHP这个脚本shell_exec但我如果我叫SUDO,它不喜欢命令行,我可以提示输入密码。 有没有一种方法来传递密码与须藤调用sudo的?

我怎样才能做到这一点?

Answer 1:

编辑sudoers文件(使用visudo ),增加一条规则,允许Web服务器用户不用密码运行的命令。 例如:

www-data ALL=NOPASSWD: /path/to/script


Answer 2:

有此问题的各种解决方案。

  • 首先,考虑更改脚本的权限,如果你之所以要sudo的是一个简单的权限问题(见我加入到这个问题上面的注释)。

  • 另一种方法是使用setuid位 。 [编辑:看起来像setuid的不剧本很好地工作。 对于explananations,看到这个链接 。]

  • 第三个,但非常不安全的方法来读取密码文件的密码。 警告:这是非常不安全的,如果有任何其他的可能性,不这样做。 如果你这样做,尽量隐藏密码文件中的某个地方你的文件夹层次。

     <?php shell_exec('sudo -u root -S bash script.sh < /home/[user]/passwordfile'); ?> 
  • 而第四个可能性是使用NOPASSWD标签在sudoers文件。 您应该限制这种权力给你所需要的具体命令。



Answer 3:

您可以添加这样的事情你sudoers文件:

username ALL=NOPASSWD: /path/to/script

这将允许特定用户调用sudo在那个特定的脚本不会被提示输入密码。



Answer 4:

最好的安全的方法是使用crontab。 即保存在数据库中的所有命令说,MySQL表,并创建一个cronjob阅读这些MySQL的entreis并通过了shell_exec的execute()。 请仔细阅读本链接获取更多详细信息。

  * * * * * killProcess.php


文章来源: How to call shell script from php that requires SUDO?