Fehler in OpenBSD 'Gerät nicht konfiguriert' in chroot-ed-Umgebung
1237
TDrabas
Ich habe diese Frage zu StackOverflow gestellt, aber angesichts des Kommentars scheint es hier besser zu passen .
Dies ist höchstwahrscheinlich ein Problem der Systemkonfiguration - Sie haben das Gefängnis nicht richtig eingerichtet - und nicht ein Python-Problem. Sie können das sehr einfach testen, indem Sie einfach sehen, was passiert, wenn Sie beispielsweise -c16 / dev / urandom oder dd ausführen, wenn = / dev / urandom bs = 16 count = 1 aus dem Gefängnis kommt. Wenn Sie dieselbe Fehlermeldung erhalten, wenden Sie sich an SuperUser oder ServerFault oder ein anderes allgemeines Unix- oder OpenBSD-Forum. - abarnert
Folgendes habe ich getan:
Ich möchte einige CGI-Skripte (in Python geschrieben) auf meinem OpenBSD-Server ausführen. Da der Webserver unter OpenBSD in einem Gefängnis läuft, habe ich die gesamte Ordnerstruktur neu erstellt (/ bin / dev / usr / usr / local / lib usw.). Ich bekomme jedoch immer noch '500 Server Internal Error', wenn ich ' Beim Versuch, einige Python-Module zu importieren, die Zugriff auf das / dev / urandom-Gerät benötigen.
dh es ist definitiv ein Konfigurationsfehler. Kann jemand etwas Licht werfen, wo ich einen Fehler machen kann? Jede Hilfe wäre wirklich dankbar!
Haben Sie / dev mit `mount -o bind` in Ihrer Chroot-Umgebung installiert? [Diese Antwort] (http://superuser.com/a/165118/156446) enthält eine kurze Übersicht darüber, warum dies für `dev` erforderlich ist
jam vor 10 Jahren
1
Ich habe es versucht, aber OpenBSD hat nicht die Option "bind" ... Gibt es ein Äquivalent? Ich lese herum und anscheinend könnte man das mit "mount_null" tun, aber das wurde entfernt ... Kann ich stattdessen "mount -o sync / dev" verwenden?
TDrabas vor 10 Jahren
0
Ich habe den Täter gefunden (teilweise ...). Das Gerät muss nicht montiert werden. Wie ich bereits erwähnt habe, konnte ich in OpenBSD kein `mount -o bind`-Äquivalent finden. Dem Ratschlag von Kommentaren von [dieser Website] (http://synacks.blogspot.com.au/2009/01/django-on-openbsd.html) folgend, reicht es aus, mknod (wie ich es schon früher getan habe) und ` nodev` aus `/ etc / fstab`, wo das System` \ var` einfügt. Obwohl mein Skript immer noch nicht funktioniert, meldet es sich nicht mehr. ** Gerät nicht konfiguriert **
TDrabas vor 10 Jahren
1
Zum Abschluss: Die _hashlib.so (von `import cgitb` aufgerufen) hängt von einer gemeinsam genutzten Bibliothek libcrypto.so ab. Das war das Problem, weil mein Skript nicht lief ... Vielen Dank für Ihre Hilfe!
TDrabas vor 10 Jahren
1
Ich bin froh, dass Sie es sortiert haben, es tut mir leid, wenn ich Sie zu einem linuxspezifischen Kaninchenbau geführt habe :) Sie können das als Antwort posten, es wird Sie nach einem Tag akzeptieren lassen, glaube ich.
jam vor 10 Jahren
0
Danke für Ihre Hilfe! Ich bin froh, dass es endlich funktioniert.
TDrabas vor 10 Jahren
0
2 Antworten auf die Frage
2
TDrabas
Ich habe den Täter gefunden.
Nach den Ratschlägen aus dem Kommentarbereich dieser Site reicht es aus, mknod (wie ich es schon früher getan habe) und nodevvon /etc/fstabdort aus zu entfernen, wo sich das System befindet /var. Dadurch wird das zulässige Flag "keine Geräte" entfernt /var.
Um mein Skript laufen zu lassen, musste ich schließlich alle gemeinsam genutzten Objekte kopieren, von denen Pythons cgitbModul ( na ja, tatsächlich _hashlib.so) abhängt - nämlich libcrypto.so.
Um herauszufinden, worauf Sie _hashlib.soangewiesen sind, ldd _hashlib.sobefindet sich meine in /usr/local/lib/python2.7/lib-dynload/_hashlib.so. Hinweis - Sie finden diese Bibliothek, wenn Sie OpenSSL auf Ihrem System installiert haben. Wenn Sie dies nicht tun, _hashlib.solädt z _md5.so. B. usw., die nur gefunden werden können, wenn Sie dies tun
Kein OpenSSL haben
Konfigurierter und eingebauter Python mit --with-pydebugFlag ( weitere Informationen finden Sie in dieser Antwort )
Hoffe das hilft!
-1
Carlos Henrique Cano
Ich hatte ein ähnliches Problem beim Ausführen von Django in FreeBSD und OPENBSD. Mein Problem war, dass der Gunicorn-Prozess als Root ausgeführt wurde, während sich die Skripts in anderen Benutzernamen / Verzeichnis befanden.
tl; dr -> Überprüfen Sie, ob der Prozess mit dem richtigen Benutzer ausgeführt wird