लॉन्च एजेंट द्वारा .plist फ़ाइल चलाने पर मुझे "फ़ाइल का संदिग्ध स्वामित्व" क्यों मिल रहा है?


54

मेरे पास एक लॉन्च एजेंट है जो उदाहरण के लिए .plist फ़ाइल चलाने के लिए कॉन्फ़िगर किया गया है /Library/LaunchAgent/foo.plist:। इस .plist के अंदर, इसे चलाने के दौरान सेट किया जाता है LoginWindowऔर Aqua

जब मैं अपने कंप्यूटर को लॉन्च करने और लॉगिन स्क्रीन पर लाने का प्रयास करता हूं, तो यह प्लिस्ट चलना चाहिए लेकिन इसके बजाय निम्नलिखित त्रुटि देता है (कंसोल में):

लॉन्चक्टल: फ़ाइल पर डबिंग का स्वामित्व (लंघन): /Library/LaunchAgents/foo.plist

जब मैं एक गैर-व्यवस्थापक खाते में प्रवेश करने का प्रयास करता हूं, तो यह सटीक त्रुटि संदेश देता है। जब मैं एक व्यवस्थापक खाते के साथ लॉगिन करने का प्रयास करता हूं, तो यह ठीक काम करता है।

मैं ईमानदार रहूंगा, मुझे मैक ओएस एक्स के विशेषाधिकार और अनुमति के बारे में ज्यादा जानकारी नहीं है।

फ़ाइल बनाने के लिए, मैंने इसे व्यवस्थापक खाते (जैसे कि अन्य खाते में sudo विशेषाधिकार नहीं है का उपयोग करके) के emacsसाथ खोला , और फिर इसे सहेजा।sudosu

फ़ाइल बनाने के लिए मुझे किस खाते का उपयोग करने की आवश्यकता है ताकि यह सभी उपयोगकर्ताओं के लिए काम करे?
क्या मुझे sudo कमांड का उपयोग करने की आवश्यकता है?
क्या मुझे फ़ाइल अनुमतियाँ (जैसे उपयोग chmod) बदलने की आवश्यकता है ?
क्या मौजूदा फ़ाइल लेने और फ़ाइल को पुनः बनाने के बजाय अपने स्वामित्व को बदलने का एक आसान तरीका है?
क्या कोई बता सकता है कि यह त्रुटि क्यों हुई?


क्या ls /Library/LaunchAgent/foo.plist के लिए दे -l है
user151019

1
@ मर्क: यह निम्नलिखित देता है:-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
सेंसफुल

लोडिंग को बाध्य करना भी संभव है ( -F)।
केनोर्ब

जवाबों:


51

यदि जड़ के अलावा किसी अन्य उपयोगकर्ता के पास एक जड़ और स्वामित्व योग्य है, तो यह एक सुरक्षा मुद्दा है।

आप स्वामी को रूट करने के लिए बदल सकते हैं sudo chown root <filename>, और अनुमतियों को बदल सकते हैं sudo chmod 644 <filename>(रीड एक्सेस के लिए 4, राइट एक्सेस के लिए 2, एक्सेस एक्सेस के लिए 1, जोड़ा गया। पहला नंबर मालिक के लिए, दूसरा ग्रुप के लिए, तीसरा है। हर कोई।)


यह काम। मैं बस इस उलझन में हूं कि मुझे मालिक को बदलने के लिए क्यों बदलना पड़ा। क्या वह उपयोगकर्ता है जो LaunchAgents के लिए उपयोग किया जाता है?
सेंसफुल

1
हां मुझे ऐसा लगता है।
मिचेल डी मेराज

1
मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन यह एक महान जवाब है! मैंने Apple को ठीक करने की कोशिश करने के लिए /system/library/launchdaemons/com.apple.mdnsresponder पर अनुमतियां बदल दीं, लेकिन बाद में इसे लोड करने की कोशिश करने पर मुझे ऊपर बताई गई त्रुटि मिल जाएगी। ऊपर वर्णित के रूप में स्वामी और अनुमतियाँ बदलना मेरे इंटरनेट कनेक्शन को वापस लाने का एकमात्र तरीका था। धन्यवाद!

अब वही सामना किया और हल किया। मुझे लगा कि फ़ाइल के मालिक ने बहुत आह्वान किया है launchctl। मैंने फ़ाइल को अपने सामान्य उपयोगकर्ता के रूप में बनाया और उसके साथ निष्पादन कर रहा था sudo। इसलिए त्रुटि। क्योंकि रूट फ़ाइल का स्वामी नहीं है, नहीं sudoकी आवश्यकता नहीं थी। मैं बिना भागे चला गया sudoऔर यह ठीक रहा।
बिभास

14

सबमिशन के लॉन्चक्लेट (1) मैनपेज के विवरण से load:

