Antworten:
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 :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
um die find -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 wird preinst
(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 im base-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:
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
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:
base-passwd
14.04 - Sie können die Liste der Benutzer und Gruppen in den *.master
Dateien sehen.
preinst
da sich in diesem Skript einige Pakete befinden, die Benutzer erstellen. Aber ich habe die Idee, also akzeptiere ich sie.