Estoy intentando configurar un TeamCity Build Agent en un Mac Mini Server con 10.7.3. Lo hice ejecutar y compilar con éxito, pero solo si inicio sesión y ejecuto el proceso manualmente.
Preferiríamos que el proceso se iniciara al inicio, lo que parece fácil de hacer colocando un archivo plist en la carpeta /Library/LaunchDaemon. Desafortunadamente, esto no funciona para nosotros ya que el proceso se activa como root en lugar de nuestro usuario especificado. Realmente preferiríamos mantener las cosas restringidas a la carpeta del usuario y, además, necesitar acceso a un llavero para manejar la mecánica de firma de código de iOS. Desafortunadamente, el uso de ~/Library/LaunchAgents no funciona, ya que parece requerir que alguien visite la terminal e inicie sesión; esto debe iniciarse desde el arranque y seguir ejecutándose cuando el usuario cierra la sesión.
¿Hay alguna forma de iniciar un proceso como un usuario específico en el arranque?
Puede ejecutar fácilmente como otro usuario sudo -u
así:
#!/bin/sh
UZER=jsmith
sudo -u "$UZER" /path/to/program/you/want/to/run
exit 0
Simplemente cambie 'jsmith' al nombre de usuario corto apropiado, y luego guárdelo como un script en algún lugar, y llame desde /Library/LaunchDaemons
Recuerde que todos los archivos en /Library/LaunchDaemons deben ser propiedad de root para ejecutarse.
(Creo que esto es lo que bmike estaba sugiriendo)
Sin embargo, escribí un CÓMO para hacer que el inicio de sesión automático sea más seguro:
Terminally Geeky: use el inicio de sesión automático de forma más segura
El resumen ejecutivo es este:
Que hace:
Tan pronto como inicie sesión, launchd lo llevará de regreso a la pantalla de inicio de sesión usando:
"/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession" -suspend
Tenga en cuenta que es todo una línea larga.
Teniendo en cuenta que alguien con acceso físico a su computadora tiene muchas vulnerabilidades potenciales, considero que esto es relativamente seguro, pero, por supuesto, cada uno debe tomar su propia determinación. Ejecuto esto en mi pequeña oficina, pero mi iMac está en mi oficina privada que puedo bloquear cuando no estoy allí.
También tenga en cuenta que el inicio de sesión automático no funciona con FileVault 2 .
La manera fácil es configurar a ese usuario para que inicie sesión automáticamente y luego bloquear la pantalla con el cambio rápido de usuario habilitado. De lo contrario, tendrá que hacer el trabajo duro de crear un usuario de nivel de administrador y hacer que su secuencia de comandos o proceso se inicie solo con un usuario específico.
Los procesos iniciados antes de que comience la sesión de inicio de sesión del usuario son funcionalmente raíz y deben degradarse si no desea que se ejecuten como raíz. Apple hace esto con el servidor web y el usuario _www y en el lado del cliente, algunos procesos se ejecutan como usuarios none, _spotlight y _mdnsresponder.
sudo
al usuario en lugar de iniciarlo como una tarea heredada. No lo he probado últimamente, pero es rápido y podría funcionar.
Wyatt Barnett
TJ Luoma
security
herramienta para ver si puede acceder a ella de esa manera.Wyatt Barnett