3 votos

¿Cómo puedo lanzar un proceso daemon como un usuario específico en el arranque sin un inicio de sesión interactivo?

Estoy tratando de configurar un agente de construcción de TeamCity en un servidor Mac Mini con 10.7.3. He conseguido que se ejecute y construya con éxito, pero sólo si me conecto y lanzo el proceso manualmente.

Preferimos que el proceso se inicie en el arranque, lo que parece ser fácil de hacer poniendo un archivo plist en la carpeta /Library/LaunchDaemon. Desafortunadamente esto no funciona para nosotros ya que el proceso se inicia como Root en lugar de como nuestro usuario especificado. Realmente preferiríamos mantener las cosas limitadas a la carpeta del usuario y además necesitamos 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 el terminal y se conecte - esto tiene que arrancar desde el inicio y permanecer en ejecución cuando el usuario se desconecta.

¿Hay alguna forma de lanzar un proceso como un usuario específico en el arranque?

1voto

moodforaday Puntos 2633

Se puede ejecutar fácilmente como otro usuario con sudo -u así:

#!/bin/sh

UZER=jsmith

sudo -u "$UZER" /path/to/program/you/want/to/run

exit 0

Sólo tienes que cambiar 'jsmith' por el nombre de usuario corto apropiado, y luego guardar eso como un script en algún lugar, y llamar desde /Library/LaunchDaemons

Recuerda que todos los archivos en /Library/LaunchDaemons deben ser propiedad de Root para ser ejecutados.

(Creo que esto es lo que sugería bmike)

Otra opción

Sin embargo, escribí un CÓMO para hacer más seguro el inicio de sesión automático:

Terminally Geeky: utilizar el inicio de sesión automático de forma más segura

El resumen ejecutivo es este:

  • Activar el inicio de sesión automático
  • Ponga esto plist de lanzamiento en ~/Library/LaunchAgents
  • Reiniciar

Lo que hace:

Tan pronto como te conectes, launchd te devolverá a la pantalla de inicio de sesión utilizando:

"/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession" -suspend

Tenga en cuenta que es una sola línea larga.

Teniendo en cuenta que alguien con acceso físico a su ordenador tiene un lote de posibles explotaciones, considero que esto es relativamente seguro, pero por supuesto cada uno tiene que tomar su propia determinación. Yo ejecuto esto en mi pequeña oficina, pero mi iMac está en mi oficina privada que puedo cerrar cuando no estoy allí.

También hay que tener en cuenta que el inicio de sesión automático no funciona con FileVault 2 .

0voto

Oskar Puntos 1242

La forma más fácil es configurar ese usuario para que inicie la sesión automáticamente y luego bloquear la pantalla con el cambio rápido de usuario activado. De lo contrario, tendrás que hacer el trabajo duro de crear un usuario de nivel de administrador y hacer que tu script o proceso se lance con un usuario específico.

Los procesos lanzados antes de que se inicie la sesión de inicio de sesión del usuario son funcionalmente Root y necesitan degradarse si no quieres que se ejecuten como Root. Apple hace esto con el servidor web y el usuario _www y en el lado del cliente, algunos procesos se ejecutan como usuarios nobody, _spotlight y , _mdnsresponder.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X