Предполагается, что в некоторых пакетах во время установки запускаются сценарии, в которых создаются учетные записи пользователей /etc/passwd
. Как я могу проверить, какой пакет создан конкретным пользователем?
источник
Предполагается, что в некоторых пакетах во время установки запускаются сценарии, в которых создаются учетные записи пользователей /etc/passwd
. Как я могу проверить, какой пакет создан конкретным пользователем?
Это будет работать достаточно надежно, если пакет был установлен через 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
здесь :)
preinst
это, поскольку в этом скрипте есть несколько пакетов, создающих пользователей. Но я понял идею, поэтому приму ее.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}
. Список:Пользователи (обычно с соответствующими группами)
Группы (без соответствующих пользователей)
Пакет README (
/usr/share/doc/base-passwd/README
) также перечисляет некоторых пользователей с UID в диапазоне 60000-64999 и заявляет, что они созданы соответствующими пакетами.Также см:
base-passwd
для 14.04 - вы можете увидеть список пользователей и групп в*.master
файлах.источник