-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola: Una de las peculiaridades de los sistemas de ficheros en linux es que, si se borra un fichero que está abierto, el fichero se borra en el directorio, pero en realidad no se borra hasta que el proceso que lo tiene abierto lo suelte. El inodo queda guardado en el kernel. Así, cuando el YOU hace una actualización de algún rpm, si el demonio que se ha actualizado no se reinicia, lo que se sigue ejecutando es la versión antigua, y no se borra del disco efectivamente hasta el reinicio del servicio. Lo curioso es que con el comando "lsof" se pueden encontrar esos inodos pendientes, porque contiene la palabra "RPMDELETE" o "path inode=" y son identificables. He aquí un pequeño script que publicaron en la lista de seguridad (algo modificado por mi) y que permite localizar esos procesos. Queda adivinar cual es el servicio correspondiente, pero eso es fácil. Se supone que funciona al menos en las versiones 9.x de SuSE, en la 10.x no lo he probado. En la 7.3 también funciona. #!/bin/bash #/usr/local/bin/rpm_pending # Check there are no processes using software that has been updated by rpm. # Date: Tue, 10 Jan 2006 10:14:59 +0000 (GMT) # From: Bob Vickers # Subject: Re: [suse-security] Patch Noifications # PATH=/bin:/usr/bin set -o nounset #if [ $# -eq 1 ] #then # lines=$1 #else # lines=10 #fi # Run lsof and scan the output for libraries that have been updated. Before # SuSE 9.1 these will include the string RPMDELETE, but in 9.1 they include # a semi-colon. # In 9.2 and 9.3 they include the string 'path inode=' # # Ejecutar lsof y explorar la salida buscando librerías actualizadas. # Antes de SuSE 9.1 ésta contendrá la frase RPMDELETE, pero en 9.1 # incluyan un punto y coma. # En 9.2 y 9.3 incluyen la frase 'path inode=' # Dos versiones: la primera sólo saca las primeras n lineas (como # parámetro al comando) - reactivar el párrafo de código arriba también # La otra simplemente lo vuelca todo (mi variación y la que he dejado) #procs=`lsof | grep -E 'RPMDELETE|;|path inode=' | head -$lines` procs=`lsof | grep -E 'RPMDELETE|;|path inode=' ` if [ -n "$procs" ] then host=`hostname` cat <<EOF Host $host has obsolete files still in use by running processes. This may constitute a security hazard so you should restart daemons where necessary. La máquina $host tiene ficheros obsoletos todavía en uso por procesos en ejecución. Esto puede constituir un riesgo de seguridad, así que debería reinicializar los daemons que hagan falta. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME EOF echo "$procs" exit 1 else exit 0 fi - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFEfzDetTMYHG2NR9URAvD8AJ4/T3n7SaZt7+abpKDE4r5YddUaxwCdFfXA 4bw2HNGAh29kX6Ozsgs1Yjc= =Psto -----END PGP SIGNATURE----- -- Para dar de baja la suscripci�n, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com