Comment vérifier quel package a créé un utilisateur?

14

On soupçonne que certains packages ont des scripts exécutés au moment de l'installation qui créent des comptes d'utilisateurs dans /etc/passwd. Comment puis-je vérifier quel package a créé un utilisateur spécifique?

Cyker
la source

Réponses:

16

Cela fonctionnera de manière raisonnablement fiable si le package a été installé via dpkg(y compris avec apt install). Voir la réponse de muru pour une liste des utilisateurs créés dans l'installation Ubuntu par défaut et le package qui les crée. Pour ces utilisateurs, cette méthode ne produira aucune sortie.

Vous pouvez utiliser la commande:

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

remplacer <user>par le nom de l'utilisateur qui vous intéresse, par exemple,systemd

Cela recherche les scripts preinstet postinstde tous les packages connus dpkgpour la commande adduserou useraddet l'utilisateur en question, pour voir quel package est responsable de la création de cet utilisateur. Le résultat est redirigé vers sed afin qu'il ne renvoie que le nom du package lui-même au lieu du nom complet du fichier de script.

Explication

  • grep -RlE rechercher récursivement et imprimer uniquement les noms des fichiers contenant des correspondances, utiliser des expressions régulières étendues
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'recherchez la commande adduserou useraddet l'utilisateur que vous souhaitez trouver sur la même ligne ( .*correspondra à tous les caractères entre eux, interceptant toutes les options de commande) dans le répertoire où dpkgstocke les scripts, dans des fichiers dont le nom se termine parinst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'supprimer tout avant et y compris le dernier /dans le chemin complet et l' extension .preinstou.postinst

Merci à @muru d'avoir proposé une méthode de recherche plus nette et plus rapide que d'utiliser findici :)

Zanna
la source
Vous devriez également vérifier preinstcar il existe des packages créant des utilisateurs dans ce script. Mais j'ai compris l'idée et je l'accepterai.
Cyker
@Cyker Ouais merci :) Je vais éditer ... J'étudie maintenant pour voir si je peux tous les attraper
Zanna
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'pour simplifier la find -exec grepchose.
muru
merci @muru qui est génial ... (maintenant j'ai juste besoin basename -sd'accepter les caractères génériques / regex ...) afin que je puisse le faire couper les suffixes pré ET post inst (mais je n'ai trouvé aucun script préinstalle avec adduser donc hausser les épaules) )
Zanna
@Zanna recommande la politique Debian postinst, il est donc peu probable que vous en trouviez qui utilise preinst(mais je suppose que le cas rare pourrait exister).
muru
15

Il y a une exception importante aux adduserutilisateurs et groupes habituels ajoutés ici: ceux qui viennent avec Ubuntu par défaut. Ceux-ci sont fournis par le base-passwdpackage. Une liste d'utilisateurs et de groupes ajoutés par ce package est donnée (et décrite) dans /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}. La liste est:

Utilisateurs (généralement avec les groupes correspondants)

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

Groupes (sans utilisateurs correspondants)

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

Le package README ( /usr/share/doc/base-passwd/README) répertorie également certains utilisateurs avec des UID dans la plage 60000-64999 et indique qu'ils sont créés par les packages respectifs.

Regarde aussi:

muru
la source