Авторизовать разработчика, не являющегося администратором, в Xcode / Mac OS
-
11-09-2019 - |
Вопрос
Я использую стандартную учетную запись пользователя для своих ежедневных задач в 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:
Мы боремся с проблемой, описанной в этих темах, и, похоже, ни одно из решений не работает:
- Предупреждение Stop "доступ к инструментам разработчика должен взять под контроль другой процесс для продолжения отладки"
- Авторизовать разработчика, не являющегося администратором, в Xcode / Mac OS
Поскольку я новичок в 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 хочет использовать системную цепочку ключей при компиляции проекта
- Откройте доступ к связке ключей.
- В левом верхнем углу разблокируйте брелок (если он заблокирован).
- Выберите системную связку ключей в левом верхнем углу.
- Найдите свой сертификат распространения и щелкните треугольник раскрытия.
- Дважды щелкните ‘Закрытый ключ’ под вашим сертификатом распространения.
- Во всплывающем окне перейдите на вкладку Контроль доступа.
- Выберите ‘Разрешить всем приложениям доступ к этому элементу’.
- Сохраните изменения.
- Закройте все окна.
- Запустите приложение.
Я работаю на Snow Leopard, и этот вариант мне не совсем подошел.Но сработала следующая процедура:
- Сначала добавлена другая учетная запись с правами администратора, поставив галочку "Разрешить пользователю администрировать этот компьютер" в разделе Учетные записи, например учетная запись с именем пользователя тест
- Вошел в систему тест Учетная запись
- Запустил Xcode, скомпилировал и запустил мой проект для iPhone.Все в порядке, никаких ошибок, связанных с разрешениями, выдано не было
- Вышел из системы тест Учетная запись
- Вошел в систему с другой учетной записью, имеющей права администратора
- Отнял права администратора у тест учетную запись, сняв галочку с пункта "Разрешить пользователю администрировать этот компьютер" в разделе Учетные записи
- Снова вошел в систему тест Учетная запись
- Удалил каталог проекта iPhone и снова извлек из репозитория (в моем случае svn)
- Запустил Xcode, скомпилировал и запустил проект.Я не получил никаких ошибок, и приложение хорошо работало в симуляторе iPhone.
После того, как ты убежишь:
sudo dscl . append /Groups/_developer GroupMembership <username>
согласно приведенному выше ответу, вы можете все еще вам будет предложено ввести свой собственный пароль:
Для запуска отладчика нам нужна авторизация от пользователя-администратора.Это произойдет только один раз за сеанс входа в систему.
Что это на самом деле означает, так это любой _ разработчик пользователь groupmember, поэтому здесь будет работать только ваш пользователь / пароль, не являющийся администратором, но чтобы полностью избавиться от него (никаких подсказок после перезагрузки), вам также необходимо запустить:
sudo DevToolsSecurity -enable
(запустив его с помощью sudo от имени администратора / root, вы сможете сделать это удаленно без запроса пароля gui)
Что касается меня, я обнаружил, что предложение в следующей теме помогло:
В нем предлагалось выполнить следующую команду в Терминал применение:
sudo /usr/sbin/DevToolsSecurity --enable