Хтось може допомогти мені дізнатися, що тут відбувається? У мене є кілька правил, що встановлюють кількість відстеження пакетів. Коли я запускаю наступний скрипт як root:
#!/bin/bash
iptables -t mangle -xnvL
Я отримую очікуваний результат:
//snip
233203 199929802 MARK //blah blah blah
//snip
Однак я хочу запустити це як частину кактусів, які працюють як апаші. Тепер apache не може запускати 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#Demonstration і підтвердив, що він працює.
server # sudo -u apache ./printid
Real UID = 81
Effective UID = 0
Real GID = 81
Effective GID = 0
Моя кінцева мета - отримати вихід iptables -t mangle -xnvL під час роботи як apache, щоб я міг використовувати кактуси, щоб все це добре зобразити.