授权Xcode / Mac OS中的非pipe理员开发人员

我在Mac OS上为我的日常任务使用标准用户帐户。 自从升级到Snow Leopard后,我要求在Xcode中运行程序时执行以下操作:

“在”开发人员工具“组中键入用户的名称和密码以允许开发人员工具访问进行更改”

虽然我知道pipe理员用户名/密码,这是讨厌(虽然只需要每次login一次)。

开发人员工具访问权限是从应用程序gdb-i386-apple-darwin向“system.privilege.taskport.debug”请求权限。

什么是最好的方法呢?

您需要将您的OS X用户名添加到_developer组。 请参阅此主题中的post以获取更多信息。 下面的命令应该做的伎俩:

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

最后,我可以使用terminal上的DevToolsSecurity -enable来摆脱它。 感谢@ joar_at_work !

仅供参考 :我在Xcode 4.3上,当它第一次启动时按下禁用button,不要问为什么,只是假设我的狗让我这样做:)

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

您应该将自己添加到开发人员工具组。 将用户添加到OS X中的一般语法如下:

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

我相信DevTools组的名字是_developer

Ned Deily的解决scheme工作得很好,只要你的用户被允许sudo

如果他没有,你可以su到一个pipe理员帐户,然后使用他的dscl . append /Groups/_developer GroupMembership $user dscl . append /Groups/_developer GroupMembership $user ,其中$ user是用户名。

不过,我错误地认为这并不是因为我在命令中错误地键入了用户名,而是默默地失败了。

因此,在input这​​个命令之后,你应该对它进行certificate检查。 这将检查$ user是否在$ group中,其中variables分别表示用户名和组名。

 dsmemberutil checkmembership -U $user -G $group 

此命令将打印消息user is not a member of the group或者user is a member of the group

回答@Stacy Simpsonbuild议:

我们正在与这些线程中描述的问题斗争,并没有任何决议似乎工作:

  • 停止“开发人员工具访问需要控制另一个进程进行debugging以继续”提醒
  • 授权Xcode / Mac OS中的非pipe理员开发人员

因为我是新来的,所以我不能在任何一个线程中发帖。 (第一个实际上是封闭的,我不同意本地化推理…)

无论如何,我们使用AppleScript创build了一个可以让人感兴趣的解决方法。下面的脚本应该在启动自动化testing之前asynchronous执行:

 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 

可能不太安全,但是这是我们提出的最好的解决方法,以便在不需要用户干预的情况下运行testing。

希望能得到足够的观点来回答问题。 或者,有人可以解除这个问题。 问候。

这里是一个更好的解决scheme
编译项目时,Mac OS X希望使用系统钥匙串

  1. 打开钥匙串访问。
  2. 在左上angular,解锁钥匙链(如果已locking)。
  3. 从左上angularselect系统钥匙串。
  4. find您的分配证书并点击显示三angular形。
  5. 双击分发证书下的“私钥”。
  6. 在popup窗口中,转到“访问控制”选项卡。
  7. select“允许所有应用程序访问此项目”。
  8. 保存更改。
  9. closures所有窗口。
  10. 运行应用程序。

我在雪豹,这一个不适合我。 但以下程序起作用:

  1. 首先在帐户下勾选“允许用户pipe理此计算机”,然后添加具有pipe理员权限的另一个帐户,例如使用用户名testing的帐户
  2. login到testing帐户
  3. 启动Xcode,编译并运行我的iPhone项目。 一切都好,没有任何错误与权限有关
  4. 退出testing帐户
  5. 使用具有pipe理员权限的另一个帐户login
  6. 通过删除帐户下的“允许用户pipe理此计算机”中的勾号,从testing帐户中删除pipe理员特权
  7. 重新login到testing帐户
  8. 删除iPhone项目目录,再次从存储库中检出(在我的情况下svn)
  9. 启动Xcode,编译并运行该项目。 我没有得到任何的错误和应用程序在iPhone模拟器运行良好。

运行后:

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

根据上面的答案,您仍然可能会被提示input您自己的密码:

我们需要pipe理员用户的授权来运行debugging器。 这只会在每个login会话中发生一次。

它的真正含义是任何_developer组成员用户,只要你的非pipe理员用户/密码在这里工作,但完全摆脱它(重新启动后没有提示),你还需要运行:

 sudo DevToolsSecurity -enable 

(使用sudo作为admin用户/以root用户身份运行它,以便您可以在没有gui密码提示的情况下远程执行此操作)

对于我来说,我在下面的线索中发现了这个build议:

停止“开发人员工具访问需要控制另一个进程进行debugging以继续”提醒

它build议在terminal应用程序中运行以下命令:

 sudo /usr/sbin/DevToolsSecurity --enable