¿Por qué una aplicación puede crear demonios sobre la marcha sin el permiso sudo y cómo detenerlo?

Primero, vengo de Linux, así que hay muchas cosas que me confunden, como los demonios.

Instalé VOX.app y tiene algún tipo de agentes y procesos relacionados con la nube que se pueden iniciar automáticamente. No hay ninguna opción en la interfaz de usuario de VOX que pueda desactivarlos. Intenté lo siguiente para eliminar esos demonios:

launchctl eliminar com.coppertino.VOXCloud
launchctl eliminar com.coppertino.VOXAgent

Los comandos anteriores ya son extraños porque no necesitaba usar sudo. La parte más extraña es que lo que hice es aparentemente inútil ya que cada vez que ejecuto VOX.app, puede crearlos una y otra vez. Esto es una locura.

Si este es el modelo de seguridad de macOS, ¿cómo puedo entender las cosas y quizás controlar esto?

Hay numerosas preguntas aquí. Este sitio funciona mejor si hace una pregunta.
Estoy de acuerdo: esto debe cerrarse si tiene varias preguntas relacionadas. Graham tiene una primera respuesta general asombrosa, así que eliminé todas las preguntas específicas e hice esto sobre el modelo de seguridad de Apple. Haga una pregunta de seguimiento con una pregunta de seguimiento específica muy limitada si tiene una versión específica de una aplicación en una versión específica de macos y desea ayuda para evitar que establezca un inicio. Puede haber pasos generales o específicos para controlar ese

Respuestas (2)

El modelo de seguridad general es que los usuarios normales pueden agregar cualquier elemento de inicio a su dominio (biblioteca de usuario para ellos) y no para el sistema, por lo tanto, no permita que las personas tengan cuentas de administrador si no confía en que no ejecutarán el software ese instalador. elementos de inicio a nivel del sistema.

No hay una manera fácil de evitar que un usuario administrador cambie el sistema. Puede aplicar gatekeeper o aplicaciones firmadas, pero la mayoría de los usuarios administradores pueden omitir esa configuración, por lo que, en el mejor de los casos, ralentiza un poco a un usuario administrador sin educación.

Trabajos por usuario y en toda la computadora

En macOS, launchd puede administrar procesos en segundo plano por usuario y en toda la computadora.

Los trabajos por usuario existen dentro de su sesión de usuario. Comienzan y terminan con su inicio y cierre de sesión en la computadora. Si los trabajos tienen tickets de trabajo asociados, los encontrará con la carpeta ~/Library/LaunchAgentsy~/Library/LaunchDaemons

Los trabajos de toda la computadora comienzan y terminan con la computadora. Estos trabajos se almacenan en /Library/LaunchAgentsy /Library/LaunchDaemons.

Los trabajos de toda la computadora administrados por Apple se almacenan en /System/Library/LaunchAgentsy /System/Library/LaunchDaemons.

Los trabajos por usuario no necesitan permiso de superusuario. Por lo tanto, no necesitaba sudodetener los trabajos instalados a nivel de usuario por vox.app.

Deshabilitar un launchdtrabajo

Puede descargar un trabajo de lanzamiento para bloquear su retorno:

Uso:launchctl unload <service-path, service-path2, ...>

  • -wAdemás, deshabilita el servicio de modo que futuras operaciones de carga darán como resultado un servicio que inicia un seguimiento pero que no puede iniciarse ni descubrirse de ninguna manera.
  • -S <session>Solo descarga los servicios asociados a la sesión especificada.
  • -D <domain>Descarga archivos launchd.plist(5) del dominio especificado. Consulte la discusión sobre este mismo indicador cuando se proporciona al subcomando de carga para obtener más detalles.

Esto -whace que la descarga se escriba en el disco y persista entre sesiones.

Para obtener más información sobre cómo detener, descargar y anular trabajos, consulte:

