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?
quelle
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?
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 preinst
und postinst
Skripte aller Pakete durchsucht, die dpkg
dem Befehl adduser
oder useradd
und 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.
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 adduser
oder useradd
und dem Benutzer, den Sie in derselben Zeile finden möchten (.*
stimmen Sie mit den Zeichen überein, Befehlsoptionen zu) in dem Verzeichnis, in dem dpkg
Skripts 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 oderVielen Dank an @muru, dass er eine bessere und schnellere Suchmethode vorgeschlagen hat als find
hier :)
preinst
da sich in diesem Skript einige Pakete befinden, die Benutzer erstellen. Aber ich habe die Idee, also akzeptiere ich sie.grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
um diefind -exec grep
Sache zu vereinfachen .basename -s
Platzhalter / akzeptieren regex ...) , damit ich es die Pre abhacken machen und Post inst Suffixe (aber ich fand keine preinst Skripte mit adduser so zucken )postinst
, so dass es unwahrscheinlich ist, dass Sie etwas finden, das verwendet wirdpreinst
(aber ich nehme an, dass der seltene Fall existiert).Hier gibt es eine wichtige Ausnahme für die normalerweise
adduser
hinzugefügten Benutzer und Gruppen: diejenigen, die standardmäßig mit Ubuntu geliefert werden. Diese sind imbase-passwd
Paket 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)
Gruppen (ohne entsprechende Benutzer)
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:
base-passwd
14.04 - Sie können die Liste der Benutzer und Gruppen in den*.master
Dateien sehen.quelle