Xulrunner se bloquea cuando se ejecuta con un usuario desfavorecido

Xulrunner se bloquea cuando se ejecuta con un usuario desfavorecido

Utilizo SlimerJs como navegador sin cabeza en un servidor. Como el servidor no tiene xserver, utilicé xvfb para ejecutarlo.

El comando es algo como esto:

xvfb-run --server-args="-screen 0, 1024x768x24" slimerjs-0.10.0pre/slimerjs \
script.js --debug=yes "/tmp/file986Iww" "/tmp/file28bAEv" "pdf"

El archivo script.jstoma un nombre de archivo para entrada, un nombre de archivo para salida y un formato para convertir, utilizando la capacidad de impresora de Slimer.

Mi problema es que cuando se ejecuta como root, funciona bien. Pero cuando dejo que Apache haga el trabajo, falla y se bloquea.

Apache se ejecuta bajo www-datausuario y grupo. Este es el resultado del comando anterior:

slimerjs-0.10.0pre/xulrunner/xulrunner -app slimerjs-0.10.0pre/application.ini --profile /tmp/slimerjs.gRAJJar6 -no-remote script.js --debug=yes /tmp/file986Iww /tmp/file28bAEv pdf
Xlib:  extension "RANDR" missing on display ":99".
JavaScript warning: resource://slimerjs/slUtils.jsm, line 154: JavaScript 1.7's let blocks are deprecated
JavaScript error: jar:file:///var/www/project/slimerjs-0.10.0pre/xulrunner/omni.ja!/components/XULStore.js, line 66: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProperties.get]
** stuck forever here **

La línea 66 de XULStore.jses:

65. Services.obs.addObserver(this, "profile-before-change", true);
66. this._storeFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
67. this._storeFile.append(STOREDB_FILENAME);

Al tratar de ver qué está mal con strace, muéstrame que está atrapado en una especie de bucle...

No veo ninguna razón por la que este usuario no pueda ejecutar este binario.
¿Cómo puedo depurar qué permiso falta o qué va mal con xulrunner?

No publiqué la cinta porque es bastante pesada, no dudes en solicitarla si crees que puede contener información relevante.

$ uname -a
Linux *host* 3.10-0.bpo.2-amd64 #1 SMP Debian 3.10.5-1~bpo70+1 (2013-08-11) x86_64 GNU/Linux

Respuesta1

Es posible que no tenga permisos para acceder o escribir en el directorio de perfil que está intentando recuperar.

Aunque (presumiblemente) está intentando configurar el directorio de perfil a través --profile /tmp/slimerjs.gRAJJar6delDocumentación de SlimerJSindica que esto debería ser -profile(un solo guión)

De forma predeterminada, si omite la opción de perfil, como parece que está haciendo debido al guión doble frente al guión único, entonces "SlimerJS [creará] un perfil temporal cada vez que lo inicie" creando un nuevo directorio en "$ INICIO/.innophi/slimerjs/"

Dado que está intentando ejecutar esto, www-dataverifique su directorio de inicio y verifique que puede crear y acceder a archivos en la ruta del directorio predeterminado de SlimerJS o usarlo -profileen lugar de --profiley verificar que puede crear y acceder a archivos en la carpeta especificada.

información relacionada