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

14

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

Cyker
fuente

Respuestas:

16

Esto funcionará de manera razonablemente confiable si el paquete se instaló a través de dpkg(incluido con apt install). Consulte la respuesta de muru para obtener una lista de 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:.*/(.*)\.[-a-z]+inst:\1:'

reemplácelo <user>con el nombre del usuario que le interesa, por ejemplo,systemd

Esto busca las secuencias de comandos preinsty postinstde todos los paquetes conocidos dpkgpara el comando addusero useraddy 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 buscar de forma recursiva e imprimir solo los nombres de archivos que contienen coincidencias, usar expresiones regulares extendidas
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'busque el comando addusero useraddy el usuario que desea encontrar en la misma línea ( .*coincidirá con cualquier carácter entre ellos, capturando cualquier opción de comando) en el directorio donde dpkgalmacena los scripts, en archivos cuyos nombres terminan coninst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'quitar todo antes e incluir el último /en la ruta completa y la extensión .preinsto.postinst

Gracias a @muru por sugerir una forma de búsqueda más ordenada y rápida que usar findaquí :)

Zanna
fuente
También debe verificarlo preinst, ya que hay algunos paquetes que crean usuarios en ese script. Pero tengo la idea, así que la aceptaré.
Cyker
@Cyker Sí, gracias :) Lo editaré ... Lo estoy investigando ahora para ver si puedo atraparlos a todos
Zanna
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'para simplificar la find -exec grepcosa.
muru
gracias @muru que es increíble ... (ahora solo necesito basename -saceptar comodines / expresiones regulares ...) para que pueda cortar los sufijos pre Y post inst (pero no encontré ningún script de preinst con adduser, así que encogerse de hombros) )
Zanna
@Zanna, la Política de Debian recomienda postinst, por lo que es poco probable que encuentre alguno que use preinst(pero supongo que podría existir un caso raro).
muru
15

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

Usuarios (generalmente 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 algunos usuarios con UID en el rango 60000-64999, y establece que estos son creados por los respectivos paquetes.

Ver también:

muru
fuente