110

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

“在‘​​开发者工具’组中输入用户名和密码,以允许开发者工具访问进行更改”

虽然我知道管理员用户名/密码,但这很烦人(尽管每次登录只需要一次)。

开发者工具访问请求来自应用程序 gdb-i386-apple-darwin 的“system.privilege.taskport.debug”权限。

解决这个问题的最佳方法是什么?

4

10 回答 10

137

您需要将您的macOS用户名添加到_developer组中。有关更多信息,请参阅此线程中的帖子。以下命令应该可以解决问题:

sudo dscl . append /Groups/_developer GroupMembership <username>
于 2009-12-03T05:57:54.983 回答
24

DevToolsSecurity -enable最后,我能够在终端上使用它来摆脱它。感谢@joar_at_work

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

于 2012-02-20T22:34:18.230 回答
9
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
于 2009-12-03T05:58:16.560 回答
8

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

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

我相信 DevTools 组的名称是_developer.

于 2009-12-03T05:59:10.863 回答
4

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 groupuser is a member of the group.

于 2014-02-11T09:59:49.013 回答
2

@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

可能不是很安全,但这是我们想出的最好的解决方法,允许测试运行而无需用户干预。

希望我能得到足够的分数来发布答案;或者,有人可以取消保护这个问题。问候。

于 2013-04-19T16:34:12.010 回答
1

我在雪豹上,这个对我不太有用。但以下程序有效:

  1. 首先通过勾选帐户下的“允许用户管理此计算机”添加另一个具有管理员权限的帐户,例如具有用户名test的帐户
  2. 登录测试账号
  3. 启动 Xcode,编译并运行我的 iPhone 项目。一切正常,没有引发与权限相关的错误
  4. 退出测试账号
  5. 使用具有管理员权限的另一个帐户登录
  6. 通过删除帐户下的“允许用户管理此计算机”中的勾号,取消了测试帐户的管理员权限
  7. 重新登录到测试帐户
  8. 删除 iPhone 项目目录并再次从存储库中签出(在我的情况下为 svn)
  9. 启动 Xcode,编译并运行项目。我没有收到任何错误,并且该应用程序在 iPhone 模拟器中运行良好。
于 2010-03-25T14:26:35.933 回答
1

对我来说,我发现以下线程中的建议有帮助:

停止“开发人员工具访问需要控制另一个进程才能继续调试”警报

它建议在终端应用程序中运行以下命令:

sudo /usr/sbin/DevToolsSecurity --enable
于 2013-03-08T08:04:04.460 回答
1

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

  1. 打开钥匙串访问。
  2. 在左上角,解锁钥匙串(如果已锁定)。
  3. 从左上角选择系统钥匙串。
  4. 找到您的分发证书并单击披露三角形。
  5. 双击分发证书下的“私钥”。
  6. 在弹出窗口中,转到访问控制选项卡。
  7. 选择“允许所有应用程序访问此项目”。
  8. 保存更改。
  9. 关闭所有窗户。
  10. 运行应用程序。
于 2014-01-17T08:33:43.100 回答
0

运行后:

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

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

我们需要管理员用户的授权才能运行调试器。这只会在每个登录会话中发生一次。

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

sudo DevToolsSecurity -enable

(以管理员用户身份使用 sudo 运行它/以 root 身份运行它,这样您就可以在没有 gui 密码提示的情况下远程执行它)

于 2012-08-15T22:23:31.960 回答