Авторизуйте розробника без адміністрування в Xcode / Mac OS


109

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

"Введіть ім’я та пароль користувача у групі" Інструменти для розробників ", щоб дозволити Інструментам для розробників отримати доступ до змін"

Хоча я знаю ім’я користувача / пароль адміністратора, це дратує (хоча потрібно лише один раз за вхід).

Доступ до інструментів розробника запитує права на "system.privilege.taskport.debug" з програми gdb-i386-apple-darwin.

Що є найкращим способом цього?

Відповіді:


134

Вам потрібно додати своє ім’я користувача OS X до _developerгрупи. Дивіться публікації в цій темі для отримання додаткової інформації. Наступна команда повинна зробити фокус:

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

1
Це рішення працювало на мене близько 10 хвилин, а потім чомусь знову почало просити моє ім’я користувача / пароль. Я спробував знову ввести його в термінал, але він більше не відповідає.
jowie

Це працює для мене, і я не маю жодних проблем до цих пір. Помічено лише для довідки.
eonil

9
Це рішення не працювало для мене, поки я не додав -u <name-of-account-with-root-access>параметри. Отже, моя повна команда булаdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg

1
Якщо ви додасте цей рядок до сценарію безперервної інтеграції, вам слід розглянути можливість «об’єднати» замість «додати». Злиття не додасть його, якщо воно вже існує. Див. "Man dscl" для більш детальної інформації.
Russ Van Bert

1
Це спрацювало, щоб додати мене до групи, але лише після того, як я скористався пропозицією @Kheldar, щоб спершу вступити в кореневий рахунок.
b01

24

Нарешті, я зміг позбутися цього за допомогою DevToolsSecurity -enableтерміналу. Дякуємо @joar_at_work !

FYI : Я перебуваю на Xcode 4.3 і натиснув кнопку відключення при першому запуску, не запитуй чому, просто припусти, що моя собака змусила мене це зробити :)


2
+1 для згадування DevToolsSecurity. Я не мав ідеї, що такий інструмент існує. У мене була інша проблема, я хотів зробити відключити його знову , і завдяки цьому інструменту я , нарешті, зміг :) Просто замінити -enableз -disableі працює , як очікувалося!
Mecki

1
Здається, ця команда взагалі не має ефекту. Xcode 4.3 як і раніше вимагає автентифікації від когось із групи _developer незалежно від того, використовується -enable або -disable.
wcochran

Просто для уточнення, цей крок, принаймні в деяких випадках, є доповненням користувача до групи _developer зdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

Схоже, не працює на macOS "El Capitan" з XCode 7.3. @ Рішення Хельдара працювало на мене.
Laryx Decidua

9
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer

5
На мою скромну думку, ця відповідь справді могла б отримати користь від трохи більше пояснень того, що вона робить. Справа не в тому, що мені не подобається вводити sudo rm -rf / в моїй системі, але ви зрозумієте мою думку. : D
Хельдар

8

Ви повинні додати себе до групи Інструменти для розробників. Загальний синтаксис для додавання користувача до групи в OS X такий:

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

Я вважаю, що назва групи DevTools така _developer.


3

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


2
Дякую! Це працювало для мене! Команди, які працювали на OS X Mavericks, були dscl . append /Groups/_developer GroupMembership username іdsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode

2

Відповідь, запропонована @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

Напевно, не дуже безпечно, але це найкраща робота, яку ми придумали, щоб дозволити тести працювати без необхідності втручання користувача.

Сподіваюся, я можу отримати достатньо балів, щоб розмістити відповідь; або хтось може захистити це питання. З повагою


2

Ось краще рішення від
Mac OS X хоче використовувати системний брелок при складанні проекту

  1. Відкрийте доступ до брелка.
  2. У верхньому лівому куті розблокуйте брелок (якщо він заблокований).
  3. Виберіть системний брелок у верхньому лівому куті.
  4. Знайдіть свій сертифікат розповсюдження та натисніть трикутник розкриття.
  5. Двічі клацніть "Приватний ключ" під вашим сертифікатом розповсюдження.
  6. У спливаючому вікні перейдіть на вкладку «Контроль доступу».
  7. Виберіть "Дозволити всім програмам доступ до цього елемента".
  8. Збережіть зміни.
  9. Закрийте всі вікна.
  10. Запустіть додаток.

1

Для мене я знайшов пропозицію в наступній темі:

Попередження "Доступ до інструментів розробника потрібно взяти під контроль іншого процесу для налагодження, щоб продовжити"

Він запропонував виконати таку команду в додатку Terminal :

sudo /usr/sbin/DevToolsSecurity --enable

1

Я на Snow Leopard, і цей не дуже працював для мене. Але діяла наступна процедура:

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

0

Після запуску:

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

відповідно до вищезгаданої відповіді, ви все ще можете запропонувати ввести свій власний пароль:

Для запуску налагоджувача нам потрібна авторизація від адміністратора. Це відбудеться лише один раз за сеанс входу.

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

sudo DevToolsSecurity -enable

(запустивши його з sudo як адміністратора користувача / як root зробить це, щоб ви могли це робити віддалено без запиту пароля gui)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.