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


109

我在Mac OS上的日常任务中使用标准用户帐户。自从升级到Snow Leopard以来,从Xcode中运行程序时,我被要求做以下事情:

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

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

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

最好的办法是什么?

Answers:


134

您需要将OS X用户名添加到_developer组中。有关更多信息,请参见此主题中的帖子。以下命令可以解决问题:

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

1
该解决方案为我工作了大约10分钟,然后由于某种原因,它开始再次询问我的用户名/密码。我尝试再次将其键入Terminal,但不再响应。
jowie 2012年

这对我有用,直到现在我都没有问题。仅供参考。
2013年

9
在添加-u <name-of-account-with-root-access>选项之前,此解决方案对我不起作用。所以我的全部命令是dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg 2013年

1
如果将此行添加到连续集成脚本中,则应考虑使用“合并”而不是“追加”。如果已经存在,合并将不会添加它。有关更多详细信息,请参见'man dscl'。
Russ Van Bert 2014年

1
这有助于将我添加到该组,但前提是我先使用@Kheldar建议将su设置为root帐户。
b01

24

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

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


2
+1代表提及DevToolsSecurity。我不知道是否存在这样的工具。我遇到了相反的问题,我想再次禁用它,多亏有了这个工具,我终于能够:)替换-enable-disable和,它按预期工作!
Mecki 2012年

1
该命令似乎根本没有作用。无论使用-enable还是-disable,Xcode 4.3仍然需要_developer组中某人的身份验证。
wcochran

只是为了澄清,这一步是,至少在某些情况下,除了与将用户添加到该组_developerdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

似乎在使用XCode 7.3的macOS“ El Capitan”上不起作用。@Kheldar的解决方案为我工作。
Laryx Decidua

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

5
以我的拙见,这个答案确实可以从更多的解释中受益。这并不是说我不喜欢在系统上键入sudo rm -rf /,但是您理解了我的意思。:D
Kheldar 2014年

8

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

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

我相信DevTools组的名称是_developer


3

只要您的用户被允许,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 groupuser is a member of the group


2
谢谢!这对我有用!对于OS X小牛队工作的命令是dscl . append /Groups/_developer GroupMembership username dsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode

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

可能不是很安全,但这是我们想出的最好的变通办法,可以在不需要用户干预的情况下运行测试。

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


2

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

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


1

我在Snow Leopard上,这辆车对我来说不太好。但是,以下过程有效:

  1. 首先通过选中“帐户”下的“允许用户管理此计算机”,添加另一个具有管理员特权的帐户,例如,使用用户名测试的帐户
  2. 登录测试帐号
  3. 启动Xcode,编译并运行我的iPhone项目。好的,没有引发与权限有关的错误
  4. 注销测试帐户
  5. 使用具有管理员权限的另一个帐户登录
  6. 通过删除“帐户”下“允许用户管理这台计算机”中的对勾,取消测试帐户的管理员特权
  7. 重新登录测试帐户
  8. 删除iPhone项目目录,然后再次从存储库中签出(在我的情况下为svn)
  9. 启动Xcode,编译并运行该项目。我没有收到任何错误,该应用程序在iPhone模拟器中运行良好。

0

运行后:

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

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

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

真正的含义是任何_developer组成员用户,因此只有您的非管理员用户/密码可以在这里使用,但是要完全摆脱它(重新启动后无提示),您还需要运行:

sudo DevToolsSecurity -enable

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.