Xcode / Mac OS में एक गैर-व्यवस्थापक डेवलपर अधिकृत करें


109

मैं मैक ओएस पर अपने दैनिक कार्यों के लिए एक मानक उपयोगकर्ता खाते का उपयोग करता हूं। स्नो लेपर्ड में अपग्रेड करने के बाद से मुझे निम्नलिखित करने के लिए कहा जाता है जब एक प्रोग्राम को Xcode के भीतर से चलाया जाता है:

"डेवलपर टूल 'में उपयोगकर्ता का नाम और पासवर्ड टाइप करें जिससे कि डेवलपर टूल एक्सेस में बदलाव कर सके।"

जबकि मैं व्यवस्थापक उपयोगकर्ता नाम / पासवर्ड जानता हूं, यह कष्टप्रद है (हालांकि लॉगिन के लिए केवल एक बार आवश्यक है)।

डेवलपर टूल एक्सेस एप्लिकेशन gdb-i386-apple-darwin से "system.privilege.taskport.debug" के अधिकारों के लिए पूछ रहा है।

इसके आसपास सबसे अच्छा तरीका क्या है?

जवाबों:


134

आपको _developerसमूह में अपना OS X उपयोगकर्ता नाम जोड़ना होगा । अधिक जानकारी के लिए इस थ्रेड में पोस्ट देखें । निम्नलिखित कमांड को चाल करना चाहिए:

sudo dscl . append /Groups/_developer GroupMembership <username>

1
इस समाधान ने मेरे लिए लगभग 10 मिनट तक काम किया, और फिर किसी कारण से यह मेरे उपयोगकर्ता नाम / पासवर्ड के लिए फिर से पूछना शुरू कर दिया। मैंने इसे फिर से टर्मिनल में टाइप करने की कोशिश की, लेकिन यह अब जवाब नहीं देता है।
jowie

यह मेरे लिए काम करता है और मेरे पास अब तक कोई मुद्दा नहीं है। सिर्फ संदर्भ के लिए नोट किया गया।
eonil

9
यह समाधान मेरे लिए तब तक काम नहीं करता जब तक कि मैं -u <name-of-account-with-root-access>विकल्पों में शामिल नहीं हुआ। तो मेरी पूरी आज्ञा थीdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg

1
यदि आप इस लाइन को निरंतर एकीकरण स्क्रिप्ट में जोड़ते हैं तो आपको 'परिशिष्ट' के बजाय 'मर्ज' का उपयोग करने पर विचार करना चाहिए। यदि यह पहले से मौजूद है तो मर्ज इसे नहीं जोड़ेगा। अधिक विवरण के लिए 'मैन डीएससीएल' देखें।
रस वान बर्ट

1
इसने मुझे समूह में जोड़ने का काम किया, लेकिन पहले मैंने रूट खाते में मुकदमा करने के लिए @Kheldar सुझाव का उपयोग किया।
b01

24

अंत में, मैं DevToolsSecurity -enableटर्मिनल पर इसका उपयोग करने से छुटकारा पाने में सक्षम था । @Joar_at_work को धन्यवाद !

FYI करें : मैं Xcode 4.3 पर हूं, और पहली बार लॉन्च होने पर अक्षम बटन दबाया , ऐसा क्यों नहीं पूछा, बस मान लीजिए कि मेरे कुत्ते ने मुझे ऐसा किया :)


2
DevToolsSecurity का उल्लेख करने के लिए +1। मुझे नहीं पता था कि ऐसा कोई उपकरण मौजूद है। मेरे पास विपरीत समस्या थी, मैं इसे फिर से अक्षम करना चाहता था और इस उपकरण के लिए धन्यवाद, मैं आखिरकार सक्षम था :) बस के -enableसाथ प्रतिस्थापित किया गया -disableऔर यह उम्मीद के मुताबिक काम करता है!
मिकी

1
इस आदेश का कोई प्रभाव नहीं पड़ता है। Xcode 4.3 को अभी भी _developer समूह के किसी व्यक्ति से प्रमाणीकरण की आवश्यकता है, भले ही -able या -disable का उपयोग किया गया हो।
वाकोच्रान

बस स्पष्ट करने के लिए, यह कदम कम से कम कुछ मामलों में, उपयोगकर्ता को _developer समूह के साथ जोड़ने के अलावाdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

