धिक्कार क्यों कह रहा है: "SIOCSIFADDR: अनुमति से इनकार किया"?


9

मुझे ubuntu-server (8.04) पर एक बहुत ही अजीब त्रुटि का सामना करना पड़ा है, मुझे नहीं पता कि नेटवर्क सेटिंग सेट करने के लिए dhclient की अनुमति क्यों नहीं है! मैं वह नहीं हूं जिसने पहली बार सर्वर स्थापित किया है, इसलिए मुझे सेटअप के बारे में ज्यादा जानकारी नहीं है। सर्वर का उपयोग केवल फ़ायरवॉल / गेटवे (कस्टम iptables स्क्रिप्ट) के रूप में किया जाता है, यह इंटरनेट के लिए तीन निक एक, LAN के लिए एक और DMZ के लिए एक है। अब आईएसपी ने स्टेटिक आईपी से सेटिंग को बदलकर "स्टेटिक" आईपी को dhcp के माध्यम से असाइन किया है, और मैं वास्तव में इसका उपयोग नहीं कर सकता।

दुःख की बात यह है कि जब dhc लीज समाप्त होता है: o, तब से मैं सिर्फ IP को ही स्टेटिकली सेट नहीं कर सकता

यह वह त्रुटि है जो मुझे मिलती है: (और फिर यह वहीं लटक जाती है ..)

root@fw:~# dhclient eth2
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFFLAGS: Permission denied
Listening on LPF/eth2/00:50:52:c1:a1:32
Sending on   LPF/eth2/00:50:52:c1:a1:32
Sending on   Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 8
DHCPOFFER of 2.10.56.19 from 93.87.36.42
DHCPREQUEST of 2.10.56.19 on eth2 to 255.255.255.255 port 67
DHCPACK of 2.10.56.19 from 93.87.36.42
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFNETMASK: Permission denied
SIOCSIFBRDADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCADDRT: Operation not permitted

अभी के लिए मैंने इसे killall dhclient; dhclient eth2हर घंटे चलाकर तय किया है और फिर इंटरफ़ेस के लिए स्थैतिक आईपी सेटिंग्स सेट किया है, यह कनेक्शन को लाइव रखने के लिए पर्याप्त है! लेकिन यह मेरी राय में एक बहुत बदसूरत हैक है ..


1
strace -o /tmp/dhc$$ dhclient -d eth2क्या कॉल विफल हो रहे हैं के बारे में बहुमूल्य जानकारी मिलनी चाहिए। हां, मैं उन सभी को जानता हूं, लेकिन तर्कों को देखने से मदद मिल सकती है। मुझे eth2 ड्राइवर के साथ कुछ विषमता का संदेह है, शायद मॉड्यूल कर्नेल के साथ सिंक से बाहर है।
msw


btw: nic_rhine कर्नेल मॉड्यूल का उपयोग करके एक "VT6102 [राइन- II]" है।
LassePoulsen

अच्छा हिस्सा मिलने से ठीक पहले आपकी स्ट्रेस बाधित हो गई थी। Ctrl-c मारने से पहले इसे थोड़ी देर चलने दें, या शायद -1विकल्प जोड़ें और इसके अपने आप बाहर निकलने की प्रतीक्षा करें।
कार्ल बेवलफेल्ट 18

1
मैं एपर्मोर या सेलिनक्स का उपयोग नहीं करता हूं .. यहां -fविकल्प के साथ एक
स्ट्रेस है

जवाबों:


5

Http://silenzio.dk/pi/dhc.strace पर स्टैक ट्रेस के आधार पर SIOCSIFADDR: Permission denied, प्रक्रिया 26092 के निष्पादन के दौरान पहली त्रुटि पंक्ति 735 पर होती है ifconfig eth2 inet 0 up:। अब केवल कुछ हो rootसकता ifconfigहै, तो आइए fork()/ की श्रृंखला का पता लगाएं exec()और यूआईडी परिवर्तनों की तलाश करें। परिणाम यह निकला:

  1. प्रक्रिया 26092 26090 का बच्चा है (पंक्ति 689)
  2. UID 101 और GID 102 (लाइनों 355--358) के साथ 26090 प्रक्रिया
  3. प्रक्रिया 26090 अपने UID / GID को 0 पर सेट करने का प्रयास करती है, लेकिन विफल रहती है (पंक्ति 310)
  4. प्रक्रिया 26090 26089 का बच्चा है (लाइन 286)
  5. प्रक्रिया 26089 ने अपना UID: GID को 101: 102 (लाइनें 282--283) पर स्विच किया

