मैं समांतर कार्यक्रमों के लिए रनटाइम सिस्टम पर काम कर रहा हूं जो कई प्रक्रियाओं में एक सामान्य पता स्थान लेआउट का लाभ उठा सकता है, संभावित रूप से कई (हजार) नोड्स पर फैल सकता है। कई बार, इस वातावरण के लिए बनाया गया सॉफ़्टवेयर लिनक्स सिस्टम पर चलाया जाता है जिसमें डिफॉल्ट स्पेस यादृच्छिकता डिफ़ॉल्ट रूप से सक्षम होती है, और उपयोगकर्ता इसे सिस्टम-वाइड (sysctl -w kernel.randomize_va_space=0
और इसी तरह से) अक्षम करने में सक्षम नहीं हो सकते हैं। यह समांतर कार्यक्रमों पर कुछ सीमाएं लगाता है, और प्रदर्शन को नुकसान पहुंचा सकता है। इस प्रकार, हम यह समझना चाहते हैं कि हमारे द्वारा बनाई जाने वाली बाइनरी के लिए इसे कैसे अक्षम किया जाए। सुरक्षा एक मुद्दा नहीं है, क्योंकि यह सॉफ्टवेयर हमेशा नियंत्रित वातावरण में चल रहा है।लिनक्स पर बाइनरी के लिए पता स्थान यादृच्छिकरण को कैसे अक्षम करें?
मैंने पाया विभिन्न झंडे और चर, ET_EXEC
, EF_AS_NO_RANDOM
(जाहिरा तौर पर कभी नहीं मिला दिया गया?) और PF_RANDOMIZE
की तरह है, लेकिन मैं किसी भी दस्तावेज़ का वर्णन करता है कि मैं इन झंडे सेट करने के लिए क्या कर सकते हैं नहीं मिल सकता है के लिए संदर्भ। एक आदर्श जवाब मुझे बताएगा कि कंपाइलर/असेंबलर/लिंकर ध्वज परिणामस्वरूप बाइनरी के लिए यादृच्छिकरण अक्षम करेगा, और टूल-चेन/कर्नेल के कौन से संस्करण इस पर काम करते हैं। अगला सबसे अच्छा उपकरण होगा जो बाइनरी के निर्माण के बाद ही होता है।
चूंकि मुझे यकीन है कि कोई इसका सुझाव देगा, मुझे पहले से ही पता है कि हम setarch -R
के साथ रनटाइम पर यह परिवर्तन कर सकते हैं, लेकिन इसे निष्पादन योग्य में रिकॉर्ड करना बेहतर है।
ऐसा लगता है कि paxctl -rx
चाल चलाना चाहिए, लेकिन ऐसा लगता है कि यह मौजूदा विधि पर लागू नहीं होता है जिसमें पेक्स पैच शामिल नहीं हैं।
मैं जांच करूँगा और इसे आजमाएं। – Novelocrat
काम किया लगता है। धन्यवाद! – Novelocrat