XCode 7.3 के साथ macOS "El Capitan" पर काम नहीं करता है। @ Kheldar के समाधान ने मेरे लिए काम किया।
लैरीक्स डेसीडुआ

9
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer

5
मेरी विनम्र राय में, यह जवाब वास्तव में यह क्या करता है पर थोड़ा और समझाने से फायदा हो सकता है। ऐसा नहीं है कि मुझे अपने सिस्टम पर sudo rm -rf / टाइप करना पसंद नहीं है, लेकिन आप मेरी बात समझें। : D
Kheldar

8

आपको अपने आप को Developer Tools समूह में जोड़ना चाहिए। ओएस एक्स में एक समूह में एक उपयोगकर्ता को जोड़ने के लिए सामान्य वाक्यविन्यास निम्नानुसार है:

sudo dscl . append /Groups/<group> GroupMembership <username>

मेरा मानना ​​है कि DevTools Group का नाम है _developer


3

नेड डीली का समाधान पूरी तरह से ठीक काम करता है, बशर्ते आपके उपयोगकर्ता को अनुमति हो sudo

यदि वह नहीं है, तो आप suएक व्यवस्थापक खाते में जा सकते हैं, तो उसका उपयोग करें dscl . append /Groups/_developer GroupMembership $user, जहां $ उपयोगकर्ता उपयोगकर्ता नाम है।

हालाँकि, मुझे गलती से लगा कि ऐसा नहीं हुआ है क्योंकि मैंने कमांड में उपयोगकर्ता के नाम को गलत तरीके से टाइप किया है और यह चुपचाप विफल है।

इसलिए, इस कमांड को दर्ज करने के बाद, आपको इसका प्रमाण देना चाहिए। यह जाँच करेगा कि क्या $ उपयोगकर्ता $ समूह में है, जहाँ चर क्रमशः उपयोगकर्ता नाम और समूह नाम का प्रतिनिधित्व करते हैं।

dsmemberutil checkmembership -U $user -G $group

यह आदेश या तो संदेश प्रिंट होगा user is not a member of the groupया user is a member of the group


2
धन्यवाद! यह मेरे लिए काम किया! ओएस एक्स मावेरिक्स के लिए काम करने वाले आदेश थे dscl . append /Groups/_developer GroupMembership username औरdsmemberutil checkmembership -U "username goes here" -G "group goes here"
मोरालकोड

2

@ स्टेसी सिम्पसन द्वारा सुझाए गए उत्तर:

हम इन धागों में वर्णित मुद्दे से जूझ रहे हैं और कोई भी संकल्प काम नहीं कर रहा है:

जैसा कि मैं SO के लिए नया हूं, मैं किसी भी थ्रेड में पोस्ट नहीं कर सकता। (पहले वाला वास्तव में बंद है और मैं स्थानीयकरण तर्क से असहमत हूं ...)

वैसे भी, हमने AppleScript का उपयोग करते हुए एक ऐसा काम तैयार किया है जिसमें लोगों की दिलचस्पी हो सकती है। नीचे दी गई स्क्रिप्ट को आपके स्वचालित परीक्षण को शुरू करने से पहले अतुल्यकालिक रूप से निष्पादित किया जाना चाहिए:

osascript <script name> <password> &

यहाँ स्क्रिप्ट है:

on run argv
    # Delay for 10 seconds as this script runs asynchronously to the automation process and is kicked off first.
    delay 10

    # Inspect all running processes
    tell application "System Events"
        set ProcessList to name of every process
        # Determine if authentication is being requested
        if "SecurityAgent" is in ProcessList then
            # Bring this dialogue to the front
            tell application "SecurityAgent" to activate
            # Enter provided password
            keystroke item 1 of argv
            keystroke return
        end if
    end tell
end run

शायद बहुत सुरक्षित नहीं है, लेकिन यह सबसे अच्छा काम है जिसके आसपास हम उपयोगकर्ता के हस्तक्षेप की आवश्यकता के बिना परीक्षणों को चलाने की अनुमति देते हैं।

उम्मीद है, मुझे उत्तर पोस्ट करने के लिए पर्याप्त अंक मिल सकते हैं; या, कोई इस सवाल को अनसुना कर सकता है। सादर।


2

