¿Cómo comprobar qué paquete creó un usuario?

Se sospecha que algunos paquetes tienen scripts ejecutados en el momento de la instalación que crean cuentas de usuario en /etc/passwd . ¿Cómo puedo verificar qué paquete creó un usuario específico?

Esto funcionará de manera razonablemente confiable si el paquete se instaló a través de dpkg (incluso con la apt install ). Consulte la respuesta de muru para obtener una lista de los usuarios creados en la instalación predeterminada de Ubuntu y el paquete que los crea. Para esos usuarios, este método no producirá ningún resultado.

Puedes usar el comando:

 grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-az]+inst:\1:' 

reemplace con el nombre del usuario que le interesa, por ejemplo, systemd

Esto busca los preinst y postinst de todos los paquetes conocidos por dpkg para el comando adduser o useradd y el usuario en cuestión, para ver qué paquete es responsable de crear ese usuario. El resultado se canaliza a sed, por lo que solo devuelve el nombre del paquete en lugar del nombre completo del archivo de script.

Explicación

  • grep -RlE busca recursivamente e imprime solo los nombres de los archivos que contienen coincidencias, usa expresiones regulares extendidas
  • '(adduser|useradd).*' /var/lib/dpkg/info --include='*inst' busca el comando adduser o useradd y el usuario que desea encontrar en la misma línea ( .* haga coincidir cualquier carácter entre ellos, capturando cualquier opción de comando) en el directorio donde dpkg almacena scripts, en archivos cuyos nombres terminan con inst
  • sed -r 's:.*/(.*)\.[-az]+inst:\1:' elimina todo lo anterior e incluye el último / en la ruta completa y la extensión .preinst o .postinst

Gracias a @muru por sugerir una forma de búsqueda más ordenada y rápida que usar find aquí 🙂

Aquí hay una excepción importante a los usuarios y grupos adduser agregados por el usuario: los que vienen con Ubuntu por defecto. Estos son proporcionados por el paquete base-passwd . Se proporciona (y se describe) una lista de usuarios y grupos agregados por este paquete en /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz} . La lista es:

Usuarios (usualmente con grupos correspondientes)

 root man majordom irc gdm daemon lp postgres gnats saned bin mail www-data nobody klog sys news backup messagebus syslog sync uucp operator postfix games proxy list haldaemon 

Grupos (sin usuarios correspondientes)

 adm fax audio staff sshd tty voice src users fetchmail disk cdrom shadow lpadmin cupsys kmem floppy utmp sasl nogroup dialout tape video scanner dip sudo plugdev ssh 

El paquete README ( /usr/share/doc/base-passwd/README ) también enumera a algunos usuarios con UID en el rango 60000-64999, y establece que estos son creados por los paquetes respectivos.

Ver también:

  • Unix y Linux: ¿Cómo saber a qué paquete pertenece un usuario?
  • El código fuente de base-passwd para 14.04 : puede ver la lista de usuarios y grupos en los archivos *.master .