0 votos

Cómo cambiar un demonio de inicio del sistema en un agente de inicio del usuario

Estoy utilizando el software Pritunl VPN para una de las cuentas de usuario de mi Mac. El instalador del software crea un LaunchDaemon del sistema que se encuentra en /Library/LaunchDaemons llamado com.pritunl.service.plist

Desgraciadamente, este servicio sigue activo cuando cierro la sesión del perfil de usuario al que está destinado, lo que hace que la conexión VPN también permanezca activa para otras cuentas de usuario.

Lo que me gustaría hacer es quitar este servicio del /system/ y añadirlo como servicio de inicio de /user/username. Mi intención es que el servicio se inicie cada vez que inicie la sesión con el usuario específico y que se detenga cada vez que se cierre la sesión del usuario.

Lo que he intentado hacer hasta ahora es descargar el servicio del sistema, eliminar el .plist del directorio del sistema /Library/LaunchDaemons y para moverlo al directorio del usuario ~/Library/LaunchAgents después de lo cual intenté cargarlo y registrarlo para la cuenta de usuario específica. Todavía no he conseguido realizar estos pasos correctamente ya que la cuenta de usuario en cuestión no tiene acceso Root.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.pritunl.service</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Pritunl.app/Contents/Resources/pritunl-service</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>Umask</key>
    <integer>0</integer>
</dict>
</plist>

sudo launchctl list com.pritunl.service
{
    "LimitLoadToSessionType" = "System";
    "Label" = "com.pritunl.service";
    "OnDemand" = false;
    "LastExitStatus" = 0;
    "PID" = XXXX;
    "Program" = "/Applications/Pritunl.app/Contents/Resources/pritunl-service";
    "ProgramArguments" = (
        "/Applications/Pritunl.app/Contents/Resources/pritunl-service";
    );
};

Material de referencia que he utilizado: https://rakhesh.com/mac/MacOS-launchctl-commands/

Al intentar aprender más sobre LimitLoadToSessionType sólo he conseguido encontrar esta documentación antigua archivada. https://developer.apple.com/library/archive/technotes/tn2083/_index.html

Tratando de encontrarlo en la página de documentación actual no ha resultado lo que busco. https://developer.apple.com/search/?q=LimitLoadToSessionType

He encontrado este excelente post que detalla un montón de temas relacionados. lanzada: Confusión en la semántica de bootstrap y bootout etc. después de leer las páginas del manual

0voto

Tony Williams Puntos 4903

Lo primero que noté es la clave LimitLoadToSessionType. Todos mis agentes de usuario la tienen configurada como "Aqua", lo que supongo que significa que el Finder se está ejecutando con un usuario conectado. Arregla esto primero.

No debería necesitar acceso a root o derechos de administrador para realizar los pasos requeridos.

Si vas launchctl print user te dirá que no es válido y debería listar todos los objetivos a los que puedes acceder. Si todo funciona, uno de ellos debería ser gui/501/com.pritunl.service entonces launchctl print gui/501/com.pritunl.service debería volcar una buena guía de lo que el Mac está pensando sobre el agente que está especificando. Si no lo ve, intente cargarlo de nuevo o reinicie la caja y eche otro vistazo.

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