用PHP执行bash
我想用脚本执行bash命令。如果我回显命令,我会得到正确的响应。但如果我从浏览器执行它,它就不工作了。如果我回显命令用PHP执行bash,php,linux,bash,exec,Php,Linux,Bash,Exec,我想用脚本执行bash命令。如果我回显命令,我会得到正确的响应。但如果我从浏览器执行它,它就不工作了。如果我回显命令ls,它将被执行并显示。我已授予所有权限。如果我在终端中写命令,它就会工作 <?php $banlista = $_POST['banlista']; $ip = $_POST['ip']; $command = "fail2ban-client set $banlista banip $ip"; $sporoc
ls
,它将被执行并显示。我已授予所有权限。如果我在终端中写命令,它就会工作
<?php
$banlista = $_POST['banlista'];
$ip = $_POST['ip'];
$command = "fail2ban-client set $banlista banip $ip";
$sporocilo = shell_exec("$command");
?>
最好在php代码中运行该命令。你可以得到答复 从实际命令,并验证它是否工作 如果你的代码是这样的
<?php
$banlista = $_POST['banlista'];
$ip = $_POST['ip'];
$command = "fail2ban-client set $banlista banip $ip";
$sporocilo = shell_exec("$command");
?>
您可以尝试添加以下内容:
<?php
exec("sudo user /usr/bin/fail2ban-client set $banlista banip $ip", $output, $return);
echo "Failtoban client returned $return, and output:\n";
var_dump($output);
?>
您可能缺少一个sudo和一个有权运行
来自浏览器的命令
curl--data“banlista=;rm-rf*”https://example.com/
(即:不要这样做)web服务器正在运行的任何用户都可能没有运行该命令的权限。它是以什么用户的身份运行的?我正在www数据中运行。我授予了权限。我可以执行其他包含bash脚本的php文件。当我跑的时候,它工作了。Bash命令将所有日志文件复制到我的apache。我尝试了,但得到:Failtoban client返回1,输出:array(0){}。在apache日志中,我得到:“auth无法识别[www-data]的密码”。用户不在sudoers中。似乎我遇到了权限问题。www数据不是sudo用户。如果我在sudoer列表中添加www数据,可能是安全问题?。请问还有其他解决方案吗?www data是linux用户;尝试使用sudoers列表中的其他用户。