PHP exec() 到 an 和 Unbain IPs with fail2ban
PHP exec() to an and Unbain IPs with fail2ban
我正在 运行 安装 CentOS 7 服务器,我希望能够 Ban
或 Unban
某些 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/fail2ban
(fail2ban.pid
和 fail2ban/sock
)中的文件组更改为 www-data
,并将组权限更改为 rw
和 rwx
.
fail2ban-client 是 运行 用户 www-data
(apache),它需要这些权限才能与其服务器通信。
我正在 运行 安装 CentOS 7 服务器,我希望能够 Ban
或 Unban
某些 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/fail2ban
(fail2ban.pid
和 fail2ban/sock
)中的文件组更改为 www-data
,并将组权限更改为 rw
和 rwx
.
fail2ban-client 是 运行 用户 www-data
(apache),它需要这些权限才能与其服务器通信。