Авторизовать разработчика, не являющегося администратором, в Xcode/Mac OS

Я использую стандартную учетную запись пользователя для своих ежедневных задач в Mac OS. Начиная с обновления до Snow Leopard, я прошу сделать следующее, когда программа запускается из Xcode:

"Введите имя и пароль пользователя в группе" Инструменты разработчика ", чтобы разрешить доступ к средствам разработчика для изменений"

Пока я знаю имя пользователя/пароль администратора, это раздражает (хотя требуется только один раз для входа в систему).

Доступ к инструментам разработчика запрашивает права на "system.privilege.taskport.debug" из приложения gdb-i386-apple-darwin.

Как лучше всего это сделать?

Ответ 1

Вам нужно добавить имя пользователя OS X в группу _developer. См. Сообщения в этот поток для получения дополнительной информации. Следующая команда должна выполнить трюк:

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

Ответ 2

Наконец, я смог избавиться от него, используя DevToolsSecurity -enable в терминале. Благодаря @joar_at_work!

FYI: я нахожусь на Xcode 4.3 и нажал кнопку отключить при первом запуске, не спрашивайте, почему, просто предположите, что моя собака сделана я делаю это:)

Ответ 3

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

Ответ 4

Вы должны добавить себя в группу Developer Tools. Общий синтаксис добавления пользователя в группу в OS X выглядит следующим образом:

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

Я считаю, что имя группы DevTools - _developer.

Ответ 5

Решение 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.

Ответ 6

Ответ, предложенный @Stacy Simpson:

Мы боремся с проблемой, описанной в этих потоках, и ни одна из резолюций не работает:

Поскольку я новичок в SO, я не могу опубликовать ни в одном из них. (Первый на самом деле закрыт, и я не согласен с аргументацией локализации...)

Во всяком случае, мы создали обход, используя AppleScript, который может заинтересовать вас. script ниже должен выполняться асинхронно до запуска автоматического теста:

osascript <script name> <password> &

Вот script:

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

Вероятно, это не очень безопасно, но это лучшая работа, с которой мы столкнулись, чтобы тесты могли работать без вмешательства пользователя.

Надеюсь, я смогу получить достаточно баллов, чтобы опубликовать ответ; или кто-то может снять защиту с этого вопроса. С наилучшими пожеланиями.

Ответ 7

Я на Snow Leopard, и это не сработало для меня. Но работала следующая процедура:

  • Сначала добавлена ​​другая учетная запись с правами администратора, пометкой "Разрешить пользователю управлять этим компьютером" в разделе "Учетные записи", например учетная запись с именем пользователя test
  • Зашел в учетную запись test
  • Запустил Xcode, скомпилировал и запустил мой проект для iPhone. Все нормально, никаких ошибок не было связано с правами доступа.
  • Зашел из учетной записи test
  • Вход в систему с другой учетной записью, имеющей права администратора.
  • Убрал админ-привилегии из учетной записи test, удалив галочку "Разрешить пользователю администрировать этот компьютер" в разделе "Аккаунты"
  • Зашел в учетную запись test
  • Удален каталог проекта iPhone и снова извлечен из репозитория (в моем случае svn)
  • Запустил Xcode, скомпилировал и запустил проект. Я не получал никаких ошибок, и приложение хорошо работало в iPhone Simulator.

Ответ 8

Вот лучшее решение от
Mac OS X хочет использовать системный брелок при компиляции проекта

  • Открыть доступ к Keychain.
  • В верхнем левом углу разблокируйте брелок (если он заблокирован).
  • Выберите системную цепочку ключей в левом верхнем углу.
  • Найдите свой сертификат распространения и нажмите треугольник раскрытия.
  • Дважды нажмите "Закрытый ключ" в вашем сертификате распространения.
  • Во всплывающем меню перейдите на вкладку Контроль доступа.
  • Выберите "Разрешить всем приложениям доступ к этому элементу.
  • Сохраните изменения.
  • Закройте все окна.
  • Запустите приложение.

Ответ 9

После запуска:

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

за ответ выше, вы можете еще получить запрос на ввод своего пароля:

Нам нужна авторизация от пользователя-администратора для запуска отладчика. Это произойдет только один раз за сеанс входа в систему.

То, что это на самом деле означает, является любым пользователем группы разработчиков _developer, поэтому здесь будет работать только ваш пользователь/пароль для не-администратора, но чтобы полностью избавиться от него (без подсказок после перезагрузки), вам также нужно будет запустить:

sudo DevToolsSecurity -enable

(запустив его с помощью sudo в качестве пользователя admin/, поскольку root сделает это, чтобы вы могли сделать это удаленно без приглашения пароля gui)

Ответ 10

Для меня я нашел предложение в следующем разделе:

Остановить доступ к инструментам разработчика необходимо, чтобы взять под контроль другой процесс для отладки для продолжения " предупреждение

В приложении Terminal предлагается выполнить следующую команду:

sudo /usr/sbin/DevToolsSecurity --enable