2012-05-04 14 views
5

में कॉलम पढ़ना मैं निम्न स्तर की सामग्री के बारे में कोड लिख रहा हूं। मुझे विश्वसनीय कोड लिखने के लिए कर्नेल प्रतीक पते जानने की जरूरत है। तो जब मैं उबंटू कर्नेल-3.0.1 9 में उपयोगकर्ता-मोड में हूं, तो कॉलम को पढ़ने की कोशिश कर रहा हूं। और यह उपयोगकर्ता-मोड में कॉलम आउटपुट है।उपयोगकर्ता-मोड

... 00000000 आर __ksymtab_prepare_kernel_cred 00000000 आर __kcrctab_prepare_kernel_cred 00000000 आर __kstrtab_prepare_kernel_cred ...

मैं उपयोगकर्ता के मोड में इस समस्या को कैसे हल कर सकते हैं। जब रूट और हर चीज ठीक है लेकिन मुझे वह चाहिए जो मुझे चाहिए।

धन्यवाद।

उत्तर

8

यह जानबूझकर है कि /proc/kallsyms गैर-रूट उपयोगकर्ता के वास्तविक पते के बजाय शून्य दिखाता है। इससे सुरक्षा जोखिम थोड़ा कम हो जाता है।

विवरण this upstream commit में उपलब्ध हैं। यह भी देखें कि %pK प्रिंट विनिर्देश s_show() function in kallsyms.c, s_show में /proc/kallsyms में रिकॉर्ड प्रदान करने के लिए ज़िम्मेदार है।

मुझे संदेह है कि रूट उपयोगकर्ता होने के बिना किसी भी तरह के प्रतीक पते प्राप्त करना अभी भी संभव है। कोई भी रूट विशेषाधिकारों के बिना System.map तक नहीं पहुंच सकता है। /proc/sys/kernel/kptr_restrict पर लिखने के लिए वही।

+0

'कोई रूट विशेषाधिकारों के बिना System.map तक नहीं पहुंच सकता है'। मेरे आरएचईएल सर्वर पर इसे इस फ़ाइल को पढ़ने की अनुमति है /boot/System.map -... –

+0

डिस्ट्रो और/या कर्नेल संस्करण पर निर्भर करता है, मुझे लगता है। यदि System.map में कर्नेल फ़ंक्शंस के पते हैं और डिफ़ॉल्ट रूप से गैर-रूट उपयोगकर्ता को पठनीय है, तो यह वास्तव में कॉलम के बेकार की सुरक्षा बनाता है। यदि यह आरएचईएल 6 है, तो कर्नेल 2.6.32, आईआईआरसी होने की संभावना है, जहां/proc/kallsyms संरक्षित नहीं था। तो पठनीय System.map फ़ाइल उस मामले में सुरक्षा जोखिम में वृद्धि नहीं करती है। – Eugene

+0

यदि आप वितरण द्वारा संकलित कर्नेल का उपयोग कर रहे हैं, तो आप उचित सिस्टम.मैप के लिए वितरण संग्रह देख सकते हैं, नहीं? – domen