¿Por qué aparece un error de "propiedad dudosa del archivo" cuando Launch Agent ejecuta mi archivo .plist?

54

Tengo un agente de inicio configurado para ejecutar un archivo .plist, por ejemplo: /Library/LaunchAgent/foo.plist . Dentro de este .plist, está configurado para ejecutarse durante LoginWindow y Aqua .

Cuando intento iniciar mi computadora y acceder a la pantalla de inicio de sesión, esta lista debería ejecutarse, pero en su lugar da el siguiente error (en la consola):

  

launchctl: propiedad dudosa en el archivo (saltar): /Library/LaunchAgents/foo.plist

Cuando intento iniciar sesión en una cuenta que no es de administrador, aparece exactamente el mismo mensaje de error. Cuando intento iniciar sesión con una cuenta de administrador, funciona bien.

Seré honesto, no sé mucho acerca de los privilegios y permisos de Mac OS X.

Para crear el archivo, lo abrí en emacs , con sudo en la cuenta de administrador (por ejemplo, usando el comando su ya que la otra cuenta no tiene privilegios de sudo) y luego lo guardé.

¿Qué cuenta debo usar para crear el archivo para que funcione para todos los usuarios?
¿Necesito usar el comando sudo?
¿Debo cambiar los permisos de archivo (por ejemplo, usar chmod )?
¿Hay una manera fácil de tomar un archivo existente y cambiar su propiedad en lugar de tener que volver a crear el archivo? ¿Podría alguien explicar por qué ocurre este error?

    
pregunta Senseful 18.10.2010 - 00:00

5 respuestas

51

Si un plist es propiedad de root y un usuario que no es root puede escribirlo, es un problema de seguridad.

Puede cambiar el propietario a raíz con sudo chown root <filename> , y cambiar los permisos con sudo chmod 644 <filename> (4 para acceso de lectura, 2 para acceso de escritura, 1 para acceso de ejecución, agregado. El primer número es para el propietario, el segundo para el grupo, el tercero para todos.)

    
respondido por el Michiel de Mare 18.10.2010 - 16:49
14

De la launchctl (1) < La descripción de / co> manpage del subcomando load :

  

Tenga en cuenta que los archivos de configuración por usuario (Agentes de inicio) deben                 Ser propiedad del usuario que los carga. Todos los demonios de todo el sistema (LaunchDaemons) deben ser propiedad de                 raíz. Los archivos de configuración no deben ser de grupo o de escritura mundial. Estas restricciones estan en                 lugar por razones de seguridad, ya que permitir la capacidad de escritura en un archivo de configuración launchd permite una                 para especificar qué ejecutable será lanzado.

launchctl tiene varios mensajes "dudosos ...". El código launchd para 10.6.7 (por ejemplo) tiene tres mensajes de este tipo en su launchctl.c (consulte la función path_goodness_check ).

  1. Dubious permissions on file (skipping): <pathname>
  2. Dubious ownership on file (skipping): <pathname>
  3. Dubious path. Not a regular file or directory (skipping): <pathname>

Para evitar estos mensajes, una ruta debe ser (# 3) un archivo o directorio regular 1 (o un enlace simbólico a uno) que es (# 1) propiedad de root o del usuario que invoca y ( # 2) no "de grupo" u "otro" que se pueda escribir (es decir, chmod go-w ).

1 Sin canalizaciones con nombre, nodos de dispositivos especiales de bloques / caracteres, sockets de dominio local, etc.

Su archivo probablemente sea propiedad del usuario administrador, ya que usted dice que no recibe el mensaje al iniciar sesión como ese usuario (la ruta es propiedad del usuario que invoca en ese caso). Para que la ruta de acceso funcione para otros usuarios, debe ser propiedad de root.

Para arreglar esto, haz:

sudo chown root /Library/LaunchAgent/foo.plist
    
respondido por el Chris Johnsen 05.05.2011 - 05:21
1

Gracias por la respuesta (cambio de propietario a raíz): eso es todo lo que necesitaba.

Para hacer esto un poco más que un mensaje 'yo también' ... Llegué aquí por una ruta complicada: estaba recibiendo "Esta API solo puede ser utilizada por un proceso que se ejecuta dentro de una sesión de Aqua" errores para un launchdaemon . La búsqueda de una respuesta me llevó a nota técnica de Apple sobre demonios y agentes que explicaba cómo resolver el error de "sesión de Aqua", pero eso me dejó con problemas de "propiedad dudosa". Así es como llegué aquí, donde se resolvió mi problema final.

Tal vez agregar todo eso a esta discusión hará que algunos motores de búsqueda vinculen esta página con uno de los problemas precursores, lo que le ahorrará tiempo a algún futuro aventurero.

    
respondido por el Matt Strange 08.12.2014 - 22:30
-2

para el archivo en ~ / Library / LaunchAgent que es propiedad del usuario y no root, no sudo, si tiene que cambiar la propiedad ya que lo está cargando desde el usuario root

    
respondido por el radha 09.11.2011 - 15:47
-3

Esto es lo que sucede cuando las personas no saben cómo funciona sudo . Para deshabilitar los servicios que se encuentran en archivos que son propiedad de su usuario, simplemente llame a launchtl sin sudo .

    
respondido por el Maximo Pech 16.07.2012 - 05:42

Lea otras preguntas en las etiquetas