111 votes

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

J'utilise un compte utilisateur standard pour mes tâches quotidiennes sur Mac OS. Depuis la mise à jour vers Snow Leopard, on me demande de faire ce qui suit lorsqu'un programme est exécuté à partir de Xcode :

"Tapez le nom et le mot de passe d'un utilisateur du groupe 'Developer Tools' pour permettre à Developer Tools Access d'effectuer des modifications".

Bien que je connaisse le nom d'utilisateur et le mot de passe de l'administrateur, c'est ennuyeux (bien que cela ne soit nécessaire qu'une fois par connexion).

L'accès aux outils de développement demande des droits sur "system.privilege.taskport.debug" à partir de l'application gdb-i386-apple-darwin.

Quelle est la meilleure façon de contourner ce problème ?

138voto

Ned Deily Points 40248

Vous devez ajouter votre macOS au nom de l'utilisateur _developer groupe. Voir les messages dans ce fil pour plus d'informations. La commande suivante devrait faire l'affaire :

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

1 votes

Cette solution a fonctionné pour moi pendant environ 10 minutes, puis, pour une raison quelconque, le système a recommencé à me demander mon nom d'utilisateur/mot de passe. J'ai essayé de le taper à nouveau dans le Terminal, mais il ne répond plus.

0 votes

Cela fonctionne pour moi et je n'ai eu aucun problème jusqu'à présent. Noté juste pour référence.

9 votes

Cette solution n'a pas fonctionné pour moi jusqu'à ce que j'ajoute -u <name-of-account-with-root-access> aux options. Donc ma commande complète était dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>

24voto

chunkyguy Points 1146

Finalement, j'ai pu m'en débarrasser en utilisant DevToolsSecurity -enable sur Terminal. Merci à @joar_at_work !

FYI : Je suis sur Xcode 4.3, et j'ai appuyé sur la touche désactiver bouton quand il a été lancé pour la première fois, ne demandez pas pourquoi, supposez juste que mon chien m'a fait faire ça :)

2 votes

+1 pour avoir mentionné DevToolsSecurity. Je n'avais aucune idée de l'existence d'un tel outil. J'ai eu le problème inverse, je voulais le désactiver à nouveau et grâce à cet outil j'ai finalement pu le faire :) Juste remplacé -enable avec -disable et cela fonctionne comme prévu !

1 votes

Cette commande ne semble pas avoir d'effet du tout. Xcode 4.3 requiert toujours l'authentification d'une personne du groupe _developer, que l'on utilise -enable ou -disable.

0 votes

Juste pour clarifier, cette étape est, au moins dans certains cas, en outre d'ajouter l'utilisateur au groupe _developer avec dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>

9voto

cdespinosa Points 14277
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer

6 votes

À mon humble avis, cette réponse pourrait bénéficier d'un peu plus d'explications sur ce qu'elle fait. Ce n'est pas que je n'aime pas taper sudo rm -rf / sur mon système, mais vous comprenez ce que je veux dire. :D

8voto

phoebus Points 7358

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

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

Je crois que le nom pour le groupe DevTools est _developer .

2voto

Martin Turjak Points 9767

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

Nous sommes aux prises avec le problème décrit dans ces fils de discussion et aucune des résolutions ne semble fonctionner :

Comme je suis nouveau sur SO, je ne peux pas poster dans les deux fils. (Le premier est en fait fermé et je ne suis pas d'accord avec le raisonnement sur la localisation...)

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

osascript <script name> <password> &

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 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

Ce n'est probablement pas très sûr, mais c'est la meilleure solution que nous ayons trouvée pour permettre l'exécution des tests sans l'intervention de l'utilisateur.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X