Wie überprüfe ich, welches Paket einen Benutzer erstellt hat?

14

Es wird vermutet, dass in einigen Paketen zur Installationszeit Skripts ausgeführt werden, in denen Benutzerkonten erstellt werden /etc/passwd. Wie kann ich überprüfen, welches Paket einen bestimmten Benutzer erstellt hat?

Cyker
quelle

Antworten:

16

Dies funktioniert relativ zuverlässig, wenn das Paket über dpkg(einschließlich mit apt install) installiert wurde . Siehe muru Antwort für eine Liste der Benutzer in der Standard - Ubuntu - Installation und das Paket erstellt , die sie schafft. Für diese Benutzer erzeugt diese Methode keine Ausgabe.

Sie können den Befehl verwenden:

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

Ersetzen Sie <user>durch den Namen des Benutzers, an dem Sie interessiert sind, beispielsweisesystemd

Dabei werden die preinstund postinstSkripte aller Pakete durchsucht, die dpkgdem Befehl adduseroder useraddund dem betreffenden Benutzer bekannt sind, um festzustellen, welches Paket für die Erstellung dieses Benutzers verantwortlich ist. Das Ergebnis wird an sed weitergeleitet, sodass nur der Paketname selbst anstelle des vollständigen Namens der Skriptdatei zurückgegeben wird.

Erläuterung

  • grep -RlE Suchen Sie rekursiv und drucken Sie nur die Namen von Dateien, die Übereinstimmungen enthalten. Verwenden Sie erweiterte reguläre Ausdrücke
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'Suchen Sie nach dem Befehl adduseroder useraddund dem Benutzer, den Sie in derselben Zeile finden möchten (.* stimmen Sie mit den Zeichen überein, Befehlsoptionen zu) in dem Verzeichnis, in dem dpkgSkripts in Dateien gespeichert sind, deren Namen auf endeninst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'Ziehe alles vor & einschließlich des letzten /im vollständigen Pfad und des letzten aus.preinst.postinst Erweiterung oder

Vielen Dank an @muru, dass er eine bessere und schnellere Suchmethode vorgeschlagen hat als findhier :)

Zanna
quelle
Sie sollten dies auch überprüfen, preinstda sich in diesem Skript einige Pakete befinden, die Benutzer erstellen. Aber ich habe die Idee, also akzeptiere ich sie.
Cyker
@ Cyker Ja, danke :) Ich werde bearbeiten ... Ich schaue jetzt hinein, um zu sehen, ob ich sie alle fangen kann
Zanna
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'um die find -exec grepSache zu vereinfachen .
muru
Dank @muru , die genial ... (jetzt ich müssen nur basename -sPlatzhalter / akzeptieren regex ...) , damit ich es die Pre abhacken machen und Post inst Suffixe (aber ich fand keine preinst Skripte mit adduser so zucken )
Zanna
@Zanna wird von der Debian-Richtlinie empfohlen postinst, so dass es unwahrscheinlich ist, dass Sie etwas finden, das verwendet wird preinst(aber ich nehme an, dass der seltene Fall existiert).
muru
15

Hier gibt es eine wichtige Ausnahme für die normalerweise adduserhinzugefügten Benutzer und Gruppen: diejenigen, die standardmäßig mit Ubuntu geliefert werden. Diese sind im base-passwdPaket enthalten. Eine Liste der von diesem Paket hinzugefügten Benutzer und Gruppen ist in angegeben (und beschrieben)/usr/share/doc/base-passwd/users-and-groups.{html,txt.gz} . Die Liste ist:

Benutzer (normalerweise mit entsprechenden Gruppen)

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

Gruppen (ohne entsprechende Benutzer)

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

Das Paket README (/usr/share/doc/base-passwd/README ) listet auch einige Benutzer mit UIDs im Bereich 60000-64999 auf und gibt an, dass diese von den jeweiligen Paketen erstellt wurden.

Siehe auch:

muru
quelle