¿Por qué aparece una “propiedad dudosa de archivo” error al lanzamiento agente se ejecuta mi archivo .Plist?

apple.stackexchange https://apple.stackexchange.com/questions/3250

Pregunta

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

Cuando intento para poner en marcha el ordenador y llegar a la pantalla de inicio de sesión, este plist debe correr, pero en vez da el siguiente error (en la consola):

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

Cuando intento de inicio de sesión en una cuenta que no es administrador, da exactamente el mismo mensaje de error. Cuando intento de inicio de sesión con una cuenta de administrador, que trabaja muy bien.

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

Para crear el archivo, que lo abrió en emacs, con sudo en la cuenta de administrador (por ejemplo, utilizando el comando su ya que la otra cuenta no tiene privilegios sudo) y luego guardado.

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

¿Fue útil?

Solución

Si un plist es propiedad de la raíz y puede ser escrito por un usuario distinto de root, que es un problema de seguridad.

Se puede cambiar el propietario a root con sudo chown root <filename>, y cambiar los permisos con sudo chmod 644 <filename> (4 para el acceso de lectura, 2 para el acceso de escritura, 1 para el acceso de ejecución, suman. El primer número es para el propietario, el segundo para el grupo, la tercera para todos.)

Otros consejos

Desde el launchctl (1) página de manual 's descripción del subcomando load:

Tenga en cuenta que cada usuario los archivos de configuración (LaunchAgents) mosto ser propiedad del usuario de cargarlas. Todos los demonios de todo el sistema (LaunchDaemons) deben ser propiedad de raíz. Los archivos de configuración no deben ser grupos de personas o con permisos de escritura. Estas restricciones están en lugar por razones de seguridad, ya que permite la capacidad de escritura a un archivo de configuración permite launchd para especificar qué se pondrá en marcha ejecutable.

launchctl tiene varios “dudosas ...” mensajes. La launchd código para 10.6.7 (por ejemplo) tiene tres de tales mensajes en su launchctl.c (ver la path_goodness_check función).

  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 de una ruta de acceso debe ser (# 3) un archivo normal o directorio 1 (o un enlace simbólico a uno) que es (# 1), propiedad de la raíz o el usuario que invoca y ( # 2) no “grupo” o “otro” de escritura (es decir chmod go-w).

1 No hay canalizaciones con nombre, bloque de caracteres / nodos de dispositivos especiales, conectores de dominio locales, etc.


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

Para arreglar esto, hacer:

sudo chown root /Library/LaunchAgent/foo.plist

Gracias por la respuesta (cambio de propietario a root) -. Eso es todo lo necesario

Para hacer esto un poco más de un puesto de 'yo también' ... llegué aquí a través de un camino tortuoso: Me estaba "Esta API sólo puede ser utilizado por un proceso que se ejecuta dentro de una sesión de gimnasia acuática" errores para un launchdaemon . La búsqueda de una respuesta a eso me llevó a nota técnica de Apple en demonios y agentes el que explican cómo resolver el error 'sesión de gimnasia acuática', pero que me dejó con cuestiones de propiedad dudosa ''. Así es como llegué aquí, donde se resolvió mi problema final.

Tal vez la adición de todos los que en esta discusión hará que algunos motores de búsqueda para vincular esta página a uno de los temas precursores, ahorrando así un futuro aventurero algún tiempo.

para el archivo en ~ / Library / LaunchAgent propiedad de la sudo Dont usuario y no la raíz, si lo hace usted tendrá que cambiar la propiedad ya que va a cargar desde el usuario root

Esto es lo que sucede cuando la gente no sabe cómo funciona la sudo. Para desactivar los servicios que se encuentran en los archivos propiedad de su usuario sólo launchtl llamada sin sudo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a apple.stackexchange
scroll top