Qualcuno può aiutarmi a scoprire cosa sta succedendo qui? Ho alcune regole impostate per il conteggio dei pacchetti di tracciamento. Quando eseguo il seguente script come root:
#!/bin/bash
iptables -t mangle -xnvL
Ottengo l'output che mi aspetto:
//snip
233203 199929802 MARK //blah blah blah
//snip
Tuttavia, voglio eseguirlo come parte di cactus, che funziona come apache. Ora apache non può eseguire iptables, motivo per cui ho lo script. L'ho impostato come SUID root :
-rwsr-sr-x 1 root root 37 May 14 23:06 iptables_packet_report.sh
Ma poi ottengo questo output:
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.
Ovviamente il mio kernel va bene, e il fatto che lo stia eseguendo come non root sta rovinando qualcosa, ma non capisco perché. Ho ricontrollato il SUID con [la dimostrazione] ( http://en.wikipedia.org/wiki/Setuid#Demonstration e ho confermato che funzionava.
server # sudo -u apache ./printid
Real UID = 81
Effective UID = 0
Real GID = 81
Effective GID = 0
Il mio obiettivo finale è quello di ottenere l'output di iptables -t mangle -xnvL mentre corro come apache in modo da poter usare i cactus per rappresentare graficamente tutto.