我有一个文件是一个bash脚本,需要SUDO才能工作。
我可以使用SUDO从命令行运行它但我会被提示输入SUDO密码。
我想通过shell_exec
从php运行这个脚本,但是如果我调用SUDO,它不像命令行,我可以提示输入密码。有没有办法通过sudo调用传递sudo的密码?
我怎样才能做到这一点?
编辑sudoers文件(使用visudo
)并添加允许Web服务器用户在没有密码的情况下运行命令的规则。例如:
www-data ALL=NOPASSWD: /path/to/script
这个问题有各种解决方案。
<?php
shell_exec('sudo -u root -S bash script.sh < /home/[user]/passwordfile');
?>
你可以在sudoers
文件中添加这样的东西:
username ALL=NOPASSWD: /path/to/script
这将允许特定用户在该特定脚本上调用sudo
而不会提示输入密码。
最安全的方法是使用crontab。即将所有命令保存在数据库中,例如,mysql表并创建一个cronjob来读取这些mysql entreis并通过shell_exec()执行。请阅读此link以获取更多详细信息。
* * * * * killProcess.php