Jawaban:
Ini akan bekerja dengan cukup andal jika paket diinstal melalui dpkg(termasuk dengan apt install). Lihat jawaban muru untuk daftar pengguna yang dibuat di instalasi default Ubuntu dan paket yang membuatnya. Untuk pengguna tersebut, metode ini tidak akan menghasilkan output apa pun.
Anda dapat menggunakan perintah:
grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
ganti <user>dengan nama pengguna yang Anda minati, misalnya,systemd
Ini mencari preinstdan postinstskrip semua paket yang dikenal dpkguntuk perintah adduseratau useradddan pengguna yang bersangkutan, untuk melihat paket mana yang bertanggung jawab untuk membuat pengguna itu. Hasilnya disalurkan ke sed sehingga hanya mengembalikan nama paket itu sendiri dan bukan nama lengkap file skrip.
grep -RlE mencari secara rekursif dan hanya mencetak nama-nama file yang mengandung kecocokan, menggunakan ekspresi reguler yang diperluas'(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'cari perintah adduseratau useradddan pengguna yang ingin Anda temukan di baris yang sama ( .*akan cocok dengan karakter di antara mereka, menangkap opsi perintah apa pun) di direktori tempat dpkgmenyimpan skrip, dalam file yang namanya diakhiri denganinstsed -r 's:.*/(.*)\.[-a-z]+inst:\1:'menanggalkan semuanya sebelum & termasuk yang terakhir /di path lengkap dan .preinstatau .postinstekstensiTerima kasih kepada @muru karena menyarankan cara pencarian yang lebih rapi dan lebih cepat daripada menggunakan di findsini :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'untuk menyederhanakannya find -exec grep.
basename -smenerima wildcard / regex ...) jadi saya dapat membuatnya memenggal sufiks pre AND post inst (tapi saya tidak menemukan skrip preinst dengan adduser jadi mengangkat bahu )
postinst, jadi tidak mungkin Anda akan menemukan yang menggunakan preinst(tapi saya kira kasus langka mungkin ada).
Ada pengecualian penting untuk adduserpengguna dan grup yang biasa ditambahkan di sini: orang-orang yang datang dengan Ubuntu secara default. Ini disediakan oleh base-passwdpaket. Daftar pengguna dan grup yang ditambahkan oleh paket ini diberikan (dan dijelaskan) di /usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}. Daftarnya adalah:
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
Paket README ( /usr/share/doc/base-passwd/README) juga mencantumkan beberapa pengguna dengan UID di kisaran 60000-64999, dan menyatakan bahwa ini dibuat oleh masing-masing paket.
Lihat juga:
base-passwduntuk 14,04 - Anda dapat melihat daftar pengguna dan grup dalam *.masterfile.
preinstkarena ada beberapa paket yang membuat pengguna di skrip itu. Tapi saya mendapatkan ide jadi saya akan menerimanya.