यहाँ एक बेहतर समाधान है
मैक ओएस एक्स परियोजना को संकलित करते समय सिस्टम किचेन का उपयोग करना चाहता है

  1. किचेन एक्सेस खोलें।
  2. ऊपरी-बाएँ कोने में, चाबी का गुच्छा (यदि यह बंद है) अनलॉक करें।
  3. ऊपरी-बाएँ कोने से सिस्टम किचेन चुनें।
  4. अपना वितरण प्रमाणपत्र ढूंढें और प्रकटीकरण त्रिकोण पर क्लिक करें।
  5. अपने वितरण प्रमाणपत्र के तहत 'निजी कुंजी' पर डबल-क्लिक करें।
  6. पॉपअप में, एक्सेस कंट्रोल टैब पर जाएं।
  7. 'सभी एप्लिकेशन को इस आइटम को एक्सेस करने की अनुमति दें' चुनें।
  8. परिवर्तनों को सुरक्षित करें।
  9. सभी विंडो बंद करें।
  10. एप्लिकेशन चलाएँ।

1

मेरे लिए, मुझे निम्नलिखित सूत्र में सुझाव मिला है:

"डेवलपर टूल एक्सेस को जारी रखने के लिए डिबगिंग के लिए एक और प्रक्रिया का नियंत्रण लेने की आवश्यकता है" अलर्ट

इसने टर्मिनल एप्लिकेशन में निम्नलिखित कमांड चलाने का सुझाव दिया :

sudo /usr/sbin/DevToolsSecurity --enable

1

मैं हिम तेंदुए पर हूँ और यह मेरे लिए काफी काम नहीं आया। लेकिन निम्नलिखित प्रक्रिया ने काम किया:

  1. पहले खातों के अंतर्गत "उपयोगकर्ता को इस कंप्यूटर को प्रबंधित करने की अनुमति दें" का उपयोग करके व्यवस्थापक विशेषाधिकारों के साथ एक और खाता जोड़ा गया, उदाहरण के लिए उपयोगकर्ता नाम परीक्षण वाला खाता
  2. परीक्षण खाते में लॉग इन किया
  3. Xcode लॉन्च किया, मेरे iPhone प्रोजेक्ट को संकलित और चलाया। सभी ठीक है, कोई भी त्रुटि अनुमतियों से संबंधित नहीं थी
  4. परीक्षण खाते से लॉग आउट किया गया
  5. व्यवस्थापक विशेषाधिकार वाले किसी अन्य खाते के साथ लॉग इन करें
  6. खाते के अंतर्गत "उपयोगकर्ता को इस कंप्यूटर को प्रबंधित करने की अनुमति दें" से टिक हटाकर व्यवस्थापक खाते से परीक्षण को हटा दें
  7. परीक्षण खाते में वापस लॉग इन करें
  8. IPhone प्रोजेक्ट निर्देशिका हटा दी गई और फिर से भंडार (मेरे मामले में svn) से बाहर की जाँच की
  9. Xcode लॉन्च किया, परियोजना को संकलित और चलाया। मुझे कोई त्रुटि नहीं मिली और iPhone सिम्युलेटर में ऐप अच्छी तरह से चला।

0

आपके चलाने के बाद:

sudo dscl . append /Groups/_developer GroupMembership <username>

उपरोक्त उत्तर के अनुसार, आपको अभी भी अपने पासवर्ड में प्रवेश करने के लिए प्रेरित किया जा सकता है :

डिबगर को चलाने के लिए हमें एक व्यवस्थापक उपयोगकर्ता से प्राधिकरण की आवश्यकता है। यह केवल एक बार लॉगिन सत्र के अनुसार होगा।

इसका वास्तव में क्या मतलब है कि कोई भी _developer groupmember उपयोगकर्ता है, इसलिए आपका गैर-व्यवस्थापक उपयोगकर्ता / पासवर्ड यहां काम करेगा लेकिन इसे पूरी तरह से छुटकारा पाने के लिए (रिबूट के बाद कोई संकेत नहीं) आपको भी चलाने की आवश्यकता होगी:

sudo DevToolsSecurity -enable

(एक व्यवस्थापक उपयोगकर्ता के रूप में sudo के साथ इसे चलाने / जड़ के रूप में इसे बना देगा ताकि आप इसे बिना पासवर्ड पासवर्ड के दूरस्थ रूप से कर सकें)

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