लगता है सेतु के बिट पर कोई प्रभाव नहीं है


14

मैं एक सा प्रयोग कर रहा था और कुछ अजीब देखा: सेट बिट को एक बैश की एक प्रति पर सेट /usr/bin/bash-testकरने पर कोई प्रभाव नहीं था। जब मैंने एक उदाहरण चलाया bash-test, तो मेरी होम डायरेक्टरी सेट नहीं हुई थी /rootऔर जब मैंने whoamiकमांड को रन किया bash-testथा, तो मेरे उपयोगकर्ता नाम के रूप में रिपोर्ट नहीं किया गया था root, यह सुझाव देते हुए कि bash-testरूट के रूप में नहीं चल रहा था। हालाँकि, अगर मैं सेट्यूड बिट सेट करता हूं, तो मुझे whoamiकिसी भी शेल में रूट के रूप में रिपोर्ट किया गया था, जैसा कि अपेक्षित था।

मैंने सेटिउड बिट /usr/bin/bashको भी सेट करने की कोशिश की और उसी व्यवहार को देखा।

जब मैं इस पर सेट बिट सेट करता हूं तो बैश रूट के रूप में क्यों नहीं चल रहा है? क्या सेलिनक्स का इससे कोई लेना-देना हो सकता है?

linux  bash  setuid 

1
आप इस प्रश्न में सेतु के बारे में अतिरिक्त जानकारी पाते हैं ।
एंथन

इसके अलावा चेन, डीन और वैगनर द्वारा सेतुइम डिस्टिफायड को देखें । इसका एक पुराना कागज है लेकिन यह अभी भी लागू होता है।

जवाबों:


21

स्पष्टीकरण एक प्रकार का कष्टप्रद है: मार ही कारण है। straceहमारा दोस्त है (इस काम के लिए खुद ही SUID रूट होना चाहिए):

getuid()                                = 1000
getgid()                                = 1001
geteuid()                               = 0
getegid()                               = 1001
setuid(1000)                            = 0
setgid(1001)                            = 0

बैश यह पता लगाता है कि इसे SUID रूट (UID! = EUID) शुरू किया गया है और इस रूट को दूर फेंकने के लिए अपनी रूट पावर का उपयोग करता है, EUID को UID में रीसेट करता है। और बाद में भी FSUID, बस सुनिश्चित करने के लिए ...:

getuid()                                = 1000
setfsuid(1000)                          = 1000
getgid()                                = 1001
setfsgid(1001)                          = 1001

अंत में: कोई मौका नहीं। आपको UID रूट (यानी sudo) से बैश शुरू करना होगा।

संपादित करें 1

मैन पेज यह कहता है:

यदि शेल को प्रभावी उपयोगकर्ता (समूह) आईडी के साथ शुरू किया गया है जो वास्तविक उपयोगकर्ता (समूह) आईडी के बराबर नहीं है, और -p विकल्प की आपूर्ति नहीं की जाती है, तो कोई स्टार्टअप फाइलें नहीं पढ़ी जाती हैं, शेल फ़ंक्शन पर्यावरण से विरासत में प्राप्त नहीं होते हैं, , BASHOPTS, CDPATH और GLOBIGNORE वैरिएबल, अगर वे पर्यावरण में दिखाई देते हैं, तो उन्हें नजरअंदाज कर दिया जाता है, और प्रभावी उपयोगकर्ता आईडी को वास्तविक उपयोगकर्ता आईडी पर सेट किया जाता है। यदि -p विकल्प को आह्वान पर आपूर्ति की जाती है, तो स्टार्टअप व्यवहार समान है, लेकिन प्रभावी उपयोगकर्ता आईडी रीसेट नहीं है।

लेकिन यह मेरे लिए काम नहीं करता है। -pस्टार्टअप विकल्पों में भी इसका उल्लेख नहीं किया गया है। मैंने भी कोशिश की --posix; या तो काम नहीं किया।


2

किसी भी मामले में, एक SUID जड़ कार्यक्रम नहीं है जड़ के वातावरण के साथ चलाने के ( $HOME, खोल, जो कुछ भी के लिए विन्यास), यह जड़ के साथ चलता है शक्तियों (यानी, यह किसी भी फाइल आदि नष्ट कर सकते हैं, किसी भी अनुमतियों को बदलने,)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.