PHP exec() 到 an 和 Unbain IPs with fail2ban

PHP exec() to an and Unbain IPs with fail2ban

我正在 运行 安装 CentOS 7 服务器,我希望能够 BanUnban 某些 IP 与 Fail2ban

但是当我运行下面的代码时它不起作用:

$exec = exec('sudo fail2ban-client set apache banip 0.0.0.0', $output, $return);

var_dump($exec);    
var_dump($output);   
var_dump($return);

我需要一些特殊权限才能使用 PHP 这就是它不起作用的原因吗?

$return 变量在我 运行 时输出 1。我知道 0 意味着它是 Successful

$output 没有 return 任何东西。

我猜你需要 sudo 的密码。如果你有一个 root 用户并且确实是这种情况,你需要这样做:

$command = 'sudo -u root -S fail2ban-client set apache banip 0.0.0.0 < yourpass.key';

$exec = exec($command, $output, $return);

var_dump($exec);    
var_dump($output);   
var_dump($return);


其中 yourpass.key 是包含 root 密码的文件。按照我上面的做法,密码文件必须与 PHP 脚本位于同一目录中。但是,您可以更改该路径。

例如,如果您想将文件存储在 /home 中,只需写

$command = 'sudo -u root -S fail2ban-client set apache banip 0.0.0.0 < /home/yourpass.key';

无需 su root 并将 root 密码保存在文件中(危险)。 您需要做的就是将 /var/run/fail2banfail2ban.pidfail2ban/sock)中的文件组更改为 www-data,并将组权限更改为 rwrwx . fail2ban-client 是 运行 用户 www-data (apache),它需要这些权限才能与其服务器通信。