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?
la source
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?
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 preinst
et postinst
de tous les packages connus dpkg
pour la commande adduser
ou useradd
et 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.
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 adduser
ou useradd
et 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ù dpkg
stocke 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 .preinst
ou.postinst
Merci à @muru d'avoir proposé une méthode de recherche plus nette et plus rapide que d'utiliser find
ici :)
preinst
car il existe des packages créant des utilisateurs dans ce script. Mais j'ai compris l'idée et je l'accepterai.grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
pour simplifier lafind -exec grep
chose.basename -s
d'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) )postinst
, il est donc peu probable que vous en trouviez qui utilisepreinst
(mais je suppose que le cas rare pourrait exister).Il y a une exception importante aux
adduser
utilisateurs et groupes habituels ajoutés ici: ceux qui viennent avec Ubuntu par défaut. Ceux-ci sont fournis par lebase-passwd
package. 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)
Groupes (sans utilisateurs correspondants)
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:
base-passwd
pour 14.04 - vous pouvez voir la liste des utilisateurs et des groupes dans les*.master
fichiers.la source