2016-11-03 3 views
1

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 

:이 파일에 대한 인수가 이해하지 않기 때문에 너무 작동하지 않습니다.

+0

exec ('echo "/ var/www/scripts/removeuserIP $ ipaddress"at now at 1 분');'(따옴표에 유의하십시오). 이것은 확실하지 않지만 도움이 될 수 있습니다. 그렇다면 답으로 게시 할 것입니다. –

+0

www- 데이터를 sudoers에 넣는 것이 최악의 아이디어 중 하나입니다. –

+0

당신이 말한 것처럼 시도했지만 여전히 작동하지 않습니다. 방금 로그를 확인했는데/var/log/apache2에서 사용 권한이없는 것으로 보입니다. www-data ALL = (모두) NOPASSWD : ALL 및 여전히 no라고 말하고 있습니다. 에서 사용할 수있는 권한. 왜 최악의 아이디어입니까? 더 안전한 것을 할 수있는 다른 제안? 솔직히 말해서 나는 apache2/php로 초보자이므로 대답에 놀라지 않을 것입니다. – Peter

답변

0

솔루션 : 마지막으로, /var/log/apache2/error.log 확인 후, 나는 그것이에서 사용할 수있는 권한이없는 것을 보았다.

사실 /etc/at.deny를 방문하고 at와 함께 www-date 행을 제거해야합니다. 기본적으로 금지 된 이유와이를 수행하는 더 나은 방법에 대한 보안상의 이유가있을 수 있지만 적어도 작동합니다.

0

removeuserIP 스크립트에 시간 지연을 넣을 수 있습니까?

#!/bin/bash 
sleep 1m 
sudo iptables -t nat -D PREROUTING -s $1 -j ACCEPT; 
sudo iptables -D FORWARD -s $1 -j ACCEPT; 
+0

나는 그렇게 생각하지 않는다. OP는 예를 들어 +1 분을 넣었을 수도 있고 다른 특정 값이 필요할 수도 있습니다 (또는 PHP로 계산 됨). – Aserre

+0

1m보다 다른 시간이 필요할지라도 동적 인 경우 인수를 사용하여 항상 스크립트 파일로 보낼 수 있습니다. 많은 솔루션을 시도 했으므로 지금 당장은 무엇을 말하고 있는지 확신 할 수 없지만 마지막으로 수면을 추가하기 위해이 솔루션을 사용해 보았을 때 페이지가 1 분을 기다리고 있었기 때문에 좋지 않았습니다. . – Peter

+1

오, 참으로 PHP 스크립트가 프로세스가 끝나기를 기다리는 것을 잊어 버렸습니다. 마치 당신이하는 것처럼 그렇게하려고하는 똑같은 문제가있는 것처럼 보입니다. http://stackoverflow.com/questions/1019867/is-there-a-way-to-use-shell-exec-with-waiting-for-the-command-to-complete를 확인해보십시오. – infinigrove