Thread Clients auf Heartbleed testen
(7 answers)
Opened by GwenDragon at 2014-04-22 12:53
Dazu muss man ein wenig weiter ausholen.
Libs werden als "shared Objects" (.so) bereit gestellt. Perl lädt wie nahezu jedes andere Programm unter Linux die SO Dateien mit hilfe der ld.so Lib. Wenn nun eine Lib geladen werden soll, so schaut ld erst in den Pfaden in DT_RUNPATH. Dann schaut es ob die Umgebungsvariable LD_LIBRARY_PATH existiert und dann schaut es unter den in ld.so fest ein gestellten Pfaden nach den Dateien. Die fest einkompilierten Pfade können sich zwischen Distributionen unterscheiden. Aber meist ist es erst /lib/ und dann /usr/lib/ (das ist so nicht 100% korrekt da der die SO-Dateipfade ein einem Cache gespeichert werden) Willst du eine SO-Datei ersetzen, so musst du schauen ob sie kompatibel ist. Die Kompatibilität hängt von der Version ab und mit welchem Compiler sie erzeugt wurde. Es sollte die selbe Major Version sein und mit dem selben Compiler (in der selben Version) erzeugt worden sein, mit dem perl kompiliert wurde. Den Dateinamen nach dem gesucht wird, hängt davon ab wie die Datei im Sourcecode eingefügt wurde. So kann Teile einer oder die komplette Versionsbezeichung angegeben werden. Dann wird entsprechend entsprechend danach gesucht, wobei die Version an den Dateinamen angehängt wird. Willst du für ein oder wenige Scripte die Lib austauschen, so kompiliere die so Dateien passend, und kopiere das Ergebnis in einen lokalen Ordner. Beim Start vor dem Laden dem fraglichem Perl-Moduls. Setze einen BEGIN-Block in dem du die Umgebungsvariable LD_LIBRARY_PATH um den Pfad zur neu kompilierten Lib ergänzt. Willst du es für einen Nutzer ändern ergänze den Pfad in LD_LIBRARY_PATH in der .bashrc soll es global geändert werden, so tausche entweder die Dateien ganz aus oder setze LD_LIBRARY_PATH global. Wo das genau passiert hängt von der Distribution ab. ist aber meist eine bashrc irgendwo unter /etc/ |