Ответы:
Это будет работать достаточно надежно, если пакет был установлен через dpkg
(в том числе с apt install
). См . Ответ Muru для получения списка пользователей, созданных в стандартной установке Ubuntu, и пакета, который их создает. Для этих пользователей этот метод не будет выдавать никаких результатов.
Вы можете использовать команду:
grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
замените <user>
имя интересующего вас пользователя, например,systemd
При этом выполняется поиск сценариев preinst
и postinst
всех пакетов, известных dpkg
для команды adduser
or useradd
и рассматриваемого пользователя, чтобы определить, какой пакет отвечает за создание этого пользователя. Результат передается в sed, поэтому он возвращает только само имя пакета, а не полное имя файла сценария.
grep -RlE
выполнять рекурсивный поиск и печатать только имена файлов, содержащих совпадения, использовать расширенные регулярные выражения'(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'
найдите команду adduser
или useradd
пользователя и пользователя, которого вы хотите найти в одной строке ( .*
сопоставит любые символы между ними, перехватывает любые параметры команды) в каталоге, где dpkg
хранятся сценарии, в файлах, имена которых заканчиваются наinst
sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
удалите все до и включая последнее /
в полном пути и / .preinst
или .postinst
расширениеСпасибо @muru за более удобный и быстрый способ поиска, чем find
здесь :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
упростить find -exec grep
вещь.
basename -s
принять подстановочные знаки / регулярные выражения ...), чтобы я мог отрубить суффиксы pre и post inst (но я не нашел никаких preinst-скриптов с adduser, так что пожмите плечами )
postinst
, так что вряд ли вы найдете что-либо, что использует preinst
(но я предполагаю, что редкий случай может существовать).
Здесь есть важное исключение для обычных adduser
пользователей и групп: те, которые поставляются с Ubuntu по умолчанию. Они предоставляются base-passwd
пакетом. Список пользователей и групп, добавленных этим пакетом, приведен (и описан) в /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}
. Список:
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
Пакет README ( /usr/share/doc/base-passwd/README
) также перечисляет некоторых пользователей с UID в диапазоне 60000-64999 и заявляет, что они созданы соответствующими пакетами.
Также см:
base-passwd
для 14.04 - вы можете увидеть список пользователей и групп в *.master
файлах.
preinst
это, поскольку в этом скрипте есть несколько пакетов, создающих пользователей. Но я понял идею, поэтому приму ее.