Czy ktoś może mi pomóc dowiedzieć się, co się tutaj dzieje? Mam kilka zasad konfigurowania śledzenia pakietów. Kiedy uruchamiam następujący skrypt jako root:
#!/bin/bash
iptables -t mangle -xnvL
Otrzymuję oczekiwany wynik:
//snip
233203 199929802 MARK //blah blah blah
//snip
Chcę jednak uruchomić to jako część kaktusów, które działają jako apache. Teraz apache nie może uruchamiać iptables, dlatego mam skrypt. Ustawiłem go jako root SUID :
-rwsr-sr-x 1 root root 37 May 14 23:06 iptables_packet_report.sh
Ale potem otrzymuję ten wynik:
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.
Oczywiście moje jądro jest w porządku, a fakt, że uruchamiam go jako inny niż root, psuje coś, ale nie rozumiem dlaczego. Dokładnie sprawdziłem SUID za pomocą [demonstracji] ( http://en.wikipedia.org/wiki/Setuid#Demonstration i potwierdziłem, że działa.
server # sudo -u apache ./printid
Real UID = 81
Effective UID = 0
Real GID = 81
Effective GID = 0
Moim celem końcowym jest uzyskanie wyniku działania iptables -t mangle -xnvL podczas działania jako apache, dzięki czemu mogę używać kaktusów, aby ładnie to przedstawić.