Авторизуйте разработчика без прав администратора в 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:

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

Поскольку я новичок в 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

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

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

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

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

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

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

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

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

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

sudo /usr/sbin/DevToolsSecurity --enable

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

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

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

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

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

sudo DevToolsSecurity -enable

(запуск с sudo в качестве пользователя-администратора / от имени root сделает это так, что вы можете сделать это удаленно без запроса пароля графического интерфейса)

Другие вопросы по тегам