MacOS Mojave बैश स्क्रिप्ट में "-w / etc / passwd" रूट के लिए भी गलत है


1

एक पुरानी बैश स्क्रिप्ट rootजिसे मैंने यह देखने के लिए परीक्षण किया है कि क्या कोई उपयोगकर्ता यह देखने के लिए था कि क्या /etc/passwdवह लिखने योग्य है। मैकओएस हाई सिएरा में यह rootकिसी और के लिए सही , और गलत है। लेकिन macOS Mojave में परीक्षण के लिए भी गलत रिटर्न देता है root

यदि मैं [ -w File ]उसी अनुमतियों और स्वामित्व वाली अन्य फ़ाइलों पर उस परीक्षण को चलाता हूं , जैसे कि /etc/hosts, यह rootMojave और High Sierra दोनों में किसी और के लिए सही और गलत है। मुझे कोई विशेष फ़ाइल फ़्लैग या विस्तारित विशेषताएँ नहीं दिख रही हैं /etc/passwd

स्क्रिप्ट को ठीक करने के लिए कोई समस्या नहीं है, लेकिन मैं यह जानना चाहूंगा कि यह परीक्षण उस फ़ाइल बनाम अन्य फ़ाइलों पर कैसे और क्यों भिन्न है और यह केवल Mojave में क्यों है। यदि यह SIP के साथ करना है, तो मैं जानना चाहूंगा कि कोई यह देखने के लिए कैसे परीक्षण कर सकता है कि किसी फ़ाइल या निर्देशिका को किसी तरह SIP द्वारा संरक्षित किया गया है।

अद्यतन: मैंने पाया कि SIP को अक्षम करने से चीजें अपेक्षा के अनुरूप काम करती हैं, यानी रूट उपयोगकर्ता के लिए बैश टेस्ट "-w / etc / passwd" सही होगा। सक्षम SIP फिर से और सभी अपेक्षित के रूप में काम कर रहा है। मुझे नहीं पता कि मुझे इस प्रश्न को हटा देना चाहिए, या इसे किसी ऐसी ही समस्या में चलाने की स्थिति में छोड़ देना चाहिए। एक "ls -O / etc / passwd" करना फ़ाइल को प्रतिबंधित के रूप में नहीं दिखाता है।


1
लेकिन दोनों उच्च सिएरा और Mojave के तहत रूट उपयोगकर्ता के लिए [[ -w /etc/passwd ]] && echo "yes"वापस जाएँ yes
डेविड एंडरसन

@ डेविड एंडरसन, आपका परीक्षण केवल उच्च सिएरा पर "हां" देता है जब मैं ऐसा करता हूं। मेरे Mojave सिस्टम (रूट द्वारा चलाए जा रहे दोनों मामलों में) पर कुछ भी वापस नहीं करता है।
मार्निक्स ए। वैन अमर्स

@ MarnixA.vanAmmers यह yesMojave पर मेरे लिए लौटता है , पहले चल रहा है sudo -iयाsudo bash
योरिक

यह अभी भी मेरे लिए विफल रहा, लेकिन जब मैंने एसआईपी को बंद कर दिया, तो यह सफल रहा। क्या आपके सिस्टम पर 'csrutil स्थिति' अक्षम है?
मार्निक्स ए। वैन अमर्स

एसआईपी के साथ की उम्मीद के रूप में मेरे लिए काम करता है सक्षम: whoami; [[ -w /etc/passwd ]] && echo "yes"की ओर जाता हैroot yes
nohillside

जवाबों:


2

यह देखने के लिए जाँच करना कि क्या कोई फ़ाइल "लिखने योग्य" है यह निर्धारित करने के तरीके के रूप में कि क्या उपयोगकर्ता rootअनुमतियों की जाँच करने का एक बुरा तरीका है। उदाहरण के लिए....

  • आप एक उपयोगकर्ता को एक समूह (यानी wheel) में जोड़ सकते हैं जिसमें फ़ाइल की अनुमतियाँ हैं जो आमतौर पर रूट के स्वामित्व में हैं

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

  • किसी फ़ाइल की जड़ (जानबूझकर या नहीं) द्वारा इसकी अनुमति "गैर-लेखन" में बदल सकती है

  • SIP, या सिस्टम इंटीग्रिटी प्रोटेक्शन (जैसा कि आप पहले ही खोज चुके हैं) rootउपयोगकर्ता को सिस्टम फाइल में लिखने से भी रोक देगा ।

उपयोगकर्ता आईडी के लिए जाँच करें

इसके बजाय, आपको फ़ंक्शन के साथ किसी विशेष उपयोगकर्ता के यूआईडी को देखना चाहिए id

$ id -u

एक rootउपयोगकर्ता, के पास 0 की आईडी होगी।

यह देखने के लिए कि आप rootविशेषाधिकार के लिए जाँच करने के लिए किसी स्क्रिप्ट में इसका उपयोग कैसे कर सकते हैं, उत्तर को व्यवस्थापक विशेषाधिकार के साथ स्क्रिप्ट चलाने वाले पोस्ट में देखें ।

एसआईपी की जाँच करना

यह वास्तव में बहुत आसान है ...।

$ csrutil status

हालाँकि, यदि यह सक्षम है, तो आपको SIP को निष्क्रिय करने के लिए रिकवरी मोड पर बूट करना होगा । यह कुछ ऐसा नहीं है जो आप सामान्य सत्र में कमांड लाइन (या स्क्रिप्ट से) पर कर सकते हैं। UIDऊपर बताए अनुसार केवल परीक्षण करना बहुत आसान है ।


/etc/passwdएसआईपी द्वारा संरक्षित नहीं है, ls -O /etc/passwdजांच के लिए चलाएं ।
nohillside

मैं वास्तव में उपरोक्त सभी से अवगत हूं। मैं केवल इस बात का स्पष्टीकरण खोजने की कोशिश कर रहा था कि परीक्षण "-w / etc / passwd" मेरे Mojave में गलत है, जब मेरे पास SIP सक्षम है और जब मेरे पास SIP अक्षम है तो यह सत्य है और अन्य Mojave स्थापनाओं के लिए यह सही क्यों नहीं था। पागल बात है, यह सिर्फ स्पष्ट आया। एक रिबूट ने ऐसा नहीं किया। SIP को अक्षम करना और पुन: सक्षम करना उसने नहीं किया। किसी तरह यह अब स्पष्ट है और सब कुछ उम्मीद के मुताबिक काम करता है।
मार्निक्स ए। वैन अमर्स

SIP को फिर से सक्षम करने के लिए यह किया जा सकता है। मैंने तुरंत ध्यान नहीं दिया कि समस्या स्पष्ट हो गई है। कुछ घंटे बाद ही मैंने नोटिस किया। शायद मैं पागल हो रहा हूं। मैंने अपना प्रश्न अपडेट कर दिया है।
मार्निक्स ए। वैन अमर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.