Сбой Xulrunner при работе с неимущим пользователем

620
Cyrbil

Я использую 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принимает имя файла для ввода, имя файла для вывода и формат для преобразования, используя возможности принтера слизи.

Моя проблема в том, что при запуске от имени 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

1 ответ на вопрос

2
ssnobody

Возможно, у вас нет прав доступа или записи в каталог профиля, который вы пытаетесь получить.

Хотя вы (предположительно) пытается установить каталог профиля с помощью документации SlimerJS указывает, что это должно быть (дефис)--profile /tmp/slimerjs.gRAJJar6-profile

По умолчанию, если вы опускаете опцию профиля, как вы, похоже, делаете из-за двойной черты или одиночной черты, тогда «SlimerJS [будет] создавать временный профиль каждый раз, когда вы его запускаете», создавая новый каталог в «$ HOME / .innophi / slimerjs /»

Поскольку вы пытаетесь запустить это как, www-dataпроверьте их домашний каталог и убедитесь, что вы можете создавать и получать доступ к файлам в пути к каталогу по умолчанию SlimerJS или использовать -profileвместо этого --profileи проверять, можете ли вы создавать и получать доступ к файлам в указанной папке.

Их было намного больше, но ты поставил меня на правильный путь. Используя `strace` и` grep EACC`, я увидел, что файлы вызывают проблемы. Профиль был действительно вовлечен. Я должен был создать и chmod много файлов, чтобы это работало. Cyrbil 8 лет назад 0

Похожие вопросы