Вопрос

Кто-нибудь смог заставить xinc корректно работать под chroot-сервером Apache по умолчанию OpenBSD?Я хотел бы, чтобы наш сервер разработки работал полностью с chroot, как и наш производственный сервер, чтобы мы могли быть уверены, что наш код работает нормально с chroot.

Это было полезно?

Решение

Вы разместили проблему на Xinc? баг трекер?Сам Xinc должен работать нормально, поскольку он работает и как демон, и как веб-приложение.Как вы упомянули, проблема может заключаться в том, что демон не работает в среде chroot, в отличие от веб-интерфейса, что приводит к тому, что ни одна из сторон не получает файлы.

Другие советы

@dragonmantank

В случае с Xinc, я надеюсь, вы использовали PEAR для его установки.

pear list-files xinc/Xinc

Это должно сделать это и показать вам, куда ваша установка Xinc поместила свои файлы.Таким образом, хотя Xinc — это «всего лишь» один большой PHP-скрипт, он по-прежнему разделен на rc-скрипты и все остальные вещи, необходимые для запуска приложения.Я уверен, что вам не нужно добавлять все перечисленные там пути, но, возможно, некоторые из них нужны для запуска.

Помимо самого Xinc, я думаю, для его работы также нужен phpUnit и куча других библиотек PEAR, поэтому я бы предложил следующее:

pear config-get php_dir

А затем вам нужно добавить этот путь (как предложил Хенрик) в среду chroot.

Сам я никогда не использовал xinc, поэтому могу лишь намекнуть, как я обычно использую chroot-приложения.

Первым шагом будет сбор информации обо всем, что необходимо приложению для запуска;это я обычно делаю, запустив системная строка(1) и лдд(1) чтобы узнать, что необходимо для запуска программного обеспечения.

Пройдите через вывод

systrace -A -d. <app>
ldd <app>

и убедитесь, что все, чего касается приложение и что ему нужно (довольно много приложений затрагивают вещи, которые ему на самом деле не нужны), доступно в среде chroot.Возможно, вам придется немного настроить конфигурации и переменные среды.Кроме того, если есть возможность сохранить журнал приложения в системном журнале, я обычно делаю это и создаю сокет системного журнала (см. параметр -a в системный журнал(8)), чтобы уменьшить количество мест, к которым приложению необходим доступ на запись.

То, что я только что описал, — это общий способ заставить практически любую программу работать в среде chroot (однако, если вам нужно импортировать половину пользовательского пространства и некоторые команды suid, вы можете просто не выполнять chroot :).Для приложений, работающих под управлением Apache (я уверен, вы знаете, что OpenBSD httpd(8) немного отличается) у вас есть такая возможность (после запуска программы;любые динамические библиотеки по-прежнему должны присутствовать в тюрьме) использования Apache для доступа к файлам, что позволяет использовать httpd.conf импортировать ресурсы в среду chroot без их фактического копирования.

Также полезно (хотя и немного устарело) этот ссылка, описывающая некоторые ошибки в chrooted PHP на OpenBSD.

Первым шагом будет сбор информации обо всем, что необходимо приложению для запуска;Обычно я выполняю это, запуская systrace(1) и ldd(1), чтобы выяснить, что необходимо для запуска программного обеспечения.

Я попробую.Большая проблема, с которой я столкнулся при использовании xinc, заключается в том, что, хотя это PHP-приложение, оно хочет знать пути установки приложения (однако оно все равно распределяет данные по другим папкам) и запускает некоторые PHP-скрипты в режиме демона (эти сценарии труднее всего выполнить). беги).Так, например, я сказал ему установить в /var/www/xinc, а затем создал символическую ссылку

/var/www/var/www/xinc -> /var/www/xinc

и это частично сработало.У меня появился графический интерфейс, но он отказался распознавать любые проекты, которые я настроил.Я думаю, самая большая проблема заключается в том, что часть системы работает под управлением chroot, а другая половина — снаружи.

Если все остальное не поможет, мне просто придется что-то построить, поскольку мы программируем внутри chrooted-сред, поскольку наше производство тоже chrooted.Мы столкнулись с проблемами, когда мы кодируем вне chroot, а затем вынуждены возвращаться назад, чтобы найти то, что нам нужно, чтобы заставить его работать внутри chroot.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top