อนุญาตผู้พัฒนาที่ไม่ใช่ผู้ดูแลระบบใน Xcode / Mac OS


109

ฉันใช้บัญชีผู้ใช้มาตรฐานสำหรับงานประจำวันของฉันบน Mac OS ตั้งแต่อัปเกรดเป็น Snow Leopard ฉันถูกขอให้ทำสิ่งต่อไปนี้เมื่อเรียกใช้โปรแกรมจากภายใน Xcode:

"พิมพ์ชื่อและรหัสผ่านของผู้ใช้ในกลุ่ม" เครื่องมือสำหรับนักพัฒนา "เพื่ออนุญาตให้การเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ทำการเปลี่ยนแปลง"

แม้ว่าฉันจะรู้ชื่อผู้ใช้ / รหัสผ่านของผู้ดูแลระบบ แต่ก็น่ารำคาญ (แม้ว่าจะต้องการเพียงครั้งเดียวต่อการเข้าสู่ระบบ)

การเข้าถึงเครื่องมือสำหรับนักพัฒนากำลังขอสิทธิ์ "system.privilege.taskport.debug" จากแอปพลิเคชัน gdb-i386-apple-darwin

วิธีที่ดีที่สุดคืออะไร?

คำตอบ:


134

คุณต้องเพิ่มชื่อผู้ใช้ OS X ของคุณใน_developerกลุ่ม ดูโพสต์ในหัวข้อนี้สำหรับข้อมูลเพิ่มเติม คำสั่งต่อไปนี้ควรทำเคล็ดลับ:

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

1
วิธีนี้ใช้ได้ผลสำหรับฉันประมาณ 10 นาทีจากนั้นด้วยเหตุผลบางอย่างมันก็เริ่มถามชื่อผู้ใช้ / รหัสผ่านของฉันอีกครั้ง ฉันลองพิมพ์ลงใน Terminal อีกครั้ง แต่มันไม่ตอบสนองอีกต่อไป
jowie

สิ่งนี้ใช้ได้กับฉันและฉันก็ไม่มีปัญหาจนถึงตอนนี้ สังเกตเพียงเพื่อการอ้างอิง
eonil

9
วิธีนี้ใช้ไม่ได้ผลสำหรับฉันจนกว่าฉัน-u <name-of-account-with-root-access>จะเพิ่มตัวเลือก ดังนั้นคำสั่งเต็มของฉันคือdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg

1
คุณควรพิจารณาใช้ "ผสาน" แทน "ผนวก" หากคุณเพิ่มบรรทัดนี้ลงในสคริปต์การรวมแบบต่อเนื่อง การผสานจะไม่เพิ่มหากมีอยู่แล้ว ดู 'man dscl' สำหรับรายละเอียดเพิ่มเติม
Russ Van Bert

1
สิ่งนี้ได้ผลเพื่อเพิ่มฉันในกลุ่ม แต่หลังจากที่ฉันใช้คำแนะนำ @Kheldar เพื่อ su ในบัญชีรูทก่อน
b01

24

ในที่สุดฉันก็สามารถกำจัดมันได้โดยใช้DevToolsSecurity -enableTerminal ขอบคุณ@joar_at_work !

FYI : ฉันใช้ Xcode 4.3 และกดปุ่มปิดการใช้งานเมื่อเปิดตัวครั้งแรกอย่าถามว่าทำไมสมมติว่าสุนัขของฉันทำให้ฉันทำ :)


2
+1 สำหรับการกล่าวถึง DevToolsSecurity ฉันไม่รู้เลยว่ามีเครื่องมือแบบนี้อยู่ ฉันมีปัญหาตรงข้ามฉันต้องการปิดการใช้งานอีกครั้งและต้องขอบคุณเครื่องมือนี้ในที่สุดฉันก็สามารถ :) แทนที่-enableด้วย-disableและทำงานได้ตามที่คาดไว้!
Mecki

