아무도 여기서 무슨 일이 일어나고 있는지 알 수 있습니까? 패킷 수 추적을 설정하는 규칙이 있습니다. 루트로 다음 스크립트를 실행할 때 :
#!/bin/bash
iptables -t mangle -xnvL
나는 내가 기대하는 결과를 얻는다 :
//snip
233203 199929802 MARK //blah blah blah
//snip
그러나 나는 이것을 아파치로 실행되는 선인장의 일부로 실행하고 싶습니다. 이제 아파치는 iptables를 실행할 수 없으므로 스크립트가 있습니다. SUID 루트로 설정했습니다 .
-rwsr-sr-x 1 root root 37 May 14 23:06 iptables_packet_report.sh
그러나이 출력을 얻습니다.
server # sudo -u apache ./iptables_packet_report.sh
iptables v1.4.2: can't initialize iptables table `mangle': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
분명히 내 커널은 괜찮으며 루트가 아닌 것으로 실행한다는 사실은 뭔가 엉망이지만 그 이유를 이해할 수 없습니다. [데모] ( http://en.wikipedia.org/wiki/Setuid#Demonstration으로 SUID를 다시 확인하고 작동하는지 확인했습니다.
server # sudo -u apache ./printid
Real UID = 81
Effective UID = 0
Real GID = 81
Effective GID = 0
내 최종 목표는 아파치로 실행하는 동안 iptables -t mangle -xnvL의 출력을 얻는 것이므로 cacti를 사용하여 그래프를 멋지게 그래프로 나타낼 수 있습니다.