एंड्रॉयड 4 के अंतर्गत, निम्न सरल देशी सी कोड लाइन एक Permission denied
त्रुटि जब नहीं रन के रूप में root
के साथ विफल:सॉकेट() "अनुमति अस्वीकार" त्रुटि का कारण क्या हो सकता है?
online_socket = socket(AF_INET, SOCK_DGRAM, 0);
मुझे क्या करना डिवाइस के लिए root
उपयोग कर सकते है, लेकिन चाहते हैं प्रक्रिया को गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलाने के लिए।
ध्यान दें कि सॉकेट बाध्य करने से पहले भी त्रुटि होती है।
मुझे लगता है कि कुछ सुरक्षा सेटिंग है जो tweaked की जरूरत है? कोई मुझे बता सकता है कि कहां देखना है?
ओ/एस इस मामले में वास्तव में एंड्रॉइड है, लेकिन मुझे लगता है कि समस्या वास्तव में लिनक्स से संबंधित है (क्योंकि एंड्रॉइड लिनक्स कर्नेल पर आधारित है)।
उन लोगों के लिए सोच रहा है: यह एक कस्टम प्रोग्राम है जो पूर्ण (debootstrap
पेड) एंड्रॉइड 4 वातावरण में चल रहे डेबियन जेसी इंस्टॉलेशन में चलता है।
अद्यतन
मैंने सीखा है कि एंड्रॉयड कर्नेल एक विशेष CONFIG_ANDROID_PARANOID_NETWORK
विस्तार है कि नेटवर्क AID_INET
और AID_NET_RAW
समूहों में उपयोगकर्ताओं के लिए केवल उपयोग की अनुमति देता है।
हालांकि, इन समूहों में उपयोगकर्ता को जोड़ने के बाद भी, socket()
अभी भी अस्वीकार कर दिया गया है (और ping
एक ही समस्या है, बीटीडब्ल्यू)।
uid=5(imp) gid=51(imp) groups=51(imp),3003(aid_inet),3004(aid_net_raw),3005(aid_admin),3001(aid_bt),3002(aid_bt_net)
कि अगर CONFIG_ANDROID_PARANOID_NETWORK
झंडा इस विशेष कर्नेल में सेट है मैं नहीं बता सकता, जैसा कि मैंने कॉन्फ़िग फ़ाइल के लिए उपयोग नहीं है।
अद्यतन 2
मुझे पता चला है कि दोनों root
और भी मेरी आम उपयोगकर्ता imp
वास्तव में सफलतापूर्वक socket()
कॉल कर सकते हैं - कम से कम समूहों ऊपर वर्णित सेटअप के साथ।
हालांकि, root
रूप में एक ही प्रक्रिया बुला और फिर seteuid()
सिस्टम कॉल का उपयोग कर imp
का उपयोग करने जा सफल से socket()
से बचाता है। कोई विचार?
मैं एक x68_64 लैपटॉप पर आर्क लिनक्स के तहत एक त्रुटि नहीं मिलता है। मुझे संदेह है कि यह एक एंड्रॉइड चीज है। –
क्या आपने "0" (तीसरा पैरामीटर) से भिन्न प्रोटोकॉल का उपयोग करने का प्रयास किया है? उदाहरण: टीसीपी के लिए 6 या udp के लिए 17? असल में, आपको एक udp डेटाग्राम सॉकेट के लिए प्रोटोकॉल 17 का उपयोग करना होगा। –
@gerhardd। - बस 17 को प्रोटोकॉल बदलने की कोशिश की, लेकिन दुर्भाग्य से यह मदद नहीं करता है। मुझे यह नहीं करना चाहिए कि प्रश्न में कार्यक्रम 2.4 से 4.4 –