Авторизация разработчика без прав администратора в Xcode / Mac OS



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



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



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



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



каков наилучший способ обойти это?

755   10  

10 ответов:

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

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

наконец, я смог избавиться от него с помощью DevToolsSecurity -enable на терминал. Спасибо @joar_at_work!

FYI: Я нахожусь на 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.

после:

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

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

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

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

sudo DevToolsSecurity -enable

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

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

Stop "developer tools access должен взять под контроль другой процесс отладки, чтобы продолжить" alert

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

sudo /usr/sbin/DevToolsSecurity --enable

Comments

    Ничего не найдено.