4 votos

sandboxd para las TAZAS de los "backends" en Mac OS X Yosemite

Estoy usando un backend de CUPS personalizado para imprimir en Mac OS X. El backend funciona mediante el envío de los datos de impresión a otra máquina (utilizando ssh) y la alimentación de los datos a la impresora desde allí. Para que esto funcione, el backend (implementado como un script de shell), necesita tener acceso a un servidor ssh clave privada. Problema: desde que he actualizado a Yosemite, el script ya no puede acceder al archivo que contiene la clave. En su lugar aparece el siguiente mensaje de error en la consola:

sandboxd: [...] deny file-read-data /

y

/usr/libexec/cups/backend/.mybackend-ssh/id_dsa: Permission denied

en las TAZAS de archivo de registro de errores.

¿Cómo puedo inyectar un archivo en la caja de arena se utiliza para aislar TAZAS de motores?

6voto

chris1h1 Puntos 31

Mientras que esto no responde a la pregunta, me topé con esto - http://www.papercut.com/kb/Main/MacOS1010YosemiteKnownIssues - cuando se trata de obtener Tea4CUPS de trabajo en OS X 10.10 (yo no era capaz de lograr esto):

Para obtener PaperCut de trabajo con Mac OS 10.10 en el ínterin, deberás desactivar sandboxing. Editar el archivo /etc/cups/cups-archivos.conf para incluir la nueva línea 'Sandboxing Relajado". A continuación, reinicie TAZAS para que esto tenga efecto.

sudo sh -c 'echo "Sandboxing Relaxed" >> /etc/cups/cups-files.conf'
sudo launchctl stop org.cups.cupsd

4voto

gbn Puntos 197263

Después de una larga sesión de depuración, por fin he solucionado este problema. En el caso de que otras personas ejecutan en las mismas dificultades, aquí es lo que he aprendido acerca de TAZAS de motores de bajo Mac OS X Yosemite:

  • Los motores son archivos ejecutables (en mi caso, una secuencia de comandos de shell) en la /usr/libexec/cups/backend/ directorio. Información sobre el trabajo de impresión se pasa en estos programas a través de argumentos de línea de comandos ($1=job-id, $2=usuario, $3=título, $4=copias, $5=opciones, $6=archivo) y las variables de entorno (por ejemplo $DEVICE_URI).

  • Los motores son ejecutados como usuario _lp, grupo _lp, con permisos restringido por sandboxd. El directorio actual cuando el motor se arranca es el directorio root /, pero el backend no tiene permiso para leer este directorio. Los directorios que se puede leer incluir /usr/libexec/cups/backend/, /etc/ y subdirectorios del mismo. Sólo muy restringido (o ninguno en absoluto?) acceso al directorio home del usuario _lp ( /var/spool/cups) está permitido.

  • Mi backend requiere el uso de ssh. Para que esto funcione, ssh necesita ser capaz de tener acceso a la clave privada necesaria para iniciar sesión en el servidor remoto, y un known_hosts archivo que identifica el servidor remoto. La clave necesaria que puede ser colocado en /usr/libexec/cups/backend/ o en un subdirectorio, debe ser legible sólo por el usuario _lp. Parece que ssh, cuando se inicia desde el backend de CUPS, no tiene permiso para acceder a /var/spool/cups/.ssh/, incluso si este directorio no existe; por lo tanto el known_hosts archivo debe estar almacenado en /etc/, /etc/ssh_known_hosts. (Tenga en cuenta que el ssh página de manual incorrectamente afirma que esta debe ser /etc/ssh/ssh_known_hosts.)

    Edit: En MacOS X 10.11 (El Capitan), ssh ahora parece usar el documento en la ubicación de /etc/ssh/ssh_known_hosts de la conocida archivo de hosts. Tuve que mover mi archivo en /etc/ssh/ para hacer el filtro de impresora trabajo después de la actualización del sistema operativo.

  • Para depurar problemas como este, usando cupsctl --debug-logging es de un valor incalculable: Después de este comando es emitido, todo lo escrito a stderr en el backend de CUPS aparece en /var/log/cups/error_log. El registro se puede apagar de nuevo el uso de cupsctl --no-debug-logging. Además, siempre que sandboxd niega un intento de acceso al archivo, un mensaje como sandboxd[426] ([15998]): sh(15998) deny file-read-data / puede ser encontrado en /var/log/system.log.

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