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

2

Estoy intentando configurar un TeamCity Build Agent en un Mac Mini Server con 10.7.3. Lo conseguí ejecutando y construyendo con éxito, pero solo si inicio sesión y ejecuto el proceso manualmente.

Preferimos que el proceso se inicie en el inicio, lo que parece que se realiza fácilmente al colocar 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 restringidas 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 e inicie sesión. Esto debe comenzar desde el inicio y seguir funcionando cuando el usuario no está conectado.

¿Hay una manera de iniciar un proceso como un usuario específico en el arranque?

    
pregunta Wyatt Barnett 08.02.2012 - 18:08

2 respuestas

1

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

Simplemente cambie 'jsmith' al nombre corto de usuario 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 poder ejecutarse.

(Creo que esto es lo que sugirió bmike)

Otra opción

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

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

El resumen ejecutivo es este:

  • Activar inicio de sesión automático
  • Coloque este launchd plist en ~ / Library / LaunchAgents
  • reiniciar

Lo que hace:

Tan pronto como inicies sesión, launchd te regresará 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 toda una línea larga.

Teniendo en cuenta que alguien con acceso físico a su computadora tiene mucho de posibles vulnerabilidades, considero que esto es relativamente seguro, pero, por supuesto, todos tienen que tomar su propia decisió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 .

    
respondido por el TJ Luoma 08.02.2012 - 20:50
0

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

Los procesos iniciados antes de que se inicie la sesión de inicio de sesión del usuario son funcionalmente root y deben degradarse si no desea 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.

    
respondido por el bmike 08.02.2012 - 18:19

Lea otras preguntas en las etiquetas