1
คำสั่งนี้ดูเหมือนจะไม่มีผลเลย Xcode 4.3 ยังคงต้องการการรับรองความถูกต้องจากบุคคลในกลุ่ม _developer ไม่ว่าจะใช้ -enable หรือ -disable ก็ตาม
wcochran

เพื่อชี้แจงขั้นตอนนี้คืออย่างน้อยในบางกรณีนอกเหนือจากการเพิ่มผู้ใช้ในกลุ่ม _developer ด้วยdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

ดูเหมือนจะไม่ทำงานบน macOS "El Capitan" กับ XCode 7.3 โซลูชันของ @ Kheldar ใช้ได้ผลสำหรับฉัน
Laryx Decidua

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

5
ในความเห็นที่ต่ำต้อยของฉันคำตอบนี้จะได้รับประโยชน์จากการอธิบายเพิ่มเติมว่ามันทำอะไร ไม่ใช่ว่าฉันไม่ชอบพิมพ์ sudo rm -rf / ในระบบของฉัน แต่คุณเข้าใจตรงกัน : D
Kheldar

8

คุณควรเพิ่มตัวเองในกลุ่มเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ ไวยากรณ์ทั่วไปสำหรับการเพิ่มผู้ใช้ในกลุ่มใน OS X มีดังนี้:

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

ผมเชื่อว่าชื่อของกลุ่ม DevTools _developerคือ


3

โซลูชันของ Ned Deily ทำงานได้ดีอย่างสมบูรณ์หากผู้ใช้ของคุณได้รับอนุญาต sudoทำงานสมบูรณ์ดีให้ผู้ใช้ของคุณได้รับอนุญาตให้

หากไม่ใช่คุณสามารถsuไปที่บัญชีผู้ดูแลระบบจากนั้นใช้ไฟล์dscl . append /Groups/_developer GroupMembership $userโดยที่ $ user เป็นชื่อผู้ใช้

อย่างไรก็ตามฉันเข้าใจผิดคิดว่ามันไม่ได้เป็นเพราะฉันพิมพ์ชื่อผู้ใช้ผิดในคำสั่งและมันก็ล้มเหลวอย่างเงียบ ๆ

ดังนั้นหลังจากป้อนคำสั่งนี้คุณควรตรวจสอบหลักฐาน สิ่งนี้จะตรวจสอบว่า $ user อยู่ใน $ group หรือไม่โดยที่ตัวแปรแสดงชื่อผู้ใช้และชื่อกลุ่มตามลำดับ

dsmemberutil checkmembership -U $user -G $group

คำสั่งนี้จะพิมพ์ข้อความuser is not a member of the groupหรือuser is a member of the group.


2
ขอบคุณ! สิ่งนี้ได้ผลสำหรับฉัน! คำสั่งที่ใช้ได้กับ OS X Mavericks คือdscl . append /Groups/_developer GroupMembership username และdsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode

2

คำตอบที่แนะนำโดย @Stacy Simpson:

เรากำลังดิ้นรนกับปัญหาที่อธิบายไว้ในชุดข้อความเหล่านี้และดูเหมือนว่าวิธีแก้ปัญหาจะไม่ได้ผล:

เนื่องจากฉันเพิ่งเริ่มใช้ 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

นี่คือทางออกที่ดีกว่าจาก
Mac OS X ต้องการใช้พวงกุญแจระบบเมื่อรวบรวมโปรเจ็กต์

  1. เปิดการเข้าถึงพวงกุญแจ
  2. ที่มุมบนซ้ายให้ปลดล็อกพวงกุญแจ (หากล็อกอยู่)
  3. เลือกพวงกุญแจระบบจากมุมบนซ้าย
  4. ค้นหาใบรับรองการแจกจ่ายของคุณแล้วคลิกสามเหลี่ยมเปิดเผยข้อมูล
  5. ดับเบิลคลิก 'คีย์ส่วนตัว' ใต้ใบรับรองการแจกจ่ายของคุณ
  6. ในป๊อปอัปไปที่แท็บ Access Control
  7. เลือก 'อนุญาตให้แอปพลิเคชันทั้งหมดเข้าถึงรายการนี้'
  8. บันทึกการเปลี่ยนแปลง
  9. ปิดหน้าต่างทั้งหมด
  10. เรียกใช้แอปพลิเคชัน

