0 votos

Ejecutar servicios de Launchd con un usuario que no es root en macOS

Estoy construyendo un servicio launchctl que puede ejecutar un servicio de Java. Soy capaz de crear un servicio launchctl con el usuario root y probar casos de inicio/detención/estado/inicio automático al reiniciar.

Estoy luchando por ejecutar el mismo servicio launchctl con un usuario no root (ec2-user en mi caso)

Mi archivo plist se ve así

  Label
  siem
  ProgramArguments

    java
    -jar
    /Users/ec2-user/siem.jar

  RunAtLoad

  KeepAlive

  WorkingDirectory
  /Users/ec2-user
   StandardErrorPath
   /tmp/mycommand.err
   StandardOutPath
   /tmp/mycommand.out

He intentado varios pasos para ejecutar el servicio anterior con ec2-user. El UID para ec2-user es 501.

ec2-user@ip-172-31-30-212 ~ % launchctl bootstrap gui/501 ~/Library/LaunchDaemons/siem.plist
(Fracaso en el arranque: 125: Error desconocido: 125

Verifiqué el contenido del archivo plist

ec2-user@ip-172-31-30-212 ~ % plutil ~/Library/LaunchDaemons/siem.plist
/Users/ec2-user/Library/LaunchDaemons/siem.plist: OK

Intenté arrancar el servicio con usuario

ec2-user@ip-172-31-30-212 ~ % launchctl bootstrap usuario/501 ~/Library/LaunchDaemons/siem.plist
Fracaso en el arranque: 5: Error de entrada/salida

Todos los errores anteriores no son detallados y no parecen encontrar ninguna solución.

Mi objetivo: Quiero ejecutar el servicio launchctl con un usuario no root.

Detalles del entorno:

Sistema operativo: macOS en instancia de AWS EC2

Versión de macOS: BigSur y Monterey

Actualización 1:

Verifiqué los registros del sistema

Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem[2159]): El servicio no pudo inicializarse: 20G224: xpcproxy + 23787 [839][86D1F823-583D-36B7-A047-55971A034143]: 0xd
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem.label[2160]): El servicio no pudo inicializarse: 20G224: xpcproxy + 23787 [839][86D1F823-583D-36B7-A047-55971A034143]: 0xd
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem[2159]): El servicio salió con un código anormal: 78
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem): El servicio solo se ejecutó durante 0 segundos. Retrasando la reaparición 10 segundos más.
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem.label[2160]): El servicio salió con un código anormal: 78
Nov 26 17:51:23 ip-172-31-30-212 com.apple.xpc.launchd[1] (siem.label): El servicio solo se ejecutó durante 0 segundos. Retrasando la reaparición 10 segundos más.

1 votos

Es posible que necesites la ruta completa de Java. Ha pasado un tiempo desde que verifiqué qué ruta utiliza por defecto, pero al igual que con cron, los launchdaemons no reciben mucha atención. Revisa esta respuesta: stackoverflow.com/questions/32927956/…

0 votos

Proporcionaste la ruta completa de Java también, pero no está funcionando para mí.

4voto

Sarden Puntos 1

Utilicé la herramienta LaunchControl para depurar el problema. Recomiendo instalar el brew cask install launchcontrol, que es una herramienta de interfaz gráfica para launchctl, puede ayudar a detectar errores y solucionar problemas.

En mi caso, hubo los siguientes problemas

  • StandardOutPath y StandardErrorPath se establecieron donde mi usuario no tenía permisos de escritura.
  • Comencé mi servicio primero con el usuario root, por lo tanto, el servicio creó la ubicación de los registros. Luego comencé el mismo servicio con otro usuario no root y como la ubicación de los registros ya se había creado, el usuario no root no tenía permisos para escribir en ella.

La razón por la que tardó un tiempo en resolver los problemas anteriores es la mala información de registro de errores proporcionada por macOS.

0voto

yoliho Puntos 340

Necesitas editar el plist.

Necesitas la clave UserName

por ejemplo

    UserName
    ec2-user

Para más información consulta https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#//apple_ref/doc/uid/10000172i-SW7-BCIEDDBJ

0 votos

He agregado eso y he ejecutado comandos y no está funcionando ec2-user@ip-172-31-30-212 ~ % launchctl load -w ~/Library/LaunchDaemons/siem.plist Falló la carga: 5: Error de entrada/salida y ec2-user@ip-172-31-30-212 ~ % launchctl bootstrap gui/501 ~/Library/LaunchDaemons/siem.plist Falló el inicio: 5: Error de entrada/salida

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