Heute wieder ein Trick aus der Linux-Admin-Ecke an euch. Es kommt ja öfters vor, dass bei einem Update nur einige System-Bibliotheken geupdatet werden und man das System deswegen ja nicht unbedingt neu starten muss.
Allerdings werden von gestarteten Programmen immer noch die Bibliotheken verwendet, die vor dem Update aktuell waren, solange diese Programme nicht neu gestartet werden. Dies kann dazu führen, dass die Systeme, obwohl man sie aktuell hält, dennoch verwundbar sind.
Um alle gelöschten oder veränderten und dennoch verwendeten Bilbiotheken heraus zu finden, führt man nach dem Update auf seinen Systemen folgendes Kommando aus:
lsof -n | egrep -i "(DEL|inode)"
Danach sollte man eine Augabe ähnlich dieser erhalten:
server:~# lsof -n | egrep -i "(del|node)"
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
nrpe 1111 nagios mem REG 9,1 22637092 /usr/lib/libssl.so.0.9.8 (path inode=22638819)
dbus-daem 2222 messagebus mem REG 9,1 22635753 /usr/lib/libexpat.so.1.5.2 (path inode=22638405)
apache2 3333 www-data mem REG 9,1 22635753 /usr/lib/libexpat.so.1.5.2 (path inode=22638405)
Dabei wird über das
del nach gelöschten Dateien und Dateien die zwar noch im Speicher gemapped sind, aber auf der Festplatte nicht mehr existieren, gesucht. Das
node sucht nach der Ausgabe
path inode=, also nach inodes die sich verändert haben. Bei meiner Ausgabe sieht man das die Programme nrpe, dbus und apache2 also einmal neugestartet werden müssten, da diese alte Versionen der Bibliotheken verwenden.
Wie ich bei meiner Recherche gerade herausfand, gibt es für Debian das Paket
debian-goodies, welches das Tool
checkrestart enthält. Dieses übernimmt genau diese Aufgabe und teilt euch mit, welche Init-Scripte ausgeführt werden müssen

:
server:~# checkrestart
Found 7 processes using old versions of upgraded files
(2 distinct programs)
(2 distinct packages)
Of these, 2 seem to contain init scripts which can be used to restart them:
The following packages seem to have init scripts that could be used
to restart them:
dbus:
1111 /usr/bin/dbus-daemon
apache2-mpm-prefork:
22222 /usr/sbin/apache2
2222 /usr/sbin/apache2
23232 /usr/sbin/apache2
32323 /usr/sbin/apache2
22322 /usr/sbin/apache2
33233 /usr/sbin/apache2
These are the init scripts:
/etc/init.d/dbus restart
/etc/init.d/apache2 restart
Eine von beiden Möglichkeiten wird euch sicher helfen
[Tipps und Tricks] gelöschte Bibliotheken nach System-Updates herausfinden http://ff.im/-aNZij
Aufgenommen: Oct 31, 22:09