使用低權限使用者執行時間 Xulrunner 崩潰

使用低權限使用者執行時間 Xulrunner 崩潰

我使用 SlimerJs 作為伺服器上的無頭瀏覽器。因為伺服器沒有xserver,所以我使用xvfb來運行它。

該命令是這樣的:

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

此文件script.js採用輸入檔名、輸出檔名以及使用 slimer 的印表機功能轉換為的格式。

我的問題是,當以 root 身份運行時,它工作正常。但是當我讓 apache 完成工作時,它失敗並卡住了。

Apache 在www-data使用者和群組下運作。這是上一個命令的輸出:

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

第66行XULStore.js是:

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

試著看看 strace 有什麼問題,告訴我它陷入了某種循環...

我看不出該用戶無法運行此二進位檔案的原因。
如何調試 xulrunner 缺少哪些權限或出了什麼問題?

我沒有發布 strace,因為它相當重,如果您認為它可能包含相關信息,請隨時索取。

$ 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

您可能無法存取或寫入您嘗試檢索的設定檔目錄。

儘管您(大概)嘗試--profile /tmp/slimerjs.gRAJJar6透過SlimerJS 文檔表示這應該是-profile(單破折號)

預設情況下,如果您省略配置文件選項,就像您由於雙破折號與單破折號所做的那樣,那麼“SlimerJS [將]在每次啟動時創建一個臨時配置文件”,方法是在“$”中建立一個新目錄HOME/.innophi/slimerjs/"

由於您嘗試執行此命令,www-data請檢查其主目錄並驗證您是否可以在 SlimerJS 預設目錄路徑中建立和存取文件,或使用-profile代替--profile並驗證您是否可以在指定資料夾中建立和存取文件。

相關內容