python in chroot - was kann noch fehlen?
Ich bin gerade dabei auf einem Apache/1.3.29 python in einer chroot zu installieren. Da ich dabei anscheinend immer noch das Problem habe, dass Python eine seiner Libraries nicht findet wollte ich testen ob ich Python "einfach manuell" in einer chroot aufrufen kann - dazu habe ich mir folgende "Testschritte" überlegt:
(0) Vorarbeit: python in der chroot installieren
(1) chroot-starten (idealerweise auch gleich als der zukünftige httpd-user)
(2) python aufrufen (und glücklich sein - ab hier würde ich zumindest mal wissen, dass mein problem (vermutlich) httpd.conf bedingt ist - und nicht chroot-bedingt)
(ad 0) Zur Vorarbeit habe ich alle libraries zu python (siehe 'ldd /usr/local/bin/python') in meine chroot-umgebung ('/var/www') kopiert.
lieferte folgende abhängigkeiten:
/usr/local/bin/python
/usr/local/lib/libpython2.5.so.1.0
/usr/lib/libutil.so.11.0
/usr/lib/libstdc++.so.45.0
/usr/lib/libm.so.3.0
/usr/lib/libpthread.so.11.0
/usr/lib/libc.so.48.0
/usr/libexec/ld.so
diese habe ich nach /var/www kopiert. Anschliessend habe ich (sicherheitshalber) alle zugehörigen Libraries mit chown root:www und chmod 775 versehen (mein httpd-user war 'www').
(ad 1 und 2) Den Aufruf hatte ich wie folgt vor...
...dummerweise quittierte der chroot-Aufruf meinen Versuch mit obiger Fehlermeldung. Dh, anscheinend hat ld.so gleich die erste Library nicht gefunden.
Habe ich hier noch etwas übersehen? Ich dachte, dass das Übernehmen der Libraries in mein "zukünftiges root-verzeichnis" und Setzen der Berechtigungen ausreichen sollte?
Die Maschine auf der ich das gerade teste läuft auf OpenBSD 4.4 (stable i386).
Die wenn (sozusagen als "Positiv-Testfall" zu python) "als normaler Benutzer" und ohne chroot python aufrufe, dann habe ich keinerlei LD_Environmentvariablen (oder sonstige Pfade zu den Libraries) die sich auf ld.so auswirken könnten gesetzt.
...ich denke ich übersehe hier etwas ganz Grundlegendes und würde mich über einen Hinweis von Euch freuen - Danke!
(0) Vorarbeit: python in der chroot installieren
(1) chroot-starten (idealerweise auch gleich als der zukünftige httpd-user)
(2) python aufrufen (und glücklich sein - ab hier würde ich zumindest mal wissen, dass mein problem (vermutlich) httpd.conf bedingt ist - und nicht chroot-bedingt)
(ad 0) Zur Vorarbeit habe ich alle libraries zu python (siehe 'ldd /usr/local/bin/python') in meine chroot-umgebung ('/var/www') kopiert.
$ldd /usr/local/bin/python
lieferte folgende abhängigkeiten:
/usr/local/bin/python
/usr/local/lib/libpython2.5.so.1.0
/usr/lib/libutil.so.11.0
/usr/lib/libstdc++.so.45.0
/usr/lib/libm.so.3.0
/usr/lib/libpthread.so.11.0
/usr/lib/libc.so.48.0
/usr/libexec/ld.so
diese habe ich nach /var/www kopiert. Anschliessend habe ich (sicherheitshalber) alle zugehörigen Libraries mit chown root:www und chmod 775 versehen (mein httpd-user war 'www').
(ad 1 und 2) Den Aufruf hatte ich wie folgt vor...
$ chroot -g www -u www /var/www/ /usr/local/bin/python
/usr/local/bin/python: can't load library 'libpython2.5.so.1.0'
...dummerweise quittierte der chroot-Aufruf meinen Versuch mit obiger Fehlermeldung. Dh, anscheinend hat ld.so gleich die erste Library nicht gefunden.
Habe ich hier noch etwas übersehen? Ich dachte, dass das Übernehmen der Libraries in mein "zukünftiges root-verzeichnis" und Setzen der Berechtigungen ausreichen sollte?
Die Maschine auf der ich das gerade teste läuft auf OpenBSD 4.4 (stable i386).
Die wenn (sozusagen als "Positiv-Testfall" zu python) "als normaler Benutzer" und ohne chroot python aufrufe, dann habe ich keinerlei LD_Environmentvariablen (oder sonstige Pfade zu den Libraries) die sich auf ld.so auswirken könnten gesetzt.
...ich denke ich übersehe hier etwas ganz Grundlegendes und würde mich über einen Hinweis von Euch freuen - Danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115048
Url: https://administrator.de/forum/python-in-chroot-was-kann-noch-fehlen-115048.html
Ausgedruckt am: 25.12.2024 um 16:12 Uhr
5 Kommentare
Neuester Kommentar
So weit ich weiss, sollte die libpython2.5.so.1.0 in /usr/local/lib/python liegen und nicht in /usr/local/bin/python oder in /var/www/ .
IMHO, du musst in deinem chroot Umgebung auch die Pfade behalten:
/var/www/usr/local/bin/python
/var/www/usr/local/lib/libpython2.5.so.1.0
usw.
Den Befehl bleibt wie vorher:
chroot -g www -u www /var/www/ /usr/local/bin/python
/var/www/usr/local/bin/python
/var/www/usr/local/lib/libpython2.5.so.1.0
usw.
Den Befehl bleibt wie vorher:
chroot -g www -u www /var/www/ /usr/local/bin/python
ich habe das gleiche gemacht was du machen wolltest. Bei mir funktioniert. Hasst du eigentlich /usr/local/bin/python2.5 kopiert oder /usr/local/bin/python ? Das zweite ist nämlich ein Link.