program developer desarrollador apple xcode macos osx-snow-leopard privileges dscl

developer - Autorice a un desarrollador que no sea administrador en Xcode/Mac OS



xcode 9.0 download (10)

Utilizo una cuenta de usuario estándar para mis tareas diarias en Mac OS. Desde que me actualicé a Snow Leopard, me piden que haga lo siguiente cuando se ejecuta un programa desde Xcode:

"Escriba el nombre y la contraseña de un usuario en el grupo ''Herramientas de desarrollador'' para permitir que Developer Tools Access realice cambios"

Aunque conozco el nombre de usuario / contraseña del administrador, esto es molesto (aunque solo se requiere una vez por inicio de sesión).

El acceso a las herramientas de desarrollador solicita derechos para "system.privilege.taskport.debug" desde la aplicación gdb-i386-apple-darwin.

¿Cuál es la mejor manera de evitar esto?


Aquí hay una mejor solución de
Mac OS X quiere utilizar el llavero del sistema al compilar el proyecto

  1. Acceso abierto a llavero.
  2. En la esquina superior izquierda, desbloquea el llavero (si está bloqueado).
  3. Elija el llavero del sistema en la esquina superior izquierda.
  4. Encuentra tu certificado de distribución y haz clic en el triángulo de divulgación.
  5. Haga doble clic en ''Clave privada'' debajo de su certificado de distribución.
  6. En la ventana emergente, vaya a la pestaña Control de acceso.
  7. Seleccione ''Permitir que todas las aplicaciones accedan a este elemento''.
  8. Guarde los cambios.
  9. Cierre todas las ventanas.
  10. Ejecuta la aplicación.

Debe agregarse al grupo Herramientas de desarrollador. La sintaxis general para agregar un usuario a un grupo en OS X es la siguiente:

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

Creo que el nombre del grupo _developer es _developer .


Después de ejecutar:

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

según la respuesta anterior, es posible que se le pida que ingrese su propia contraseña:

Necesitamos la autorización de un usuario administrador para ejecutar el depurador. Esto solo ocurrirá una vez por sesión de inicio de sesión.

Lo que realmente significa es que cualquier usuario de un miembro de un grupo desarrollador, así que su usuario / contraseña que no sea administrador funcionará aquí, pero para deshacerse de él por completo (sin avisos después de un reinicio) también deberá ejecutar:

sudo DevToolsSecurity -enable

(ejecutarlo con sudo como un usuario administrador / como root lo hará para que pueda hacerlo de forma remota sin un indicador de contraseña de GUI)


Estoy en Snow Leopard y este no funcionó para mí. Pero el siguiente procedimiento funcionó:

  1. Primero agregó otra cuenta con privilegios de administrador marcando "Permitir que el usuario administre esta computadora" en Cuentas, por ejemplo, una cuenta con prueba de nombre de usuario
  2. Iniciado sesión en la cuenta de prueba
  3. Lancé Xcode, compilé y ejecuté mi proyecto de iPhone. Todo bien, no se lanzaron errores relacionados con los permisos
  4. Desconectado de la cuenta de prueba
  5. Iniciado sesión con la otra cuenta que tiene privilegios de administrador
  6. Quitó los privilegios del administrador de la cuenta de prueba al quitar la marca de "Permitir que el usuario administre esta computadora" en Cuentas
  7. Registrado en la cuenta de prueba
  8. Se eliminó el directorio del proyecto de iPhone y nuevamente se guardó del repositorio (en mi caso svn)
  9. Lanzó Xcode, compiló y ejecutó el proyecto. No recibí ningún error y la aplicación funcionó bien en el simulador de iPhone.

Finalmente, pude deshacerme de él usando DevToolsSecurity -enable en la Terminal. ¡Gracias a @joar_at_work !

FYI : estoy en Xcode 4.3, y presioné el botón de deshabilitar cuando se lanzó por primera vez, no preguntes por qué, solo asume que mi perro me hizo hacerlo :)


La solución de Ned Deily funciona perfectamente bien, siempre que su usuario pueda sudo .

Si no es así, puede usar una cuenta de administrador y luego usar su dscl . append /Groups/_developer GroupMembership $user dscl . append /Groups/_developer GroupMembership $user , donde $ user es el nombre de usuario.

Sin embargo, erróneamente pensé que no, porque tecleé incorrectamente el nombre del usuario en el comando y silenciosamente falla.

Por lo tanto, después de ingresar este comando, debe verificarlo. Esto verificará si $ user está en $ group, donde las variables representan respectivamente el nombre de usuario y el nombre del grupo.

dsmemberutil checkmembership -U $user -G $group

Este comando imprimirá el mensaje. El user is not a member of the group o el user is a member of the group .



Respuesta sugerida por @Stacy Simpson:

Estamos luchando con el problema descrito en estos hilos y ninguna de las resoluciones parece funcionar:

Como soy nuevo en SO, no puedo publicar en ninguno de los hilos. (El primero está cerrado y no estoy de acuerdo con el razonamiento de localización ...)

De todos modos, creamos una solución alternativa mediante AppleScript que puede interesar a la gente. El siguiente script debe ejecutarse de forma asíncrona antes de iniciar su prueba automatizada:

osascript <script name> <password> &

Aquí está el guión:

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

Probablemente no sea muy seguro, pero es la mejor alternativa que hemos tenido para permitir que las pruebas se ejecuten sin requerir la intervención del usuario.

Con suerte, puedo obtener suficientes puntos para publicar la respuesta; o, alguien puede desproteger esta pregunta. Saludos.


Necesita agregar su nombre de usuario de OS X al grupo _developer . Ver las publicaciones en este hilo para más información. El siguiente comando debería hacer el truco:

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


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