Авторизуйте разработчика без прав администратора в Xcode / Mac OS
Я использую стандартную учетную запись пользователя для своих ежедневных задач в Mac OS. После обновления до Snow Leopard меня просят сделать следующее при запуске программы из Xcode:
"Введите имя и пароль пользователя в группе" Инструменты разработчика ", чтобы разрешить доступ к Инструментам разработчика для внесения изменений".
Хотя я знаю имя пользователя и пароль администратора, это раздражает (хотя требуется только один раз для входа в систему).
Для доступа к инструментам разработчика требуются права на "system.privilege.taskport.debug" из приложения gdb-i386-apple-darwin.
Как лучше обойти это?
10 ответов
Вам нужно добавить имя пользователя OS X в _developer
группа. Смотрите сообщения в этой теме для получения дополнительной информации. Следующая команда должна сделать трюк:
sudo dscl . append /Groups/_developer GroupMembership <username>
Наконец, я смог избавиться от него, используя DevToolsSecurity -enable
на терминале. Благодаря @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:
Мы боремся с проблемой, описанной в этих темах, и ни одно из решений, похоже, не работает:
- "Стоп", доступ к инструментам разработчика должен взять под контроль другой процесс для продолжения отладки "
- Авторизуйте разработчика без прав администратора в 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
Возможно, не очень безопасный, но это лучший обходной путь, который мы придумали, чтобы тесты могли выполняться без вмешательства пользователя.
Надеюсь, я смогу набрать достаточно очков, чтобы опубликовать ответ; или кто-то может снять этот вопрос с защиты. С уважением.
Я на снежном барсе, и этот мне не очень помог. Но сработала следующая процедура:
- Сначала добавили еще одну учетную запись с правами администратора, отметив "Разрешить пользователю управлять этим компьютером" в разделе "Учетные записи", например учетную запись с проверкой имени пользователя.
- Зашли в тестовый аккаунт
- Запустил Xcode, скомпилировал и запустил мой iPhone проект. Все в порядке, не было выдано никаких ошибок, связанных с разрешениями
- Выйти из тестового аккаунта
- Войдите в систему с другой учетной записью, имеющей права администратора
- Убрал права администратора из тестовой учетной записи, сняв галочку с "Разрешить пользователю управлять этим компьютером" в разделе "Учетные записи".
- Зашли обратно в тестовый аккаунт
- Удалил каталог проекта iPhone и снова извлек из хранилища (в моем случае svn)
- Запустил Xcode, скомпилировал и запустил проект. Я не получил никаких ошибок, и приложение хорошо работало в iPhone Simulator.
Вот лучшее решение от
Mac OS X хочет использовать системную связку ключей при компиляции проекта
- Открыть доступ к брелку.
- В верхнем левом углу разблокируйте брелок (если он заблокирован).
- Выберите системную связку ключей в верхнем левом углу.
- Найдите свой сертификат распространения и нажмите треугольник раскрытия.
- Дважды щелкните "Закрытый ключ" под своим сертификатом распространения.
- Во всплывающем окне перейдите на вкладку "Контроль доступа".
- Выберите "Разрешить всем приложениям доступ к этому элементу".
- Сохраните изменения.
- Закройте все окна.
- Запустите приложение.
Для меня я нашел предложение в следующей ветке помогло:
Он предложил выполнить следующую команду в приложении " Терминал":
sudo /usr/sbin/DevToolsSecurity --enable
После запуска:
sudo dscl . append /Groups/_developer GroupMembership <username>
согласно приведенному выше ответу, вам все равно может быть предложено ввести свой собственный пароль:
Нам нужна авторизация от администратора для запуска отладчика. Это будет происходить только один раз за сеанс входа в систему.
На самом деле это означает, что любой пользователь _developer groupmember, поэтому здесь будет работать только ваш пользователь / пароль, не являющийся администратором, но чтобы полностью избавиться от него (без запросов после перезагрузки), вам также нужно будет выполнить:
sudo DevToolsSecurity -enable
(запуск с sudo в качестве пользователя-администратора / от имени root сделает это так, что вы можете сделать это удаленно без запроса пароля графического интерфейса)