我有一个文件,它是一个bash脚本,需要sudo来工作。
我可以在命令行中使用sudo运行它,但我会提示放入输入sudo密码。
我想通过运行从PHP这个脚本shell_exec
但我如果我叫SUDO,它不喜欢命令行,我可以提示输入密码。 有没有一种方法来传递密码与须藤调用sudo的?
我怎样才能做到这一点?
我有一个文件,它是一个bash脚本,需要sudo来工作。
我可以在命令行中使用sudo运行它,但我会提示放入输入sudo密码。
我想通过运行从PHP这个脚本shell_exec
但我如果我叫SUDO,它不喜欢命令行,我可以提示输入密码。 有没有一种方法来传递密码与须藤调用sudo的?
我怎样才能做到这一点?
编辑sudoers文件(使用visudo
),增加一条规则,允许Web服务器用户不用密码运行的命令。 例如:
www-data ALL=NOPASSWD: /path/to/script
有此问题的各种解决方案。
首先,考虑更改脚本的权限,如果你之所以要sudo的是一个简单的权限问题(见我加入到这个问题上面的注释)。
另一种方法是使用setuid位 。 [编辑:看起来像setuid的不剧本很好地工作。 对于explananations,看到这个链接 。]
第三个,但非常不安全的方法来读取密码文件的密码。 警告:这是非常不安全的,如果有任何其他的可能性,不这样做。 如果你这样做,尽量隐藏密码文件中的某个地方你的文件夹层次。
<?php shell_exec('sudo -u root -S bash script.sh < /home/[user]/passwordfile'); ?>
而第四个可能性是使用NOPASSWD标签在sudoers文件。 您应该限制这种权力给你所需要的具体命令。
您可以添加这样的事情你sudoers
文件:
username ALL=NOPASSWD: /path/to/script
这将允许特定用户调用sudo
在那个特定的脚本不会被提示输入密码。
最好的安全的方法是使用crontab。 即保存在数据库中的所有命令说,MySQL表,并创建一个cronjob阅读这些MySQL的entreis并通过了shell_exec的execute()。 请仔细阅读本链接获取更多详细信息。
* * * * * killProcess.php