Podejrzewa się, że w niektórych pakietach w czasie instalacji działają skrypty, które tworzą konta użytkowników /etc/passwd
. Jak mogę sprawdzić, który pakiet utworzył określonego użytkownika?
źródło
Podejrzewa się, że w niektórych pakietach w czasie instalacji działają skrypty, które tworzą konta użytkowników /etc/passwd
. Jak mogę sprawdzić, który pakiet utworzył określonego użytkownika?
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 :)
preinst
ponieważ istnieją pewne pakiety tworzące użytkowników w tym skrypcie. Ale mam pomysł, więc go zaakceptuję.grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
dla uproszczeniafind -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żywapreinst
(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 przezbase-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:Użytkownicy (zwykle z odpowiednimi grupami)
Grupy (bez odpowiednich użytkowników)
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.źródło