Відповіді:
Це буде працювати надійно, якщо пакет був встановлений через 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
або useradd
відповідного користувача та переглядає, який пакет відповідає за створення цього користувача. Результат передається на sed, тому він повертає лише ім'я самого пакета замість повного імені файлу сценарію.
grep -RlE
шукайте рекурсивно та друкуйте лише імена файлів, що містять збіги, використовуйте розширені регулярні вирази'(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'
шукайте команду adduser
or або 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
прийняти подстановочні символи / регекс ...), щоб я міг змусити його відрізати суфікси попереднього і після інстастування (але я не знайшов жодних сценаріїв преінстінду з аддусером, тому знизайте плечима )
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
, оскільки в цьому сценарії є деякі пакети, що створюють користувачів. Але я отримую ідею, тому прийму її.