我在Mac OS上的日常任务中使用标准用户帐户。自从升级到Snow Leopard以来,从Xcode中运行程序时,我被要求做以下事情:
“在“开发人员工具”组中键入用户的名称和密码,以允许开发人员工具访问权限进行更改”
虽然我知道管理员用户名/密码,但这很烦人(尽管每次登录只需要一次)。
开发人员工具访问权限要求从应用程序gdb-i386-apple-darwin获得“ system.privilege.taskport.debug”的权限。
最好的办法是什么?
我在Mac OS上的日常任务中使用标准用户帐户。自从升级到Snow Leopard以来,从Xcode中运行程序时,我被要求做以下事情:
“在“开发人员工具”组中键入用户的名称和密码,以允许开发人员工具访问权限进行更改”
虽然我知道管理员用户名/密码,但这很烦人(尽管每次登录只需要一次)。
开发人员工具访问权限要求从应用程序gdb-i386-apple-darwin获得“ system.privilege.taskport.debug”的权限。
最好的办法是什么?
Answers:
您需要将OS X用户名添加到_developer
组中。有关更多信息,请参见此主题中的帖子。以下命令可以解决问题:
sudo dscl . append /Groups/_developer GroupMembership <username>
-u <name-of-account-with-root-access>
选项之前,此解决方案对我不起作用。所以我的全部命令是dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
最后,我能够DevToolsSecurity -enable
在Terminal上使用它来摆脱它。感谢@joar_at_work!
仅供参考:我正在使用Xcode 4.3,并且在第一次启动时按下了禁用按钮,不要问为什么,只要假设我的狗让我这样做就可以了:)
-enable
为-disable
和,它按预期工作!
dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
只要您的用户被允许,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
。
dscl . append /Groups/_developer GroupMembership username
和dsmemberutil checkmembership -U "username goes here" -G "group goes here"
@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
可能不是很安全,但这是我们想出的最好的变通办法,可以在不需要用户干预的情况下运行测试。
希望我能获得足够的分数来发布答案;或者,有人可以取消保护此问题。问候。
这是Mac OS X更好的解决方案,
希望在编译项目时使用系统钥匙串
- 打开钥匙串访问。
- 在左上角,解锁钥匙串(如果已锁定)。
- 从左上角选择系统钥匙串。
- 找到您的发行证书,然后单击披露三角形。
- 双击分发证书下的“私钥”。
- 在弹出窗口中,转到“访问控制”选项卡。
- 选择“允许所有应用程序访问此项目”。
- 保存更改。
- 关闭所有窗口。
- 运行应用程序。
对我来说,我发现以下主题中的建议有所帮助:
停止“开发人员工具访问需要控制另一个过程以进行调试以继续”警报
建议在终端应用程序中运行以下命令:
sudo /usr/sbin/DevToolsSecurity --enable
我在Snow Leopard上,这辆车对我来说不太好。但是,以下过程有效:
运行后:
sudo dscl . append /Groups/_developer GroupMembership <username>
根据以上答案,您可能仍然会被提示输入自己的密码:
我们需要管理员用户的授权才能运行调试器。每个登录会话只会发生一次。
真正的含义是任何_developer组成员用户,因此只有您的非管理员用户/密码可以在这里使用,但是要完全摆脱它(重新启动后无提示),您还需要运行:
sudo DevToolsSecurity -enable
(以sudo作为管理员用户/以root用户身份运行它可以使它运行,因此您可以在没有gui密码提示的情况下进行远程操作)