Soeben gabs mal wieder ein OpenSSL-Update unter Gentoo. Kurz darauf sah ich zufälligerweise in einer phpinfo(); dass PHP immer noch mit der alten OpenSSL-Version gestartet hatte. Ich erinnerte mich an einen Teil eines Gentoo Monthly Newsletters, wo es genau um dieses Problem ging. Dank lsof kann man das aber lösen.

Was macht lsof?

Dieses Programm zeigt die offenen Dateien der verschiedenen Prozessen.

Wie kann das genutzt werden?

Sehen wir uns einen teil der Ausgabe von lsof|grep sshd mal an:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sshd 5310 root mem REG 3,3 95884 8160341 /lib/libnsl-2.6.1.so
sshd 5310 root mem REG 3,3 70600 10110156 /lib/libz.so.1.2.3
sshd 5310 root mem REG 3,3 9612 8160502 /lib/libutil-2.6.1.so
sshd 5310 root mem REG 3,3 9608 8160399 /lib/libdl-2.6.1.so
sshd 5310 root DEL REG 3,3 17158252 /var/tmp/portage/dev-libs/openssl-0.9.8h-r1/image/usr/lib/libcrypto.so.0.9.8
sshd 5310 root DEL REG 3,3 17158255 /var/tmp/portage/dev-libs/openssl-0.9.8h-r1/image/usr/lib/libssl.so.0.9.8
sshd 5310 root mem REG 3,3 67296 8160500 /lib/libresolv-2.6.1.so
sshd 5310 root mem REG 3,3 42448 7933991 /lib/libpam.so.0.81.12
sshd 5310 root mem REG 3,3 27968 7847970 /lib/libwrap.so.0.7.6
sshd 5310 root mem REG 3,3 125380 8160335 /lib/ld-2.6.1.so

Wie zu sehen ist, gibt es einige Einträge, die in der vierten Spalte mit DEL gekennzeichnet sind. Diese Dateien wurden geupdated und daher muss der Pozess neu gestartet werden.

Die folgende Zeile bewerkstelligt dies in übersichtlicher Form:

1
lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u

Die Ausgabe wäre in meinem Fall:

1
2
3
4
5
6
7
apache2
authdaemon
mysqld
php-cgi
proftpd
spamd
sshd

Diese Prozesse müssen neu gestartet werden, damit sie mit den neuesten Bibliotheken laufen.