Ủy quyền cho nhà phát triển không phải quản trị viên trong Xcode / Mac OS


109

Tôi sử dụng tài khoản người dùng tiêu chuẩn cho các tác vụ hàng ngày của mình trên Mac OS. Kể từ khi nâng cấp lên Snow Leopard, tôi được yêu cầu thực hiện những việc sau khi một chương trình được chạy từ bên trong Xcode:

"Nhập tên và mật khẩu của người dùng trong nhóm 'Công cụ dành cho nhà phát triển' để cho phép Quyền truy cập vào Công cụ dành cho nhà phát triển thực hiện thay đổi"

Mặc dù tôi biết tên người dùng / mật khẩu quản trị viên, nhưng điều này thật khó chịu (mặc dù chỉ yêu cầu một lần cho mỗi lần đăng nhập).

Quyền truy cập vào công cụ dành cho nhà phát triển đang yêu cầu quyền đối với "system.privilege.taskport.debug" từ ứng dụng gdb-i386-apple-darwin.

Cách tốt nhất để giải quyết vấn đề này là gì?

Câu trả lời:


134

Bạn cần thêm tên người dùng OS X của mình vào _developernhóm. Xem các bài viết trong chủ đề này để biết thêm thông tin. Lệnh sau sẽ thực hiện thủ thuật:

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

1
Giải pháp này đã hoạt động với tôi trong khoảng 10 phút, và sau đó vì một số lý do, nó bắt đầu yêu cầu lại tên người dùng / mật khẩu của tôi. Tôi đã thử nhập lại nó vào Terminal nhưng nó không còn phản hồi nữa.
jowie

Điều này phù hợp với tôi và tôi không có vấn đề gì cho đến bây giờ. Ghi chú chỉ để tham khảo.
eonil.

9
Giải pháp này không hoạt động với tôi cho đến khi tôi thêm -u <name-of-account-with-root-access>vào các tùy chọn. Vì vậy, lệnh đầy đủ của tôi làdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg

1
Bạn nên cân nhắc sử dụng 'hợp nhất' thay vì 'nối thêm' nếu bạn thêm dòng này vào tập lệnh tích hợp liên tục. Hợp nhất sẽ không thêm nó nếu nó đã tồn tại. Xem 'man dscl' để biết thêm chi tiết.
Russ Van Bert

1
Điều này đã làm việc để thêm tôi vào nhóm nhưng chỉ sau khi tôi sử dụng đề xuất @Kheldar để chuyển vào tài khoản gốc trước.
b01

24

Cuối cùng, tôi đã có thể loại bỏ nó bằng cách sử dụng DevToolsSecurity -enabletrên Terminal. Cảm ơn @joar_at_work !

FYI : Tôi đang sử dụng Xcode 4.3 và đã nhấn nút tắt khi nó khởi chạy lần đầu tiên, đừng hỏi tại sao, hãy cứ cho là con chó của tôi đã bắt tôi làm điều đó :)


2
+1 khi đề cập đến DevToolsSecurity. Tôi không biết một công cụ như vậy tồn tại. Tôi đã gặp vấn đề ngược lại, tôi muốn vô hiệu hóa nó một lần nữa và nhờ công cụ này cuối cùng tôi đã có thể :) Chỉ cần thay thế -enablebằng -disablevà điều đó hoạt động như mong đợi!
Mecki

1
Lệnh này dường như không có tác dụng gì cả. Xcode 4.3 vẫn yêu cầu xác thực từ người nào đó trong nhóm _developer bất kể -enable hay -disable được sử dụng.
wcochran

Chỉ cần làm rõ, bước này là, ít nhất là trong một số trường hợp, ngoài việc để thêm người dùng vào nhóm _developer vớidscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

Có vẻ như không hoạt động trên macOS "El Capitan" với XCode 7.3. Giải pháp của @ Kheldar phù hợp với tôi.
Laryx Decidua

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

5
Theo ý kiến ​​khiêm tốn của tôi, câu trả lời này thực sự có thể có lợi khi giải thích thêm một chút về những gì nó làm. Không phải tôi không thích gõ sudo rm -rf / trên hệ thống của mình, nhưng bạn hiểu ý tôi. : D
Kheldar

8

Bạn nên thêm mình vào nhóm Công cụ dành cho nhà phát triển. Cú pháp chung để thêm người dùng vào một nhóm trong OS X như sau:

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

Tôi tin rằng tên của nhóm DevTools là _developer.


3

Giải pháp của Ned Deily hoạt động hoàn toàn tốt, miễn là người dùng của bạn được phép sudo.

Nếu không, bạn có thể suvào tài khoản quản trị, sau đó sử dụng tài khoản của anh ấy dscl . append /Groups/_developer GroupMembership $user, trong đó $ user là tên người dùng.

Tuy nhiên, tôi đã nhầm tưởng không phải vì tôi đã nhập sai tên người dùng trong lệnh và nó âm thầm không thành công.

