J'utilise un compte d'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é à partir de Xcode:
"Tapez le nom et le mot de passe d'un utilisateur du groupe" Outils de développement "pour permettre à l'accès aux outils de développement d'apporter des modifications"
Bien que je connaisse le nom d’utilisateur/mot de passe de l’administrateur, c’est ennuyeux (même s’il n’est requis qu’une fois par connexion).
L'accès aux outils pour les développeurs demande des droits sur "system.privilege.taskport.debug" à partir de l'application gdb-i386-Apple-darwin.
Quel est le meilleur moyen de contourner cela?
Vous devez ajouter votre nom d'utilisateur OS X au _developer
groupe. Voir les articles dans ce fil pour plus d'informations. La commande suivante devrait faire l'affaire:
Sudo dscl . append /Groups/_developer GroupMembership <username>
Finalement, j'ai pu m'en débarrasser en utilisant DevToolsSecurity -enable
sur le terminal. Merci à @ joar_at_work !
[~ # ~] fyi [~ # ~] : je suis sur Xcode 4.3, et j'ai appuyé sur le désactiver lorsqu’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 <adminusername> -t user -a <developerusername> _developer
Vous devez vous ajouter au groupe Outils de développement. La syntaxe générale pour ajouter un utilisateur à un groupe sous OS X est la suivante:
Sudo dscl . append /Groups/<group> GroupMembership <username>
Je crois que le nom du groupe DevTools est _developer
.
La solution de Ned Deily fonctionne parfaitement, à condition que votre utilisateur soit autorisé à Sudo
.
S'il ne l'est pas, vous pouvez su
sous un compte administrateur, puis utilisez son dscl . append /Groups/_developer GroupMembership $user
, où $ utilisateur est le nom d'utilisateur.
Cependant, j'ai pensé à tort que ce n'était pas le cas, car j'ai mal saisi le nom de l'utilisateur dans la commande et il échoue silencieusement.
Par conséquent, après avoir entré cette commande, vous devez la vérifier. Ceci vérifiera si $ utilisateur est dans $ groupe, où les variables représentent respectivement le nom d'utilisateur et le nom du groupe.
dsmemberutil checkmembership -U $user -G $group
Cette commande va soit imprimer le message user is not a member of the group
ou user is a member of the group
.
Réponse suggérée par @Stacy Simpson:
Nous sommes aux prises avec le problème décrit dans ces discussions et aucune des résolutions ne semble fonctionner:
Comme je suis nouveau sur SO, je ne peux pas publier dans aucun fil. (Le premier est en fait fermé et je ne suis pas d'accord avec le raisonnement concernant la localisation ...)
Quoi qu'il en soit, nous avons créé une solution de contournement à l'aide d'AppleScript qui pourrait intéresser les gens. Le script ci-dessous doit être exécuté de manière asynchrone avant le lancement de 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
Probablement pas très sécurisé, mais c’est la meilleure solution que nous ayons mise au point pour permettre l’exécution de tests sans intervention de l’utilisateur.
Si tout va bien, je peux obtenir assez 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
- Ouvrir le trousseau d'accès.
- Dans le coin supérieur gauche, déverrouillez le trousseau (s’il est verrouillé).
- Choisissez le trousseau Système dans le coin supérieur gauche.
- Recherchez votre certificat de distribution et cliquez sur le triangle d’affichage.
- Double-cliquez sur ‘Clé privée’ sous votre certificat de distribution.
- Dans la fenêtre contextuelle, accédez à l'onglet Contrôle d'accès.
- Sélectionnez "Autoriser toutes les applications à accéder à cet élément".
- Enregistrez les modifications.
- Fermez toutes les fenêtres.
- Lancer l'application.
Je suis sur Snow Leopard et celui-ci n'a pas vraiment fonctionné pour moi. Mais la procédure suivante a fonctionné:
Après avoir couru:
Sudo dscl . append /Groups/_developer GroupMembership <username>
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 réellement, c’est tout _ développeur utilisateur du groupe, de sorte que seul votre mot de passe/utilisateur non-administrateur fonctionnera ici, mais pour vous en débarrasser complètement (aucune invite après le un redémarrage), vous aurez également besoin d'exécuter:
Sudo DevToolsSecurity -enable
(l'exécuter avec Sudo en tant qu'administrateur/en tant que root vous permettra de le faire à distance sans invite de mot de passe gui)
Pour moi, j'ai trouvé la suggestion dans le fil suivant:
Il a suggéré d'exécuter la commande suivante dans l'application Terminal :
Sudo /usr/sbin/DevToolsSecurity --enable