क्या कोई मुझे यह पता लगाने में मदद कर सकता है कि यहाँ क्या हो रहा है? मेरे पास ट्रैकिंग पैकेट की गिनती के कुछ नियम हैं। जब मैं निम्नलिखित स्क्रिप्ट को रूट के रूप में चलाता हूं:
#!/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.
जाहिर है मेरा कर्नेल ठीक है, और यह तथ्य कि मैं इसे गैर-रूट के रूप में चला रहा हूं, कुछ गड़बड़ कर रहा है, लेकिन मुझे समझ नहीं आता कि क्यों। मैंने [प्रदर्शन] के साथ SUID की दोहरी जाँच की ( http://en.wikipedia.org/wiki/Setuid#Demon निष्पादन और पुष्टि की कि यह काम कर रहा था।
server # sudo -u apache ./printid
Real UID = 81
Effective UID = 0
Real GID = 81
Effective GID = 0
मेरा अंतिम लक्ष्य अपाचे के रूप में चलने के दौरान iptables -t mangle -xnvL का आउटपुट प्राप्त करना है, इसलिए मैं कैक्टि का उपयोग इसे पूरी तरह से ग्राफ करने के लिए कर सकता हूं।