Do đó, sau khi nhập lệnh này, bạn nên kiểm tra bằng chứng. Thao tác này sẽ kiểm tra xem $ user có thuộc nhóm $ hay không, trong đó các biến đại diện tương ứng là tên người dùng và tên nhóm.

dsmemberutil checkmembership -U $user -G $group

Lệnh này sẽ in thông báo user is not a member of the grouphoặc user is a member of the group.


2
Cảm ơn! Điều này đã làm việc cho tôi! Các lệnh mà làm việc cho OS X Mavericks đã dscl . append /Groups/_developer GroupMembership username dsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode

2

Câu trả lời do @Stacy Simpson đề xuất:

Chúng tôi đang đấu tranh với sự cố được mô tả trong các chuỗi này và không có giải pháp nào có vẻ hoạt động:

Vì tôi là người mới tham gia SO, tôi không thể đăng trong cả hai chủ đề. (Cái đầu tiên thực sự đã bị đóng và tôi không đồng ý với lý do bản địa hóa ...)

Dù sao đi nữa, chúng tôi đã tạo một hoạt động xoay quanh bằng AppleScript mà mọi người có thể quan tâm. Tập lệnh dưới đây phải được thực thi không đồng bộ trước khi khởi chạy thử nghiệm tự động của bạn:

osascript <script name> <password> &

Đây là kịch bản:

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

Có thể không an toàn lắm, nhưng đó là giải pháp tốt nhất mà chúng tôi đã đưa ra để cho phép các thử nghiệm chạy mà không cần sự can thiệp của người dùng.

Hy vọng rằng tôi có thể đủ điểm để đăng câu trả lời; hoặc, ai đó có thể bỏ bảo vệ câu hỏi này. Trân trọng.


2

Đây là một giải pháp tốt hơn từ
Mac OS X muốn sử dụng chuỗi khóa hệ thống khi biên dịch dự án

  1. Mở Quyền truy cập chuỗi khóa.
  2. Ở góc trên bên trái, mở khóa chuỗi khóa (nếu chuỗi khóa bị khóa).
  3. Chọn chuỗi khóa Hệ thống từ góc trên bên trái.
  4. Tìm chứng chỉ phân phối của bạn và nhấp vào hình tam giác tiết lộ.
  5. Nhấp đúp vào 'Khóa riêng tư' bên dưới chứng chỉ phân phối của bạn.
  6. Trong cửa sổ bật lên, hãy chuyển đến tab Kiểm soát truy cập.
  7. Chọn 'Cho phép tất cả các ứng dụng truy cập vào mục này'.
  8. Lưu các thay đổi.
  9. Đóng tất cả các cửa sổ.
  10. Chạy ứng dụng.


1

Tôi đang sử dụng Snow Leopard và điều này không phù hợp với tôi. Nhưng quy trình sau đã hoạt động:

  1. Trước tiên, đã thêm một tài khoản khác có đặc quyền quản trị viên bằng cách chọn "Cho phép người dùng quản trị máy tính này" trong Tài khoản, ví dụ: tài khoản có kiểm tra tên người dùng
  2. Đã đăng nhập vào tài khoản thử nghiệm
  3. Khởi chạy Xcode, biên dịch và chạy dự án iPhone của tôi. Tất cả đều ổn, không có lỗi nào liên quan đến quyền
  4. Đăng xuất khỏi tài khoản thử nghiệm
  5. Đăng nhập bằng tài khoản khác có đặc quyền quản trị viên
  6. Bỏ quyền quản trị viên khỏi tài khoản thử nghiệm bằng cách bỏ dấu tích khỏi "Cho phép người dùng quản trị máy tính này" trong Tài khoản
  7. Đã đăng nhập lại vào tài khoản thử nghiệm
  8. Đã xóa thư mục dự án iPhone và kiểm tra lại khỏi kho lưu trữ (trong trường hợp của tôi là svn)
  9. Khởi chạy Xcode, biên dịch và chạy dự án. Tôi không gặp bất kỳ lỗi nào và Ứng dụng chạy tốt trong Trình mô phỏng iPhone.

0

Sau khi bạn chạy:

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

theo câu trả lời ở trên, bạn vẫn có thể được nhắc nhập mật khẩu của riêng mình:

Chúng tôi cần sự ủy quyền từ người dùng quản trị để chạy trình gỡ lỗi. Điều này sẽ chỉ xảy ra một lần cho mỗi phiên đăng nhập.

Ý nghĩa của nó thực sự là bất kỳ người dùng nào thuộc nhóm _developer, vì vậy chỉ người dùng / mật khẩu không phải quản trị viên của bạn sẽ hoạt động ở đây nhưng để loại bỏ nó hoàn toàn (không có lời nhắc sau khi khởi động lại) bạn cũng cần chạy:

sudo DevToolsSecurity -enable

(chạy nó với sudo với tư cách là người dùng quản trị / với tư cách là người chủ sẽ làm cho nó để bạn có thể làm điều đó từ xa mà không cần lời nhắc mật khẩu gui)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.