Xcode / Mac OS에서 관리자가 아닌 개발자에게 권한 부여


109

Mac OS에서 일상적인 작업에 표준 사용자 계정을 사용합니다. Snow Leopard로 업그레이드 한 후 Xcode 내에서 프로그램을 실행할 때 다음을 수행해야합니다.

" '개발자 도구'그룹에있는 사용자의 이름과 비밀번호를 입력하여 개발자 도구 액세스 권한을 통해 변경할 수 있습니다."

관리자 사용자 이름 / 암호를 알고 있지만 이것은 성가신 일입니다 (로그인 당 한 번만 필요함).

개발자 도구 액세스는 애플리케이션 gdb-i386-apple-darwin에서 "system.privilege.taskport.debug"에 대한 권한을 요청합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변:


134

OS X 사용자 이름을 _developer그룹 에 추가해야합니다 . 자세한 내용은 이 스레드 의 게시물 을 참조하십시오. 다음 명령이 트릭을 수행해야합니다.

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
연속 통합 스크립트에이 줄을 추가하는 경우 '추가'대신 '병합'사용을 고려해야합니다. Merge는 이미 존재하는 경우 추가하지 않습니다. 자세한 내용은 'man dscl'을 참조하십시오.
Russ Van Bert

1
이것은 나를 그룹에 추가하는 데 도움이되었지만 @Kheldar 제안을 사용하여 먼저 루트 계정에 su를 사용한 후에 만 ​​작동했습니다.
b01 2017-10-26

24

마지막으로 DevToolsSecurity -enable터미널에서 제거 할 수있었습니다 . @joar_at_work 에게 감사드립니다 !

참고 : 나는 Xcode 4.3을 사용 중이며 처음 시작할 때 비활성화 버튼을 눌렀습니다. 왜 그런지 묻지 말고 내 강아지가 나를했다고 가정하십시오 :)


2
DevToolsSecurity를 ​​언급하면 ​​+1. 나는 그러한 도구가 존재하는지 전혀 몰랐다. 나는 반대 문제가 있었고 다시 비활성화하고 싶었고이 도구 덕분에 마침내 가능했습니다 :) 방금 교체했습니다.-enable 함께 -disable예상대로 작동하고 있음을!
Mecki

1
이 명령은 전혀 효과가없는 것 같습니다. Xcode 4.3은 -enable 또는 -disable의 사용 여부에 관계없이 _developer 그룹의 누군가로부터 인증을 받아야합니다.
wcochran

바로이 단계가 어떤 경우에는 적어도,이다, 명확하게 뿐만 아니라 _developer의 그룹에 사용자를 추가하는dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy을

XCode 7.3이 설치된 macOS "El Capitan"에서 작동하지 않는 것 같습니다. @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"
같았습니다.

2

@Stacy Simpson이 제안한 답변 :

이 스레드에 설명 된 문제로 어려움을 겪고 있으며 해결 방법이 작동하지 않는 것 같습니다.

나는 처음이므로 어느 스레드에도 게시 할 수 없습니다. (첫 번째는 실제로 닫혀 있으며 현지화 추론에 동의하지 않습니다 ...)

어쨌든, 우리는 사람들이 관심을 가질만한 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. 팝업에서 액세스 제어 탭으로 이동합니다.
  7. '모든 애플리케이션이이 항목에 액세스하도록 허용'을 선택합니다.
  8. 변경 사항을 저장하십시오.
  9. 모든 창을 닫습니다.
  10. 응용 프로그램을 실행하십시오.


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.