Wer braucht einen Neustart beim Austausch der ssl-libs?
Hallo Liste, ich habe mal eine Verständnisfrage. Jetzt war ja mal wieder openssl mit einem Sicherheitspatch dran. Als Suse-Nutzerin rufe ich halt YaST auf, der dann wieder suseconfig aufruft. Meistens gucke ich jedoch nicht hin, was das alles macht. Ist ja Routine. Jetzt gibt es jedoch einige Anwendungen, die auf die Libs von openssl zugreifen. In welchem Moment erhalten diese Anwendungen die gepatchte Ausgabe der ssl-Bibliotheken? Wenn sie sie das nächste Mal brauchen? Oder erst nach einem Neustart des kompletten Systems - so wollte es ein Ubuntu einem Kollegen verkaufen? Ich behaupte, beim nächsten Aufruf. Es werden ja nicht alle Anwendungen ihre eigene Kopie der Bibliotheken im Speicher halten. Einzig einen sshd würde ich neu starten, falls das suseconfig (oder die Installer der anderen Distris nicht von alleine tun würden). Helga -- ## Technik: [http://de.opensuse.org] ## Politik: [http://www.piratenpartei.de] ## Privat: [http://www.eschkitai.de] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 27.04.2012 21:56, schrieb Helga Fischer:
Hallo Liste,
ich habe mal eine Verständnisfrage. Jetzt war ja mal wieder openssl mit einem Sicherheitspatch dran. Als Suse-Nutzerin rufe ich halt YaST auf, der dann wieder suseconfig aufruft. Meistens gucke ich jedoch nicht hin, was das alles macht. Ist ja Routine.
Jetzt gibt es jedoch einige Anwendungen, die auf die Libs von openssl zugreifen. In welchem Moment erhalten diese Anwendungen die gepatchte Ausgabe der ssl-Bibliotheken?
Wenn sie sie das nächste Mal brauchen? Oder erst nach einem Neustart des kompletten Systems - so wollte es ein Ubuntu einem Kollegen verkaufen?
Ich behaupte, beim nächsten Aufruf. Es werden ja nicht alle Anwendungen ihre eigene Kopie der Bibliotheken im Speicher halten.
Einzig einen sshd würde ich neu starten, falls das suseconfig (oder die Installer der anderen Distris nicht von alleine tun würden).
Helga
Hallo Helga, die Sache ist "relativ" einfach. Der Sinn einer lib (genauer gesagt eines "shared objects") ist ja eben genau jener, dass der Programmcode nur 1x im Speicher liegt. Wenn z.B. 3 Programme die selbe lib verwenden ist sie nur 1x geladen. Wenn das letzte der 3 Programme beendet, wird - *meines Wissens* - auch die lib wieder aus dem Speicher entfernt. Das bedeutet aber auch, wenn 2 der 3 programme beenden und dann wieder ein neues gestartet wird läuft es mit dem lib-code der bereits im Speicher ist. In deinem Beispiel also mit der "alten Version". So zumindest verstehe ich es. Wie heisst es so schön auf Neudeutsch: Correct me if I'm wrong. Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Fri, 27 Apr 2012 22:38:06 +0200, Norbert Zawodsky
ist sie nur 1x geladen. Wenn das letzte der 3 Programme beendet, wird - *meines Wissens* - auch die lib wieder aus dem Speicher entfernt.
Soweit richtig.
Das bedeutet aber auch, wenn 2 der 3 programme beenden und dann wieder ein neues gestartet wird läuft es mit dem lib-code der bereits im Speicher ist. In deinem Beispiel also mit der "alten Version".
Falsch. Die neu gestartete Applikation läuft mit der neuen Bibliothek. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 28.04.2012 12:45, schrieb Philipp Thomas:
On Fri, 27 Apr 2012 22:38:06 +0200, Norbert Zawodsky
wrote: ist sie nur 1x geladen. Wenn das letzte der 3 Programme beendet, wird - *meines Wissens* - auch die lib wieder aus dem Speicher entfernt. Soweit richtig.
Das bedeutet aber auch, wenn 2 der 3 programme beenden und dann wieder ein neues gestartet wird läuft es mit dem lib-code der bereits im Speicher ist. In deinem Beispiel also mit der "alten Version". Falsch. Die neu gestartete Applikation läuft mit der neuen Bibliothek.
Philipp Hallo Philipp,
ich widerspreche nur ungern da ich auch nicht ganz sicher bin. Aber bist Du sicher? Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ? Zur Klärung, wir reden hier _nicht_ von verschiedenen Versionen des .so Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Sat, 28 Apr 2012 13:22:53 +0200, Norbert Zawodsky
Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ?
Weil er das Binary prüft? Aber ich bin mir auch nicht so ganz sicher und werde am Mittwoch mal unseren (SUSEs) Binutils/GCC Experten fragen. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 28.04.2012 21:42, schrieb Philipp Thomas:
On Sat, 28 Apr 2012 13:22:53 +0200, Norbert Zawodsky
wrote: Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ? Weil er das Binary prüft? Aber ich bin mir auch nicht so ganz sicher und werde am Mittwoch mal unseren (SUSEs) Binutils/GCC Experten fragen.
Philipp Hallo Philipp,
kann ich mir nicht vorstellen. Das wäre schon ein enormer Aufwand. Das Binary im Speicher entspricht mit aller höchster Wahrscheinlichkeit nicht dem Binary in der .so Datei. ("Relocations" ...???..) Aber frag den Experten und teile dann bitte seine Antwort hier auf der Liste. Es interessiert mich nämlich sehr!! Grüße, Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Sonntag, 29. April 2012, 00:41:10 schrieb Norbert Zawodsky:
Am 28.04.2012 21:42, schrieb Philipp Thomas:
On Sat, 28 Apr 2012 13:22:53 +0200, Norbert Zawodsky
wrote: Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ?
Weil er das Binary prüft? Aber ich bin mir auch nicht so ganz sicher und werde am Mittwoch mal unseren (SUSEs) Binutils/GCC Experten fragen.
Philipp
Hallo Philipp,
kann ich mir nicht vorstellen. Das wäre schon ein enormer Aufwand. Man könnte doch einfach den Zeitstempel des shared objects beim Laden mit in der Verwaltungsinfo ablegen. Wenn dann auf der Platte etwas Neueres zu finden ist ...
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 29.04.2012 15:42, schrieb Markus Koßmann:
Am Sonntag, 29. April 2012, 00:41:10 schrieb Norbert Zawodsky:
Am 28.04.2012 21:42, schrieb Philipp Thomas:
On Sat, 28 Apr 2012 13:22:53 +0200, Norbert Zawodsky
wrote: Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ? Weil er das Binary prüft? Aber ich bin mir auch nicht so ganz sicher und werde am Mittwoch mal unseren (SUSEs) Binutils/GCC Experten fragen.
Philipp Hallo Philipp,
kann ich mir nicht vorstellen. Das wäre schon ein enormer Aufwand. Man könnte doch einfach den Zeitstempel des shared objects beim Laden mit in der Verwaltungsinfo ablegen. Wenn dann auf der Platte etwas Neueres zu finden ist ...
Könnte man. Glaube ich aber nicht dass es so gemacht wird. Zeitstempel sind etwas äußerst Fehleranfälliges. Außerdem, wer sagt dass immer etwas "Neueres" gefragt ist. Man denke nur an downgrades. Nö, ich warte gespannt was der Binutils-Guru sagt... Aber in genau diesem Zusammenhang: Kennt jemand ein (commandline)tool mit dem man auflisten kann welche shared-objects gerade im Speicher geladen sind? -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo, Am Sun, 29 Apr 2012, Norbert Zawodsky schrieb:
Aber in genau diesem Zusammenhang: Kennt jemand ein (commandline)tool mit dem man auflisten kann welche shared-objects gerade im Speicher geladen sind?
lsof -dnh -- BE MAD! IT HELPS! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
On Sun, Apr 29, 2012 at 03:42:45PM +0200, Markus Koßmann wrote:
Am Sonntag, 29. April 2012, 00:41:10 schrieb Norbert Zawodsky:
Am 28.04.2012 21:42, schrieb Philipp Thomas:
On Sat, 28 Apr 2012 13:22:53 +0200, Norbert Zawodsky
wrote: Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ?
Weil er das Binary prüft? Aber ich bin mir auch nicht so ganz sicher und werde am Mittwoch mal unseren (SUSEs) Binutils/GCC Experten fragen.
Philipp
Hallo Philipp,
kann ich mir nicht vorstellen. Das wäre schon ein enormer Aufwand. Man könnte doch einfach den Zeitstempel des shared objects beim Laden mit in der Verwaltungsinfo ablegen. Wenn dann auf der Platte etwas Neueres zu finden ist ...
"zypper ps" zeigt Programme an mit geloeschten Libraries. geloescht heisst auch "ersetzt". Diese Applikationen/Dienste dann ggbfalls neu starten. Der binary Loader laedt es nicht von selbst nochmal. Ciao, Marcus -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
* Norbert Zawodsky (norbert@zawodsky.at) [20120429 00:41]:
Aber frag den Experten und teile dann bitte seine Antwort hier auf der Liste. Es interessiert mich nämlich sehr!!
Und die Antwort ist: Sobald die Applikation ein open auf die Bibliothek macht - und daß geschieht bei jedem Start einer Appliktion, wie Du mit strace sehen kannst - gilt „Neues Spiel, neues Glück”, sprich bekommt sie die neue Bibliothek. Da aber die Kopien der alten Bibliothek im Speicher bleiben, solange die Applikationen laufen, die sie benötigen, laufen jetzt beide Version parallel und benötigen somit doppelten Speicher. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 03.05.2012 17:35, schrieb Philipp Thomas:
* Norbert Zawodsky (norbert@zawodsky.at) [20120429 00:41]:
Aber frag den Experten und teile dann bitte seine Antwort hier auf der Liste. Es interessiert mich nämlich sehr!!
Und die Antwort ist:
Sobald die Applikation ein open auf die Bibliothek macht - und daß geschieht bei jedem Start einer Appliktion, wie Du mit strace sehen kannst - gilt „Neues Spiel, neues Glück”, sprich bekommt sie die neue Bibliothek. Da aber die Kopien der alten Bibliothek im Speicher bleiben, solange die Applikationen laufen, die sie benötigen, laufen jetzt beide Version parallel und benötigen somit doppelten Speicher.
Hallo Philipp, danke für die Antwort. Ich habe in der Richtung schon sowas vermutet und einige Tests vorgenommen, in dem ich einfach eine kleine Library programmiert und gebaut habe. Ein weiteres Programm bindet die Library ein und wird somit in den Speicher geladen. Das laufende Programm habe ich bewusst nicht beendet und habe danach die Library verändert und neu gebaut. Es wurde beim erneuten Aufruf des Programmes die neue Library geladen, was sich auch mit der Antwort von den GNU-Gurus deckt. Das beide Libraries im Speicher gehalten werden, bis eines der Programme beendet und die Library aus dem Speicher entladen wird. (Sagt man das so?) ;-) Und zu zypper ala: # zypper ps handhabt das auch so, dass es prüft, ob irgendwelche veraltete Programme oder Libraries im Speicher sind und listet diese auf, was wirklich ein hilfreiches Werkzeug ist, um nur die nötigen Dienste auf meinem Server neuzustarten (wenige Sekunden) und nicht gleich den gesamten Server (mehrere Minuten Downtime inkl. fsck), was definitiv bei einem Kernel-Update der Fall sein dürfte. ;-) -- Gruß Sebastian - openSUSE Member (Freespacer) Webseite/Blog: http://www.sebastian-siebert.de Wichtiger Hinweis zur openSUSE Mailing Liste: http://de.opensuse.org/openSUSE:Mailinglisten_Netiquette -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Sat, 28 Apr 2012 13:22:53 +0200
schrieb Norbert Zawodsky
Am 28.04.2012 12:45, schrieb Philipp Thomas:
On Fri, 27 Apr 2012 22:38:06 +0200, Norbert Zawodsky
wrote: ist sie nur 1x geladen. Wenn das letzte der 3 Programme beendet, wird - *meines Wissens* - auch die lib wieder aus dem Speicher entfernt. Soweit richtig.
Das bedeutet aber auch, wenn 2 der 3 programme beenden und dann wieder ein neues gestartet wird läuft es mit dem lib-code der bereits im Speicher ist. In deinem Beispiel also mit der "alten Version". Falsch. Die neu gestartete Applikation läuft mit der neuen Bibliothek.
Philipp Hallo Philipp,
ich widerspreche nur ungern da ich auch nicht ganz sicher bin. Aber bist Du sicher?
Wieso sollte der Loader das shared object erneut laden wenn es schon im Speicher ist? Das wäre höchst unlogisch und auch nicht nachvollziehbar. Anhand welchen Kriteriums soll das der Loader "entscheiden" ?
Zur Klärung, wir reden hier _nicht_ von verschiedenen Versionen des .so
Soweit ich mich erinnern kann ruft SuSEConfig ldconfig(8) auf. Es werden also die dynamischen Libraries geladen, die danach im Cache liegen. -Dieter -- Dieter Klünter | Systemberatung http://dkluenter.de GPG Key ID:DA147B05 53°37'09,95"N 10°08'02,42"E -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Samstag 28 April 2012 schrieb Philipp Thomas:
On Fri, 27 Apr 2012 22:38:06 +0200, Norbert Zawodsky
wrote: ist sie nur 1x geladen. Wenn das letzte der 3 Programme beendet, wird - *meines Wissens* - auch die lib wieder aus dem Speicher entfernt.
Soweit richtig.
Das bedeutet aber auch, wenn 2 der 3 programme beenden und dann wieder ein neues gestartet wird läuft es mit dem lib-code der bereits im Speicher ist. In deinem Beispiel also mit der "alten Version".
Falsch. Die neu gestartete Applikation läuft mit der neuen Bibliothek.
Meine Frage zielte auf die üblichen Daemonen, die eventuell auf die ssllib zugreifen: postfix, smtp-auth, httpd und was da sonst noch zugreift. Ganz sicher bin ich mit einem Neustart des Systems auf der sicheren Seite. Wenn ich aber meinen Server nicht unterbrechen will, dann muss ich doch wissen, welche Dienste die Lib brauchen und sie von Hand neustarten. Daher halt jetzt meine Frage, wie es sich da verhält. Nicht immer hat man es ja mit einem Patch zu tun, der eindeutig einem Dienst zuzuordnen ist. Helga -- ## Technik: [http://de.opensuse.org] ## Politik: [http://www.piratenpartei.de] ## Privat: [http://www.eschkitai.de] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hi Helga! On Sa, 28 Apr 2012, Helga Fischer wrote:
Am Samstag 28 April 2012 schrieb Philipp Thomas:
On Fri, 27 Apr 2012 22:38:06 +0200, Norbert Zawodsky
wrote: ist sie nur 1x geladen. Wenn das letzte der 3 Programme beendet, wird - *meines Wissens* - auch die lib wieder aus dem Speicher entfernt.
Soweit richtig.
Das bedeutet aber auch, wenn 2 der 3 programme beenden und dann wieder ein neues gestartet wird läuft es mit dem lib-code der bereits im Speicher ist. In deinem Beispiel also mit der "alten Version".
Falsch. Die neu gestartete Applikation läuft mit der neuen Bibliothek.
Meine Frage zielte auf die üblichen Daemonen, die eventuell auf die ssllib zugreifen: postfix, smtp-auth, httpd und was da sonst noch zugreift.
Ganz sicher bin ich mit einem Neustart des Systems auf der sicheren Seite.
Wenn ich aber meinen Server nicht unterbrechen will, dann muss ich doch wissen, welche Dienste die Lib brauchen und sie von Hand neustarten. Daher halt jetzt meine Frage, wie es sich da verhält. Nicht immer hat man es ja mit einem Patch zu tun, der eindeutig einem Dienst zuzuordnen ist.
Ein Bekannter von mir hat dafür das hier geschrieben http://www.256bit.org/whatsup.shtml regards, Christian -- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Samstag 28 April 12 schrieb Christian Brabandt:
Hi Helga!
On Sa, 28 Apr 2012, Helga Fischer wrote: ...
Ganz sicher bin ich mit einem Neustart des Systems auf der sicheren Seite.
Wenn ich aber meinen Server nicht unterbrechen will, dann muss ich doch wissen, welche Dienste die Lib brauchen und sie von Hand neustarten. Daher halt jetzt meine Frage, wie es sich da verhält. Nicht immer hat man es ja mit einem Patch zu tun, der eindeutig einem Dienst zuzuordnen ist.
Ein Bekannter von mir hat dafür das hier geschrieben http://www.256bit.org/whatsup.shtml
Warum benutzt Du nicht das? zypper ps Ist genau dafür gemacht... zitiert aus man zypper ps After each upgrade or removal of packages, there may be running processes on the system which then use files meanwhile deleted by the upgrade. zypper ps lists these processes, together with the corresponding deleted files, and a service name hint, in case it's a known service. The list contains the following information: * PID ID of the process * PPID ID of the parent process * UID ID of the user running the process * Login login name of the user running the process * Command command used to execute the process * Service guessed name of the service. If an init script exists for this service, you can do "rcservicename restart" to restart it. * Files the list of the deleted files -- Herzliche Grüße! Rolf Muth Meine Adressen duerfen nicht fuer Werbung verwendet werden! PGP Public Key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xF8DC41935544C89A fingerprint: C025 3071 8E56 F8F1 250A 5624 F8DC 4193 5544 C89A -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hi R! On Sa, 28 Apr 2012, R M wrote:
Am Samstag 28 April 12 schrieb Christian Brabandt:
On Sa, 28 Apr 2012, Helga Fischer wrote: Ein Bekannter von mir hat dafür das hier geschrieben http://www.256bit.org/whatsup.shtml
Warum benutzt Du nicht das? zypper ps
chrisbra@R500 ~ % zypper zsh: command not found: zypper regards, Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
zypper ref zypper lu zypper up (packagename optl) I guess, you can always use zypper ps even if you use yast2 for the rest. zypper ps (shows replaced files and processes) restart those processes and services. no reboot for openssl stuff needed. good luck. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (13)
-
cagsm
-
Christian Brabandt
-
David Haller
-
Dieter Klünter
-
Helga Fischer
-
Marcus Meissner
-
Markus Koßmann
-
Michael Skiba
-
Norbert Zawodsky
-
Philipp Thomas
-
Philipp Thomas
-
R M
-
Sebastian Siebert