1

สำหรับฉันฉันพบว่าข้อเสนอแนะในหัวข้อต่อไปนี้ช่วยได้:

หยุด "การเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์จำเป็นต้องควบคุมกระบวนการอื่นในการแก้ไขข้อบกพร่องเพื่อดำเนินการต่อ" การแจ้งเตือน

แนะนำให้รันคำสั่งต่อไปนี้ในแอปพลิเคชันTerminal :

sudo /usr/sbin/DevToolsSecurity --enable

1

ฉันอยู่ใน Snow Leopard และอันนี้ไม่ค่อยเหมาะกับฉัน แต่ขั้นตอนต่อไปนี้ใช้ได้ผล:

  1. ขั้นแรกให้เพิ่มบัญชีอื่นที่มีสิทธิ์ระดับผู้ดูแลระบบโดยทำเครื่องหมายที่ "อนุญาตให้ผู้ใช้ดูแลคอมพิวเตอร์เครื่องนี้" ภายใต้บัญชีเช่นบัญชีที่มีการทดสอบชื่อผู้ใช้
  2. ลงชื่อเข้าใช้บัญชีทดสอบ
  3. เปิดตัว Xcode รวบรวมและดำเนินโครงการ iPhone ของฉัน ตกลงไม่มีข้อผิดพลาดใด ๆ ที่เกี่ยวข้องกับสิทธิ์
  4. ออกจากระบบบัญชีทดสอบ
  5. เข้าสู่ระบบด้วยบัญชีอื่นที่มีสิทธิ์ระดับผู้ดูแลระบบ
  6. นำสิทธิ์ผู้ดูแลระบบออกไปจากบัญชีทดสอบโดยลบเครื่องหมายออกจาก "อนุญาตให้ผู้ใช้ดูแลคอมพิวเตอร์เครื่องนี้" ในบัญชี
  7. กลับเข้าสู่บัญชีทดสอบ
  8. ลบไดเร็กทอรีโปรเจ็กต์ iPhone และเช็คเอาต์อีกครั้งจากที่เก็บ (ในกรณีของฉัน svn)
  9. เปิดตัว Xcode รวบรวมและรันโครงการ ฉันไม่ได้รับข้อผิดพลาดใด ๆ และแอปทำงานได้ดีใน iPhone Simulator

0

หลังจากที่คุณเรียกใช้:

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

ตามคำตอบข้างต้นคุณอาจยังคงได้รับแจ้งให้ป้อนรหัสผ่านของคุณเอง:

เราต้องการการอนุญาตจากผู้ใช้ที่เป็นผู้ดูแลระบบเพื่อเรียกใช้โปรแกรมแก้ไขข้อบกพร่อง สิ่งนี้จะเกิดขึ้นเพียงครั้งเดียวต่อเซสชันการเข้าสู่ระบบ

ความหมายจริงๆคือผู้ใช้_developer groupmember ดังนั้นผู้ใช้ / รหัสผ่านที่ไม่ใช่ผู้ดูแลระบบของคุณจะทำงานได้ที่นี่ แต่ในการกำจัดมันให้หมด (ไม่ต้องแจ้งหลังจากรีบูต) คุณจะต้องเรียกใช้:

sudo DevToolsSecurity -enable

(เรียกใช้ด้วย sudo ในฐานะผู้ใช้ผู้ดูแลระบบ / เนื่องจากรูทจะทำให้คุณสามารถทำได้จากระยะไกลโดยไม่ต้องแจ้งรหัสผ่าน gui)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.