Rularea xinc pe serverul Apache al OpenBSD

A fost cineva capabil să obțină executarea corectă a programului xinc în cadrul Apache implicit de OpenBSD? Aș dori să păstrez ca serverul de dezvoltare să funcționeze pe deplin chrootat, la fel ca serverul de producție, pentru a ne asigura că codul nostru funcționează foarte bine.

0
fr hi bn

4 răspunsuri

Primul pas ar fi colectarea de informații despre tot ceea ce trebuie să ruleze aplicația; acest lucru de obicei realizez prin rularea systrace (1) și ldd (1) pentru a afla ce este necesar pentru a rula software-ul.

O să încerc. Problema mare pe care am găsit-o cu xinc este că, deși este o aplicație PHP, vrea să știe căile de instalare a aplicației (dar totuși se întinde în alte foldere) și rulează câteva scripturi PHP în mod daemon (acele script-uri fiind cel mai greu de se execută). Deci, de exemplu, i-am spus să se instaleze în/var/www/xinc și apoi a făcut o simbolică a

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

și a funcționat parțial. Am primit interfața grafică pentru a veni puțin și a refuzat să recunoască proiectele pe care le-am creat. Cred că cea mai mare problemă este că o parte din ea rulează un chroot și cealaltă jumătate se execută afară.

Dacă toate celelalte nu reușesc, va trebui să construiesc ceva așa cum programăm în medii cromate, deoarece producția noastră este cromată. Ne-am confruntat cu probleme în care codificăm în afara unui chroot și apoi trebuie să ne întoarcem calea pentru a găsi ceea ce trebuie să facem să funcționeze în interiorul unui chroot.

0
adăugat

După ce am folosit-o niciodată pe Xinc, nu pot decât să-mi amintesc cum de obicei ajung la aplicații de chrooting.

First step would be to gather information on everything the app needs to run; this I usually accomplish by running systrace(1) and ldd(1) to find out what is needed to run the software.

Treceți prin ieșirea din

systrace -A -d. 
ldd 

and make sure that everything the app touches and needs (quite a lot of apps touch stuff it doesn't actually need) is available in the chroot environment. You might need to tweak configs and environment variables a bit. Also, if there is an option to have the app log to syslog, I usually do that and create a syslog socket (see the -a option of syslogd(8)) in order to decrease the places the app needs write access to.

What I just described is a generic way to make just about any program run in a chroot environment (however, if you need to import half the userland and some suid commands, you might want to just not do chroot :). For apps running under Apache (I'm sure you're aware that the OpenBSD httpd(8) is slightly different) you have the option (once the program has started; any dynamic libraries still needs to be present in the jail) of using apache to access the files, allowing the use of httpd.conf to import resources in the chroot environment without actually copying them.

De asemenea, este util (dacă este puțin depășit) acest link, subliniind unii au intrat în PHP chrootat pe OpenBSD.

0
adăugat

@dragonmantank

În cazul lui Xinc, sper că ați folosit PEAR pentru al instala.

pear list-files xinc/Xinc

Aceasta ar trebui să o facă și vă va arăta în cazul în care instalația dvs. Xinc a pus fișierele. Deci, chiar dacă Xinc este "doar" un mare script PHP, acesta este încă răspândit în scripturile rc și toate celelalte lucruri necesare pentru a face o aplicație să ruleze. Sunt sigur că nu trebuie să adăugați toate căile listate acolo, dar probabil unele pentru a fi difuzate.

În afară de Xinc în sine, cred că are nevoie, de asemenea, de phpUnit și de o mulțime de alte PEARS libs pentru a rula, deci ceea ce aș propune este acest lucru:

pear config-get php_dir

Și apoi trebuie să adăugați acea cale (așa cum a sugerat Henrik) la mediul chroot.

0
adăugat

Ați postat problema pe site-ul Xinc tracker de erori ? Xinc în sine ar trebui să ruleze bine, deoarece rulează atât ca un daemon cât și ca o aplicație web. După cum v-ați referit, problema poate fi că daemonul nu rulează într-un mediu chroot'ed unde, în calitate de interfață web, conduce la nici o parte să nu apuce fișierele.

0
adăugat
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT