授权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希望使用系统钥匙串
- 打开钥匙串访问。
- 在左上angular,解锁钥匙链(如果已locking)。
- 从左上angularselect系统钥匙串。
- find您的分配证书并点击显示三angular形。
- 双击分发证书下的“私钥”。
- 在popup窗口中,转到“访问控制”选项卡。
- select“允许所有应用程序访问此项目”。
- 保存更改。
- closures所有窗口。
- 运行应用程序。
我在雪豹,这一个不适合我。 但以下程序起作用:
- 首先在帐户下勾选“允许用户pipe理此计算机”,然后添加具有pipe理员权限的另一个帐户,例如使用用户名testing的帐户
- login到testing帐户
- 启动Xcode,编译并运行我的iPhone项目。 一切都好,没有任何错误与权限有关
- 退出testing帐户
- 使用具有pipe理员权限的另一个帐户login
- 通过删除帐户下的“允许用户pipe理此计算机”中的勾号,从testing帐户中删除pipe理员特权
- 重新login到testing帐户
- 删除iPhone项目目录,再次从存储库中检出(在我的情况下svn)
- 启动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