Tengo un agente lanzamiento 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 (omitiendo): /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é sincero, no sé mucho sobre los privilegios y permisos de Mac OS X.
Para crear el archivo, lo abrí en emacs
, con sudo
la cuenta de administrador (por ejemplo, usando el su
comando ya que la otra cuenta no tiene privilegios de sudo) y luego lo guardé.
¿Qué cuenta necesito usar para crear el archivo para que funcione para todos los usuarios?
¿Necesito usar el comando sudo?
¿Necesito cambiar los permisos del archivo (p. Ej. Uso 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?
fuente
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Respuestas:
Si una raíz es propiedad de root y un usuario que no la pueda escribir, eso es un problema de seguridad.
Puede cambiar el propietario a raíz
sudo chown root <filename>
, y cambiar los permisos consudo chmod 644 <filename>
(4 para acceso de lectura, 2 para acceso de escritura, 1 para ejecutar acceso, sumado. El primer número es para el propietario, el segundo para el grupo, el tercero para todos.)fuente
launchctl
. Creé el archivo como mi usuario normal y estaba ejecutando consudo
. De ahí el error. Como root no es el propietario del archivo, Nosudo
no era necesario. Corrí sinsudo
y funcionó bien.Desde el launchctl (1) página de manual ‘s descripción del
load
subcomando:launchctl tiene varios mensajes "dudosos ...". El launchd código para 10.6.7 (por ejemplo) tiene tres de tales mensajes en su
launchctl.c
(véase la funciónpath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
Para evitar estos mensajes, un nombre de ruta debe ser (# 3) un archivo o directorio normal 1 (o un enlace simbólico a uno) que sea (# 1) propiedad de root o el usuario que invoca y (# 2) no "grupo" u "otro "Escribible (es decir
chmod go-w
).1 No hay canalizaciones con nombre, nodos de dispositivos especiales de bloque / carácter, zócalos de dominio local, etc.
Probablemente su archivo sea propiedad del usuario administrador ya que usted dice que no recibe el mensaje al iniciar sesión como ese usuario (la ruta de acceso es propiedad del usuario que invoca en ese caso).
Para que el nombre de ruta funcione para otros usuarios, debe ser propiedad de root.
Para arreglar esto, haga:
fuente
Gracias por la respuesta (cambiar de propietario a raíz): eso es todo lo que necesitaba.
Para hacer esto un poco más que una publicación 'yo también' ... llegué aquí a través de una ruta complicada: estaba recibiendo errores de "Esta API solo puede ser utilizada por un proceso que se ejecuta dentro de una sesión de Aqua" para un launchdaemon. La búsqueda de una respuesta a eso me llevó a la 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 'dudosa propiedad'. Así es como llegué aquí, donde se resolvió mi problema final.
Tal vez agregar todo eso a esta discusión hará que algún motor de búsqueda vincule esta página a uno de los problemas precursores, ahorrando así a algún futuro aventurero.
fuente
para el archivo en ~ / Library / LaunchAgent propiedad del usuario y no root no sudo, si lo hace, tendrá que cambiar la propiedad ya que lo está cargando desde el usuario root
fuente
Esto es lo que sucede cuando la gente no sabe cómo
sudo
funciona. Para deshabilitar los servicios que están en archivos propiedad de su usuario, simplemente llamelaunchtl
sinsudo
.fuente