我使用标准用户帐户在 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”权限。
解决这个问题的最佳方法是什么?
您需要将您的macOS
用户名添加到_developer
组中。有关更多信息,请参阅此线程中的帖子。以下命令应该可以解决问题:
sudo dscl . append /Groups/_developer GroupMembership <username>
DevToolsSecurity -enable
最后,我能够在终端上使用它来摆脱它。感谢@joar_at_work!
仅供参考:我在 Xcode 4.3 上,第一次启动时按下了禁用按钮,不要问为什么,只要假设我的狗让我这样做:)
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
您应该将自己添加到开发人员工具组。在 OS X 中将用户添加到组的一般语法如下:
sudo dscl . append /Groups/<group> GroupMembership <username>
我相信 DevTools 组的名称是_developer
.
Ned Deily 的解决方案工作得非常好,只要您的用户被允许sudo
.
如果他不是,您可以su
使用管理员帐户,然后使用 his 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
.
@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
可能不是很安全,但这是我们想出的最好的解决方法,允许测试运行而无需用户干预。
希望我能得到足够的分数来发布答案;或者,有人可以取消保护这个问题。问候。
我在雪豹上,这个对我不太有用。但以下程序有效:
对我来说,我发现以下线程中的建议有帮助:
它建议在终端应用程序中运行以下命令:
sudo /usr/sbin/DevToolsSecurity --enable
这是
Mac OS X 的一个更好的解决方案,希望在编译项目时使用系统钥匙串
- 打开钥匙串访问。
- 在左上角,解锁钥匙串(如果已锁定)。
- 从左上角选择系统钥匙串。
- 找到您的分发证书并单击披露三角形。
- 双击分发证书下的“私钥”。
- 在弹出窗口中,转到访问控制选项卡。
- 选择“允许所有应用程序访问此项目”。
- 保存更改。
- 关闭所有窗户。
- 运行应用程序。
运行后:
sudo dscl . append /Groups/_developer GroupMembership <username>
根据上面的答案,您可能仍会被提示输入您自己的密码:
我们需要管理员用户的授权才能运行调试器。这只会在每个登录会话中发生一次。
它的真正含义是任何_developer groupmember 用户,因此您的非管理员用户/密码将在这里工作,但要完全摆脱它(重新启动后没有提示),您还需要运行:
sudo DevToolsSecurity -enable
(以管理员用户身份使用 sudo 运行它/以 root 身份运行它,这样您就可以在没有 gui 密码提示的情况下远程执行它)