इसलिए, त्रुटियां इसलिए होती हैं क्योंकि निष्पादित प्रक्रिया में आवश्यक रूट विशेषाधिकार नहीं होते हैं। ऐसा क्यों होता है? debian/changelogमें फ़ाइल dhcp3-3.0.6.dfsgसूत्रों का कहना है:

dhcp3 (3.0.1-2ubuntu4) breezy; urgency=low

  Derooted the DHCP client:
  * Added debian/patches/deroot-client.patch:
    - client/dhclient.c: After initialization, dro privileges to dhcp:dhcp and
      only keep CAP_NET_RAW and CAP_NET_BIND_SERVICE.
    - Add a setuid wrapper call-dhclient-script to call
      /etc/dhcp3/dhclient-script as root.
    - Install call-dhclient-script into /lib/dhcp3-client/.

मेरा अनुमान है कि call-dhclient-scriptइसका सेट-यूआईडी बिट खो गया है, और इस प्रकार इसे रूट विशेषाधिकारों के साथ निष्पादित नहीं किया जाना चाहिए। ( debian/dhcp3-client.postinstस्रोतों में फ़ाइल के अनुसार, इसके पास root:dhcpऔर मोड होना चाहिए 4754)


ऐसी जटिल त्रुटि और इतना सरल समाधान! chmod u+s /lib/dhcp3-client/call-dhclient-scriptचाल चली!
लासपुलसेन

2

जब आप dhclient चलाते हैं तो आपका "dmesg" आउटपुट क्या दिखाता है?

यदि आप हार्डी चला रहे हैं, तो AppArmor डिफ़ॉल्ट इंस्टॉल का हिस्सा है। यह संभव है कि dhclient प्रोफाइल हाइरवायर हो गया है। वहां क्या हो रहा है यह देखने के लिए "sudo aa-status" की जाँच करें।

इसके अतिरिक्त आपकी / etc / network / interfaces file कैसे पढ़ती है? शायद आपके पास परस्पर विरोधी पते, मार्ग आदि हैं, जो घिनौना नहीं खेलना चाहते हैं?


मशीन पर कोई ऐप-कवच स्थापित नहीं है। और एनआईसी / आदि / नेटवर्क / इंटरफेस फ़ाइल में स्थिर आईपी के साथ सेटअप है। जब यह कहा जाता है, तो इसे लिखने के लिए धिक्कार की कोई समस्या नहीं होनी चाहिए। लेकिन इससे कोई फर्क नहीं पड़ता क्योंकि इससे कोई फर्क नहीं पड़ता अगर मैं इसे / etc / नेटवर्क / इंटरफेस फाइल में dhcp के रूप में सेट करता हूँ। अगर मैं इंटरफ़ेस करता हूँ तो बस "अपुष्ट" रहता है।
LassePoulsen

यदि आप कर सकते हैं, "sudo aa-status" और "cat / etc / network / interfaces" के pastebins को लिंक भेजें
Kees Cook

1

मैं nscd स्थापित करने की कोशिश करूँगा अगर वह पैकेज गायब है, और अगर वह इस के साथ काम नहीं करता है, तो libnss-db भी स्थापित करें।

निश्चित नहीं है कि क्या यह आपकी समस्या को हल करेगा, हालांकि, वे चीजें हैं जो आपके ट्रेस को खोजने की कोशिश कर रही हैं और यह विफल हो जाती है।


nscd और libnss-db को स्थापित करने से मदद नहीं मिलती है।
LassePoulsen

1

कृपया sudo dpkg --configure -aकेवल यह सुनिश्चित करने के लिए चलाएं कि यह https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/19740/comments/67 में स्थिति की पुनरावृत्ति नहीं है


कोई भाग्य नहीं! dpkg --configure -aकुछ भी नहीं किया (कोई संकुल जिसे विन्यास की आवश्यकता थी)
LassePoulsen

1

यह वास्तव में Ubuntu 8.04 में एक बग है। कई उपयोग के मामलों के लिए आपको nscd स्थापित करना आवश्यक है (जैसे कि ओपनवीपीएन का उपयोग करते समय) या dhclient काम नहीं करेगा। नए उबंटू रिलीज में ऐसा नहीं होता है।


इससे कोई फर्क नहीं पड़ता! nscd स्थापित करने से कोई फर्क नहीं पड़ता कि dhclient ने IP एड्रेस, नेटमास्क आदि को सेट नहीं किया है
LassePoulsen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.