Bất cứ ai có thể giúp tôi tìm hiểu những gì đang xảy ra ở đây? Tôi có một số quy tắc thiết lập số lượng gói theo dõi. Khi tôi chạy đoạn script sau với quyền root:
#!/bin/bash
iptables -t mangle -xnvL
Tôi nhận được đầu ra mà tôi mong đợi:
//snip
233203 199929802 MARK //blah blah blah
//snip
Tuy nhiên, tôi muốn chạy nó như một phần của xương rồng, chạy như apache. Bây giờ apache không thể chạy iptables, đó là lý do tại sao tôi có kịch bản. Tôi thiết lập nó dưới dạng gốc SUID :
-rwsr-sr-x 1 root root 37 May 14 23:06 iptables_packet_report.sh
Nhưng sau đó tôi nhận được kết quả này:
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.
Rõ ràng kernel của tôi vẫn ổn, và thực tế là tôi đang chạy nó với tư cách là root không làm hỏng thứ gì đó, nhưng tôi không hiểu tại sao. Tôi đã kiểm tra SUID bằng [trình diễn] ( http://en.wikipedia.org/wiki/setuid#Demonstration và xác nhận rằng nó đang hoạt động.
server # sudo -u apache ./printid
Real UID = 81
Effective UID = 0
Real GID = 81
Effective GID = 0
Mục tiêu cuối cùng của tôi là có được đầu ra của iptables -t mangle -xnvL trong khi chạy dưới dạng apache để tôi có thể sử dụng cacti để vẽ đồ thị một cách độc đáo.