Odpowiedzi:
Będzie to działać niezawodnie, jeśli pakiet zostanie zainstalowany za pośrednictwem dpkg
(w tym z apt install
). Zobacz odpowiedź muru, aby uzyskać listę użytkowników utworzonych w domyślnej instalacji Ubuntu i pakiet, który je tworzy. W przypadku tych użytkowników ta metoda nie przyniesie żadnych wyników.
Możesz użyć polecenia:
grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
zamień <user>
na nazwę użytkownika, który Cię interesuje, na przykładsystemd
Przeszukuje on preinst
i postinst
skrypty wszystkich pakietów znanych dpkg
dla polecenia adduser
lub dla useradd
danego użytkownika, aby sprawdzić, który pakiet jest odpowiedzialny za utworzenie tego użytkownika. Wynik jest przesyłany do sed, więc zwraca tylko samą nazwę pakietu zamiast pełnej nazwy pliku skryptu.
grep -RlE
szukaj rekurencyjnie i drukuj tylko nazwy plików zawierających dopasowania, używaj rozszerzonych wyrażeń regularnych'(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'
wyszukaj polecenie adduser
lub useradd
oraz użytkownika, którego chcesz znaleźć w tym samym wierszu ( .*
dopasuje dowolne znaki między nimi, przechwytuje dowolne opcje poleceń) w katalogu, w którym dpkg
przechowywane są skrypty, w plikach, których nazwy kończą się nainst
sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
usuń wszystko przed i włącznie z ostatnim /
na pełnej ścieżce i / .preinst
lub .postinst
rozszerzeniuDzięki @muru za zasugerowanie ładniejszego i szybszego sposobu wyszukiwania niż używanie find
tutaj :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
dla uproszczenia find -exec grep
.
basename -s
zaakceptować symbole wieloznaczne / regex ...), abym mógł odciąć przedrostki i przyrostki inst inst (ale nie znalazłem żadnych skryptów wstępnych z dodatkiem, więc wzruszam ramionami )
postinst
, więc jest mało prawdopodobne, abyś znalazł takie, które używa preinst
(ale przypuszczam, że rzadki przypadek może istnieć).
Istnieje tutaj ważny wyjątek od zwykłych adduser
użytkowników i grup: tych domyślnie dostarczanych z Ubuntu. Są one dostarczane przez base-passwd
pakiet. Lista użytkowników i grup dodanych przez ten pakiet jest podana (i opisana) w /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}
. Lista jest następująca:
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
Pakiet README ( /usr/share/doc/base-passwd/README
) wymienia również niektórych użytkowników z identyfikatorami UID w zakresie 60000-64999 i stwierdza, że są one tworzone przez odpowiednie pakiety.
Zobacz także:
base-passwd
dla 14.04 - możesz zobaczyć listę użytkowników i grup w *.master
plikach.
preinst
ponieważ istnieją pewne pakiety tworzące użytkowników w tym skrypcie. Ale mam pomysł, więc go zaakceptuję.