Haciendo pruebas en un servidor Ubuntu Server 12.04.04 LTS me encontré con un proceso desconocido llamado "whoopsie". Nunca antes había visto ese proceso en otros sistemas GNU/Linux, por lo que me llamó poderosamente la atención, e inmediatamente me surgieron dos preguntas: ¿Qué es el proceso whoopsie? y ¿Cómo hago para desactivarlo/eliminarlo/desinstalarlo?. Es sabido que muchos administradores de sistemas tenemos la manía de tendencia a desinstalar, eliminar y desactivar todo software/proceso que no sea absolutamente necesario.
Al ejecutar ps aux
, me encontré con un proceso "whoopsie" sospechoso corriendo a nombre del usuario homónimo:
root@ubuntu:~# ps aux | tail daemon 943 0.0 0.0 16912 384 ? Ss 10:15 0:00 atd root 980 0.0 0.1 54456 1552 tty1 Ss 10:15 0:00 /bin/login -- whoopsie 982 0.0 0.3 187664 4012 ? Ssl 10:15 0:00 whoopsie root 995 0.0 0.0 0 0 ? S 10:15 0:00 [flush-253:0] root 996 0.0 0.0 0 0 ? S 10:15 0:00 [flush-252:0] root 1138 0.1 0.4 21680 4200 tty1 S+ 10:16 0:00 -bash root 1212 0.0 0.3 73444 3620 ? Ss 10:18 0:00 sshd: root@pts/0 root 1354 0.2 0.3 21568 4036 pts/0 Ss 10:18 0:00 -bash root 1412 0.0 0.1 16880 1220 pts/0 R+ 10:19 0:00 ps aux root 1413 0.0 0.2 21568 2600 pts/0 D+ 10:19 0:00 -bash
¿Qué demonios es "whoopsie"?
Al consultar la ruta al binario utilizando en comando which
, el ejecutable se encuentra instalado en el directorio /usr/bin
:
root@ubuntu:~# which whoopsie /usr/bin/whoopsie
Pero no posee página de manual y la ayuda es completamente inútil (felicitaciones Canonical, sigan haciendo así de bien las cosas):
root@ubuntu:~# man whoopsie No manual entry for whoopsie See 'man 7 undocumented' for help when manual pages are not available.
root@ubuntu:~# whoopsie --help Usage: whoopsie [OPTION...] Help Options: -h, --help Show help options Application Options: -f, --foreground Run in the foreground
Aunque afortunadamente el manejador de paquetes APT me da algo de información al respecto:
root@ubuntu:~# apt-cache search whoopsie whoopsie - Ubuntu crash database submission daemon
Investigando un poco en la Wiki de Ubuntu descubrí que Whoopsie es parte del sistema de tracking de errores de Ubuntu (ErrorTracker):
This program responsible for uploading crash reports is called Whoopsie. It’s always running on Ubuntu systems, watching the /var/crash directory for files ending in .upload. When it sees one of these, it checks to see if there’s a high-speed internet connection. If it cannot find one, it waits to send the report until later. Otherwise, it opens the matching .crash file and converts it into binary JSON data then sends this information to http://daisy.ubuntu.com.
Whoopsie toma los reportes de errores y crash generados por el sistema Apport cada vez que una aplicación falla y los envía a los servidores de Canonical para ser procesados. Los datos recolectados por estos reportes ayudan a priorizar los problemas más urgentes (errors.ubuntu.com).
El demonio whoopsie corre por defecto tanto en las instalaciones Desktop como Server. Aunque en la versión server sólo envia los reportes si se ejecuta manualmente apport-cli
.
¿Cómo deshabilito el demonio whoopsie en Ubuntu Server?
Para deshabilitar el demonio o servicio Whoopsie en Ubuntu server, editar el archivo de configuración (/etc/default/whoopsie
) y configurar la variable report_crashes
en false
root@ubuntu:~# cat /etc/default/whoopsie [General] report_crashes=true
root@ubuntu:~# nano /etc/default/whoopsie
root@ubuntu:~# cat /etc/default/whoopsie [General] report_crashes=false
Luego ejecutar service whoopsie stop
o stop whoopsie
para detener al demonio:
root@ubuntu:~# service whoopsie stop whoopsie stop/waiting
¿Y qué hay de Apport?
En Ubuntu, si un proceso en el sistema es terminado por una señal debido a un fallo o "crash" (por ejemplo violación de segmento de memoria, error de bus, excepción de punto flotante, excepción no capturada en lenguajes de alto nivel, etc.) el demonio apport es invocado inmediatamente para generar un reporte inicial en un archivo dentro del directorio /var/crash/
.
Ya que hemos deshabilitando Whoopsie, hagamos lo mismo con Apport, pues no tiene sentido crear reportes de errores que nunca serán enviados.
Poner en cero la variable enabled
en el archivo de configuración /etc/default/apport
:
root@ubuntu:~# cat /etc/default/apport # set this to 0 to disable apport, or to 1 to enable it # you can temporarily override this with # sudo service apport start force_start=1 enabled=1
root@ubuntu:~# nano /etc/default/apport
root@ubuntu:~# cat /etc/default/apport # set this to 0 to disable apport, or to 1 to enable it # you can temporarily override this with # sudo service apport start force_start=1 enabled=0
Luego, detener el demonio apport ejecutando service apport stop
o stop apport
:
root@ubuntu:~# service apport stop apport stop/waiting
¿Cómo deinstalo Whoopsie?
Si se desea desinstalar Whoopsie y Apport, simplemente ejecutar:
root@ubuntu:~# apt-get remove whoopsie apport
Conclusiones y pensamientos personales
Tal vez los usuarios de Ubuntu (o cualquier otra distribución GNU/Linux) puedan aducir que hay una cuestión moral por la cual no deberíamos deshabilitar Apport y Whoopsie. Es decir, por un lado mi empresa se beneficia utilizando Ubuntu, el cual se distribuye de forma libre y gratuita bajo la licencia GPL, pero por otro no deseo colaborar enviando mis reportes de errores. A simple vista parece un comportamiento mezquino.
Mi pensamiento es que los sistemas informáticos no entienden de moral y estas cuestiones. Y en sistemas, antes que la moral está la seguridad de la información. Un reporte de error generado por Apport puede contener un volcado de memoria del núcleo del sistema operativo, stack traces, segmentos de archivos de log, etc. Entre estos datos se puede encontrar cualquier tipo de información sensible como contraseñas, números de tarjetas de crédito, números de serie, etc. Es el tipo de información que se debe proteger a toda costa, por lo que entiendo que no está bien enviar información potencialmente sensible a Canonical ni ninguna otra compañía. No por pensar que los de Canonical son malos, sino simplemente porque una vulnerabilidad o penetración en sus sistemas puede liberar esta información a todo el mundo.
El otro punto a analizar es el consumo de recursos (memoria/CPU/disco) de estos demonios. En sistemas críticos se debe optimizar el consumo de recursos, por lo que deshabilitar todo demonio/servicio no absolutamente necesario es una decisión lógica y totalmente válida.