टी एल का उपयोग नहीं; डॉ: क्यों हैं cap_net_raw
, cap_net_admin
क्षमताओं केवल /usr/bin
(या /usr/sbin
) में काम कर रहे हैं, लेकिन नहीं अन्य स्थान? क्या इसे किसी जगह से कॉन्फ़िगर किया जा सकता है?कच्चे कब्जा क्षमताओं (CAP_NET_RAW, CAP_NET_ADMIN) काम कर बाहर/usr/bin और दोस्तों के पैकेट पर कब्जा कार्यक्रम के लिए libpcap
मुझे उबंटू 14.04 में libpcap का उपयोग करने वाले मेरे सी प्रोग्राम में क्षमताओं को आवंटित करने में समस्याएं आ रही हैं। setcap(8)
का उपयोग करके क्षमताओं को असाइन करने के बाद भी और getcap(8)
का उपयोग करके इसे जांचने के बाद भी मुझे अनुमति त्रुटि मिलती है। ऐसा लगता है कि क्षमता केवल \usr\bin
और दोस्तों में निष्पादन योग्य के लिए काम करती है।
मेरे कार्यक्रम test.c
इस प्रकार दिखता है:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char **argv) {
if (argc != 2) {
printf("Specify interface \n");
return -1;
}
char errbuf[PCAP_ERRBUF_SIZE];
struct pcap* pcap = pcap_open_live(argv[1], BUFSIZ, 1, 0, errbuf);
if (pcap == NULL) {
printf("%s\n", errbuf);
return -1;
}
return 0;
}
और
gcc test.c -lpcap
पैदा a.out
निष्पादन के साथ संकलित किया गया है। मैं क्षमताओं सेट:
sudo setcap cap_net_raw,cap_net_admin=eip ./a.out
और देखने के लिए कि यह सही लग रहा है की जाँच करें:
./a.out eth0
eth0: You don't have permission to capture on that device (socket: Operation not permitted)
रनिंग:
getcap a.out
जो मुझे
a.out = cap_net_admin,cap_net_raw+eip
a.out
चल देता है मुझे देता हैके साथअपेक्षित काम करता है (प्रोग्राम प्रिंट करता है और बाहर निकलता है)।
यहां दिलचस्प हिस्सा है: यदि मैं a.out
से /usr/bin
(और क्षमताओं को दोबारा लागू करता हूं) चलाता हूं, तो यह काम करता है। इसके विपरीत: लेने की क्षमता सक्षम wireshark
से /usr/bin/dumpcap
(जो wireshark
समूह के उपयोगकर्ताओं के लिए ठीक काम करता है) और यह बाहर /usr/bin
की चलती, मेरे घर निर्देशिका करने के लिए कहते हैं, एक ही क्षमताओं फिर से आवेदन करने, यह काम नहीं करता है। इसे वापस ले जाना, यह काम करता है।
SO: ये क्षमताएं केवल /usr/bin
(और /usr/sbin
) में क्यों काम कर रही हैं, लेकिन अन्य जगह नहीं? क्या इसे किसी जगह से कॉन्फ़िगर किया जा सकता है?
परीक्षण प्रोजेक्ट (ऊपर की क्षमताओं के साथ) बॉक्स में फेडोरा -21 के बहुत सारे बाहर AOK काम करता है। अंधेरे में गोली मार दी: सुरक्षा अनुमतियाँ संबंधित?(मुझे उबंटू से विशेष रूप से कुछ भी नहीं पता है, लेकिन मैं उबंटू पर एपअर्मोर नामक कुछ इकट्ठा करता हूं जो फेडोरा पर एसईएलएनक्स के समान हो सकता है)। – willyo
आप शायद सही हैं, @ विलीओ ... मैंने ऐपअर्मर और अनलोडिंग प्रोफाइल को अक्षम करने का प्रयास किया था (कोई फायदा नहीं हुआ), लेकिन – dirkhas