Autoriser un développeur non administrateur dans Xcode / Mac OS

J’utilise un compte utilisateur standard pour mes tâches quotidiennes sous Mac OS. Depuis la mise à niveau vers Snow Leopard, je suis invité à effectuer les opérations suivantes lorsqu’un programme est exécuté depuis Xcode:

Msgstr “” “Tapez le nom et le mot de passe d’un utilisateur dans le groupe” Developer Tools “pour permettre aux outils de développement d’accéder aux modifications”

Bien que je connaisse le nom d’utilisateur / mot de passe administrateur, c’est ennuyeux (mais seulement une fois par connexion).

L’access aux outils de développement demande des droits sur “system.privilege.taskport.debug” depuis l’application gdb-i386-apple-darwin.

Quelle est la meilleure façon de contourner cela?

Vous devez append votre nom d’utilisateur OS X au groupe _developer . Voir les articles dans ce fil pour plus d’informations. La commande suivante devrait faire l’affaire:

 sudo dscl . append /Groups/_developer GroupMembership  

Finalement, j’ai pu m’en débarrasser avec DevToolsSecurity -enable on Terminal. Merci à @joar_at_work !

FYI : Je suis sur Xcode 4.3 et j’ai appuyé sur le bouton de désactivation quand il a été lancé pour la première fois, ne demandez pas pourquoi, supposez simplement que mon chien m’a fait le faire 🙂

 $ dseditgroup -o edit -u  -t user -a  _developer 

Vous devez vous append au groupe Outils de développement. La syntaxe générale pour append un utilisateur à un groupe dans OS X est la suivante:

 sudo dscl . append /Groups/ GroupMembership  

Je crois que le nom du groupe DevTools est _developer .

La solution de Ned Deily fonctionne parfaitement, à condition que votre utilisateur soit autorisé à sudo .

Si ce n’est pas le cas, vous pouvez su à un compte administrateur, puis utiliser son dscl . append /Groups/_developer GroupMembership $user dscl . append /Groups/_developer GroupMembership $user , où $ user est le nom d’utilisateur.

Cependant, je pensais à tort que ce n’était pas le cas parce que j’avais mal saisi le nom de l’utilisateur dans la commande et que cela échouait en silence.

Par conséquent, après avoir saisi cette commande, vous devez la vérifier. Cela vérifiera si $ user est dans $ group, où les variables représentent respectivement le nom d’utilisateur et le nom du groupe.

 dsmemberutil checkmembership -U $user -G $group 

Cette commande permet d’imprimer que l’ user is not a member of the group du message user is not a member of the group ou que l’ user is a member of the group .

Réponse suggérée par @Stacy Simpson:

Nous nous débattons avec le problème décrit dans ces discussions et aucune des résolutions ne semble fonctionner:

  • Arrêter “l’access des outils de développement doit prendre le contrôle d’un autre processus pour que le débogage se poursuive” alerte
  • Autoriser un développeur non administrateur dans Xcode / Mac OS

Comme je suis nouveau à SO, je ne peux pas poster dans les deux threads. (Le premier est en fait fermé et je ne suis pas d’accord avec le raisonnement de localisation …)

Quoi qu’il en soit, nous avons créé une solution de contournement en utilisant AppleScript qui peut intéresser les gens. Le script ci-dessous doit être exécuté de manière asynchrone avant de lancer votre test automatisé:

 osascript  

Voici le script:

 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 dialog to the front tell application "SecurityAgent" to activate # Enter provided password keystroke item 1 of argv keystroke return end if end tell end run 

Probablement pas très sécurisé, mais c'est la meilleure solution pour permettre aux tests de s'exécuter sans intervention de l'utilisateur.

J'espère que je pourrai obtenir suffisamment de points pour poster la réponse. ou, quelqu'un peut déprotéger cette question. Cordialement.

Voici une meilleure solution de
Mac OS X veut utiliser le trousseau système lors de la compilation du projet

  1. Ouvrez l’access au trousseau.
  2. Dans le coin supérieur gauche, déverrouillez le trousseau (s’il est verrouillé).
  3. Choisissez le trousseau Système dans le coin supérieur gauche.
  4. Recherchez votre certificate de dissortingbution et cliquez sur le sortingangle de divulgation.
  5. Double-cliquez sur “Clé privée” sous votre certificate de dissortingbution.
  6. Dans la fenêtre contextuelle, accédez à l’onglet Contrôle d’access.
  7. Sélectionnez «Autoriser toutes les applications à accéder à cet élément».
  8. Enregistrez les modifications.
  9. Fermez toutes les fenêtres.
  10. Exécutez l’application.

Je suis sur Snow Leopard et celui-ci n’a pas fonctionné pour moi. Mais la procédure suivante a fonctionné:

  1. D’abord ajouté un autre compte avec des privilèges d’administrateur en cochant “Autoriser l’utilisateur à administrer cet ordinateur” sous Comptes, par exemple un compte avec test de nom d’utilisateur
  2. Connecté au compte de test
  3. Lancé Xcode, compilé et exécuté mon projet iPhone. Tout va bien, pas d’erreurs liées aux permissions
  4. Déconnecté du compte de test
  5. Connecté avec un autre compte disposant des privilèges d’administrateur
  6. Supprimé les privilèges d’administrateur du compte de test en supprimant la coche “Autoriser l’utilisateur à administrer cet ordinateur” sous Comptes
  7. Reconnecté au compte de test
  8. Supprimé le répertoire du projet iPhone et extrait à nouveau du référentiel (dans mon cas svn)
  9. Lancé Xcode, compilé et exécuté le projet. Je n’ai eu aucune erreur et l’application s’est bien passée dans le simulateur d’iPhone.

Après avoir couru:

 sudo dscl . append /Groups/_developer GroupMembership  

selon la réponse ci-dessus, vous pouvez toujours être invité à entrer votre propre mot de passe:

Nous avons besoin de l’autorisation d’un utilisateur administrateur pour exécuter le débogueur. Cela ne se produira qu’une fois par session de connexion.

Ce que cela signifie vraiment, c’est que tout utilisateur membre du groupe _developer ne peut utiliser que votre utilisateur / mot de passe non-admin, mais pour le supprimer complètement (pas d’invite après un redémarrage), vous devrez également exécuter:

 sudo DevToolsSecurity -enable 

(exécutez-le avec sudo en tant qu’utilisateur admin / en tant que root pour que vous puissiez le faire à distance sans demander un mot de passe d’interface graphique)

Pour moi, j’ai trouvé la suggestion dans le fil suivant:

Arrêter “l’access des outils de développement doit prendre le contrôle d’un autre processus pour que le débogage se poursuive” alerte

Il a suggéré d’exécuter la commande suivante dans l’application Terminal :

 sudo /usr/sbin/DevToolsSecurity --enable