Xulrunner-Absturz beim Ausführen mit unterprivilegiertem Benutzer

742
Cyrbil

Ich verwende SlimerJs als Headless-Browser auf einem Server. Da der Server keinen xserver hat, habe ich xvfb verwendet, um ihn auszuführen.

Der Befehl lautet ungefähr so:

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

Die Datei script.jsbenötigt einen Dateinamen für die Eingabe, einen Dateinamen für die Ausgabe und ein Format, in das konvertiert werden kann, wobei die Druckerfunktion von Slimer verwendet wird.

Mein Problem ist, dass es beim Laufen als root gut funktioniert. Aber wenn ich Apache die Arbeit machen lasse, versagt er und bleibt hängen.

Apache läuft unter www-dataBenutzer und Gruppe. Dies ist die Ausgabe des vorherigen Befehls:

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 ** 

Die Linie 66 von XULStore.jsist:

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

Der Versuch zu sehen, was mit strace los ist, zeigt mir, dass es in einer Art Schleife steckt ...

Ich sehe keine Gründe, warum dieser Benutzer diese Binärdatei nicht ausführen kann.
Wie kann ich debuggen, welche Berechtigung fehlt oder was mit xulrunner nicht funktioniert?

Ich habe die Strace nicht veröffentlicht, weil sie ziemlich schwer ist. Fragen Sie einfach danach, wenn Sie der Meinung sind, dass sie relevante Informationen enthält.

$ 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 
1

1 Antwort auf die Frage

2
ssnobody

Möglicherweise haben Sie keine Berechtigung, auf das Profilverzeichnis zuzugreifen oder zu schreiben, das Sie abzurufen versuchen.

Obwohl Sie (vermutlich) versuchen, das Profilverzeichnis über --profile /tmp/slimerjs.gRAJJar6die SlimerJS-Dokumentation festzulegen, ist dies ein Hinweis-profile (einfacher Strich).

Wenn Sie die Profiloption auslassen, wie es scheint, als würden Sie den doppelten Bindestrich gegen den einfachen Bindestrich ausführen, wird standardmäßig "SlimerJS [erstellt] bei jedem Start ein temporäres Profil erstellt", indem Sie ein neues Verzeichnis in "$" erstellen HOME / .innophi / slimerjs / "

Da Sie dies versuchen, so laufen www-dataüberprüfen ihr Home - Verzeichnis und stellen Sie sicher, dass Sie erstellen können und Zugriff auf Dateien im SlimerJS Standardverzeichnispfad oder verwenden Sie -profilestatt --profileund überprüfen können Sie erstellen und Zugriff auf Dateien in den angegebenen Ordner.

Das war viel mehr als das, aber Sie haben mich auf die richtige Spur gebracht. Durch die Verwendung von "strace" und "grep EACC" habe ich gesehen, wo die Dateien Probleme verursachen. Profil war in der Tat beteiligt. Ich musste viele Dateien erstellen und chmoden, damit es funktioniert. Cyrbil vor 9 Jahren 0