ध्यान दें कि प्रति-उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइलें (LaunchAgents) उपयोगकर्ता द्वारा उन्हें लोड करने के स्वामित्व में होनी चाहिए। सभी सिस्टम-वाइड डेमोंस (लॉन्चडैमन्स) को रूट के स्वामित्व में होना चाहिए। कॉन्फ़िगरेशन फ़ाइलें समूह-या विश्व-योग्य नहीं होनी चाहिए। ये प्रतिबंध सुरक्षा कारणों से लगे हैं, क्योंकि एक लॉन्च की गई कॉन्फ़िगरेशन फ़ाइल के लिए लेखन क्षमता की अनुमति देता है, जिससे यह निर्दिष्ट किया जा सके कि कौन सा निष्पादन योग्य लॉन्च किया जाएगा।

लॉन्चक्टल में कई "डबियस ..." संदेश हैं। Launchd (उदाहरण के लिए) 10.6.7 के लिए कोड अपने में तीन तरह के संदेशों है launchctl.c(समारोह को देखने के path_goodness_check)।

  1. Dubious permissions on file (skipping): <pathname>
  2. Dubious ownership on file (skipping): <pathname>
  3. Dubious path. Not a regular file or directory (skipping): <pathname>

इन संदेशों से बचने के लिए एक रूटनाम होना चाहिए (# 3) एक नियमित फ़ाइल या निर्देशिका 1 (या एक के लिए एक सिमलिंक) जो कि (# 1) रूट या चालान उपयोगकर्ता के स्वामित्व में है और (# 2) "समूह" या "अन्य" नहीं है “योग्य (यानी chmod go-w)।

1 कोई नामित पाइप, ब्लॉक / चरित्र विशेष उपकरण नोड, स्थानीय डोमेन सॉकेट, आदि।


आपकी फ़ाइल शायद व्यवस्थापक उपयोगकर्ता के स्वामित्व में है क्योंकि आप कहते हैं कि आपको उस उपयोगकर्ता के रूप में लॉग इन करते समय संदेश नहीं मिलता है (पथनाम उस स्थिति में उपयोगकर्ता द्वारा स्वामित्व में है)।
अन्य उपयोगकर्ताओं के लिए पथनाम काम करने के लिए, इसे रूट के स्वामित्व में होना चाहिए।

इसे व्यवस्थित करने के लिए, यह करें:

sudo chown root /Library/LaunchAgent/foo.plist

1

उत्तर के लिए धन्यवाद (रूट करने के लिए मालिक को बदल रहा है) - बस मुझे इसकी आवश्यकता है।

इसे 'मुझे भी' पोस्ट की तुलना में थोड़ा अधिक बनाने के लिए ... मैं यहां एक जटिल मार्ग के माध्यम से मिला: मुझे यह मिल रहा था "यह एपीआई केवल एक्वा सत्र के भीतर चल रही एक प्रक्रिया द्वारा उपयोग किया जा सकता है" एक लॉन्चडैम के लिए त्रुटियों। इसका उत्तर खोजने के लिए मुझे डेमोंस और एजेंटों पर Apple की तकनीकी की ओर ले जाया गया, जिसमें बताया गया था कि 'एक्वा सत्र' त्रुटि को कैसे हल किया जाए, लेकिन इसने मुझे 'संदिग्ध स्वामित्व' मुद्दों के साथ छोड़ दिया। मैं यहां पहुंच गया, जहां मेरा अंतिम मुद्दा हल हो गया।

हो सकता है कि इस चर्चा में उन सभी को जोड़ने से कुछ खोज इंजन को इस पृष्ठ को अग्रसारण मुद्दों में से एक से जोड़ना होगा, जिससे भविष्य के साहसी लोगों को कुछ समय की बचत होगी।


ध्यान दें, यह उत्तर के बजाय एक टिप्पणी होनी चाहिए।
स्टडजेक

1
मैंने टिप्पणी की होगी, लेकिन मेरे प्रतिष्ठा अंक बहुत अधिक नहीं थे। (क्या यह पीछे की ओर नहीं लगता है कि कोई कम प्रतिष्ठा के साथ 'उत्तर' दे सकता है लेकिन टिप्पणी नहीं?)
मैट स्ट्रेंज

-2

फ़ाइल के लिए ~ / लाइब्रेरी / LaunchAgent उपयोगकर्ता के स्वामित्व में है और रूट नहीं है sudo, यदि आप ऐसा नहीं करते हैं तो आपको स्वामित्व बदलना होगा क्योंकि आप इसे रूट उपयोगकर्ता से लोड कर रहे हैं


-3

ऐसा तब होता है जब लोग नहीं जानते कि कैसे sudoकाम करता है। उन सेवाओं को निष्क्रिय करने के लिए जो आपके उपयोगकर्ता के स्वामित्व वाली फ़ाइलों के launchtlबिना हैं sudo

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