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

StackOverflow https://stackoverflow.com/questions/1837889

Вопрос

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

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

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

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

Как лучше всего обойти это?

Это было полезно?

Решение

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

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

Другие советы

Наконец, я смог избавиться от этого с помощью DevToolsSecurity -enable на терминале.Благодаря @joar_at_work @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.

Решение Неда Дейли работает отлично, при условии, что вашему пользователю разрешено 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.

Ответ, предложенный @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 хочет использовать системную цепочку ключей при компиляции проекта

  1. Откройте доступ к связке ключей.
  2. В левом верхнем углу разблокируйте брелок (если он заблокирован).
  3. Выберите системную связку ключей в левом верхнем углу.
  4. Найдите свой сертификат распространения и щелкните треугольник раскрытия.
  5. Дважды щелкните ‘Закрытый ключ’ под вашим сертификатом распространения.
  6. Во всплывающем окне перейдите на вкладку Контроль доступа.
  7. Выберите ‘Разрешить всем приложениям доступ к этому элементу’.
  8. Сохраните изменения.
  9. Закройте все окна.
  10. Запустите приложение.

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

  1. Сначала добавлена другая учетная запись с правами администратора, поставив галочку "Разрешить пользователю администрировать этот компьютер" в разделе Учетные записи, например учетная запись с именем пользователя тест
  2. Вошел в систему тест Учетная запись
  3. Запустил Xcode, скомпилировал и запустил мой проект для iPhone.Все в порядке, никаких ошибок, связанных с разрешениями, выдано не было
  4. Вышел из системы тест Учетная запись
  5. Вошел в систему с другой учетной записью, имеющей права администратора
  6. Отнял права администратора у тест учетную запись, сняв галочку с пункта "Разрешить пользователю администрировать этот компьютер" в разделе Учетные записи
  7. Снова вошел в систему тест Учетная запись
  8. Удалил каталог проекта iPhone и снова извлек из репозитория (в моем случае svn)
  9. Запустил Xcode, скомпилировал и запустил проект.Я не получил никаких ошибок, и приложение хорошо работало в симуляторе iPhone.

После того, как ты убежишь:

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

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

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

Что это на самом деле означает, так это любой _ разработчик пользователь groupmember, поэтому здесь будет работать только ваш пользователь / пароль, не являющийся администратором, но чтобы полностью избавиться от него (никаких подсказок после перезагрузки), вам также необходимо запустить:

sudo DevToolsSecurity -enable

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

Что касается меня, я обнаружил, что предложение в следующей теме помогло:

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

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

sudo /usr/sbin/DevToolsSecurity --enable
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top