谁能帮我找出这里的事吗?我有一些规则来设置跟踪数据包计数。当我以root身份运行以下脚本时:
#!/bin/bash
iptables -t mangle -xnvL
我得到了我期望的输出:
//snip
233203 199929802 MARK //blah blah blah
//snip
但是,我想将其作为cacti的一部分来运行,该仙人掌以apache的身份运行。现在apache无法运行iptables,这就是为什么我有脚本。我将其设置为SUID root:
-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.
显然,我的内核很好,而且我以非root用户身份运行它的事实使事情有些混乱,但我不明白为什么。我用[演示](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
我的最终目标是在以apache的身份运行时获取iptables -t mangle -xnvL的输出,因此我可以使用cacti对其进行漂亮的绘制。