如何从需要SUDO的php调用shell脚本?
2022-08-30 11:12:27
我有一个文件是一个bash脚本,需要SUDO才能工作。
我可以使用SUDO从命令行运行它,但系统将提示我输入SUDO密码。
我想通过php运行这个脚本,但是如果我调用SUDO,它不像一个命令行,可以提示我输入密码。有没有办法通过sudo调用传递sudo的密码?shell_exec
我该怎么做?
我有一个文件是一个bash脚本,需要SUDO才能工作。
我可以使用SUDO从命令行运行它,但系统将提示我输入SUDO密码。
我想通过php运行这个脚本,但是如果我调用SUDO,它不像一个命令行,可以提示我输入密码。有没有办法通过sudo调用传递sudo的密码?shell_exec
我该怎么做?
编辑 sudoers 文件(使用 ),并添加一个规则,允许 Web 服务器用户在没有密码的情况下运行命令。例如:visudo
www-data ALL=NOPASSWD: /path/to/script
此问题有多种解决方案。
首先,考虑更改脚本权限,如果您想要sudo的原因只是权限问题(请参阅我添加到上面问题的评论)。
第三种但非常不安全的方法是从密码文件中读取密码。警告:这是非常不安全的,如果有任何其他可能性,不要这样做。如果这样做,请尝试将密码文件隐藏在文件夹层次结构中的某个位置。
<?php
shell_exec('sudo -u root -S bash script.sh < /home/[user]/passwordfile');
?>
第四种可能性是在 sudoers 文件中使用 NOPASSWD 标记。应将此权限限制为所需的特定命令。