PHP에서 나중에 bash 스크립트를 시작하려고하므로 visudo에서 허용했습니다.PHP에서 나중에 bash 스크립트를 시작하십시오.
www-data ALL = (root) NOPASSWD: /sbin/iptables
www-data ALL = (root) NOPASSWD: /usr/bin/at
removeuserIP
그냥 sudo iptables
을하고있다 ... 그리고 노력 스크립트 :
#!/bin/bash
sudo iptables -t nat -D PREROUTING -s $1 -j ACCEPT;
sudo iptables -D FORWARD -s $1 -j ACCEPT;
과 PHP 코드
, 나는이 줄을 넣어 :$msg=exec("echo /var/www/scripts/removeuserIP $ipaddress | at now + 1 minutes");
을하지만 문제는 지금 스크립트를 시작하고 있습니다. 나는 /log/var/auth.log
을 확인했다. 실제로 지금 명령을 시작하고있다.
echo /var/www/scripts/removeuserIP $ipaddress | at now + 1 minutes
나는 또한 터미널하지만,이 하나 같이 그것을 시도 : 그것은 (물론 인수에) 나중에 시작,
내가 직접 터미널에서 그것을 시도하고 아무 문제가 없었다 지금 이후가 아니라 1 분 시작해야하는 경우에도 그것이 바로 지금 시작하는 이유를 정말 이해가 안
sudo at now +1 minutes -f /var/www/scripts/removeuserIP 172.24.1.115
:이 파일에 대한 인수가 이해하지 않기 때문에 너무 작동하지 않습니다.
exec ('echo "/ var/www/scripts/removeuserIP $ ipaddress"at now at 1 분');'(따옴표에 유의하십시오). 이것은 확실하지 않지만 도움이 될 수 있습니다. 그렇다면 답으로 게시 할 것입니다. –
www- 데이터를 sudoers에 넣는 것이 최악의 아이디어 중 하나입니다. –
당신이 말한 것처럼 시도했지만 여전히 작동하지 않습니다. 방금 로그를 확인했는데/var/log/apache2에서 사용 권한이없는 것으로 보입니다. www-data ALL = (모두) NOPASSWD : ALL 및 여전히 no라고 말하고 있습니다. 에서 사용할 수있는 권한. 왜 최악의 아이디어입니까? 더 안전한 것을 할 수있는 다른 제안? 솔직히 말해서 나는 apache2/php로 초보자이므로 대답에 놀라지 않을 것입니다. – Peter