Muchas gracias por la explicación detallada. Ahora entiendo mejor. Pero todavía no puedo deshabilitar com.coppertino.VOXAgenty com.coppertino.VOXCloudpermanentemente. Los dos demonios se pueden encontrar mediante launchctl list | grep -i voxcomando y no se muestran ~/Library/LaunchAgents/y no tengo el directorio ~/Library/LaunchDaemons. Puedo usar launchctl removepara eliminarlos, pero la parte mala es vox.appque puedo crear dos demonios automáticamente cada vez que lo ejecuto. Así que lo elimino, vox.applos creo y repito... ¿Es posible dejar de vox.appcrear los dos demonios?
Utilice la ruta de servicio y -wpara descargar el trabajo. Eso detendrá el trabajo que se ejecuta en el futuro. ¿Quién publica vox.appy has preguntado a los desarrolladores sobre este comportamiento?
Siento preguntarte de nuevo. ¿Cómo puedo encontrar su camino? -wnecesita camino como argumento, pero no tengo idea de cuáles son sus caminos. No los encuentro en ninguno de los directorios: ~/Library/LaunchAgents, /Library/LaunchAgents, /Library/LaunchDaemons, /System/Library/LaunchAgents, /System/Library/LaunchDaemons, . Traté de usar launchctl list com.coppertino.VOXAgentque tampoco me dice el camino. Intenté usar launchctl print com.coppertino.VOXAgentwhich devuelve un error Unrecognized target specifier. Traté de buscar en Google, no encontré nada útil sobre cómo encontrar la ruta de un demonio. Lo siento
Por favor, ¿podría hacer una nueva pregunta para esto? Una nueva pregunta atraerá respuestas más específicas y una audiencia más amplia.

El problema general se maneja en la respuesta de Graham Miln. Esta respuesta es solo una ligera adición ejercida sobre la aplicación de ejemplo dada:

Versión corta: macOS tiene algunos directorios especiales para este tipo de comportamiento. Esas son las rutas globales y de usuario/Biblioteca ya mencionadas en la respuesta de Graham. Pero una ruta menos visible y, por lo tanto, menos obvia se encuentra dentro de cada paquete de aplicaciones.

Algunas aplicaciones son demasiado inteligentes. Vox es un buen ejemplo de esto. Estos agentes no están bien explicados, pero a menudo se quejan y, por lo tanto, un programa, aplicación o software potencialmente no deseado (PUPAS)

Esta aplicación desencadena una cadena de eventos cuando se copia a /Aplicaciones y nuevamente cuando se inicia por primera vez.

Dentro del paquete del paquete hay elementos de inicio de sesión:

   /Volumes/VOX/VOX.app/Contents/Library/LoginItems
  ../Loop.app
  ../VOX Agent.app

Ambos son copiados/registrados por el propio DesktopServicesHelper del sistema como un "elemento de inicio de sesión del asistente de la aplicación". Este tipo de "ayudantes" a menudo también se encuentran en otras aplicaciones y, por lo general, simplemente se hinchan y agregan molestias. En primer lugar, es posible que se bloqueen preventivamente para que no se registren mediante pequeñas aplicaciones prácticas, como BlockBlock .

Como estos todavía están contenidos en el paquete de la aplicación , ¡debería buscar o proporcionar la ruta dentro del paquete de la aplicación!

Una búsqueda de programas/ayudantes lanzados automáticamente debe incluir /Aplicaciones y ~/¡Aplicaciones!

Luego se encuentra otra molestia dentro del paquete de aplicaciones :

 /Volumes/VOX/VOX.app/Contents/XPCServices 
 /Volumes/VOX/VOX.app/Contents/XPCServices/VOX\ Toolbox.xpc
 /Volumes/VOX/VOX.app/Contents/XPCServices/com.coppertino.Vox.GNTPClientService.xpc 

Una forma de deshabilitar estos procesos por usuario para que no lo molesten se describe en la respuesta de Graham, usando launchctl.
Solo necesita buscar dentro de /Aplicaciones también.
Otro método sería ir al paquete y simplemente eliminar estos elementos. – La mayoría de las veces, esas aplicaciones comienzan bien sin ellas, solo les falta la funcionalidad respectiva. Vox fue una vez un pequeño y agradable reproductor de música 'sin lujos'. Funciona para eso sin esas molestias presentes en el disco.
A veces, las aplicaciones mejor diseñadas le ofrecen una opción para evitar esas travesuras en su diálogo de preferencias.

Favorito personal: en el caso de la aplicación del ejemplo dado, sería mejor eliminar toda la aplicación.

Para responder directamente al título de la pregunta de

¿Por qué una aplicación puede crear demonios sobre la marcha sin el permiso sudo y cómo detenerlo?

Debido a que un usuario inicia la aplicación con sus privilegios y los demonios contenidos dentro de ese paquete de aplicaciones, a veces se diseñan de manera bastante molesta para luego registrarse de manera poco transparente como "inicio automático" dentro del contexto de ese usuario y con los derechos de ese usuario. Para descargar o cancelar el registro no se requieren derechos o permisos sudo/administrativos. Si el infractor se encuentra en /Aplicaciones, la eliminación podría depender de permisos más altos.