Я бы хотел exec iptables из PHP.
Я добавил эту строку в файл sudoers:
root ALL=(ALL) ALL apache ALL=(root) NOPASSWD:/sbin/iptables -A INPUT -s * -j ACCEPT
Я пробовал также с
root ALL=(root) ALL apache ALL=(root) NOPASSWD:/sbin/iptables -A INPUT -s * -j ACCEPT
Мой сервер работает на centos 7.
Затем, когда я выполняю свой сценарий, я получил:
Извините, пользователь apache не имеет права выполнять '/ sbin / iptables -A INPUT -s xxx.xxx.xxx.xxx -j ПРИНЯТЬ' как apache для "servername", почему?
Часть моего кода:
$ip = $query['ip'];
$pattern = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/';
if(preg_match($pattern , $ip) == true) {
$exec_cmd = "/usr/bin/sudo -u apache /sbin/iptables -A INPUT -s $ip -j ACCEPT 2>&1";
echo('exec: ' . $exec_cmd);
$output = [];
$retval = 0;
exec($exec_cmd, $output, $retval);
print_r($output);
echo($retval);
} else {
echo('Bad IP');
}
Спасибо за вашу помощь:)