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 preinst
dan postinst
skrip semua paket yang dikenal dpkg
untuk perintah adduser
atau useradd
dan 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 adduser
atau useradd
dan pengguna yang ingin Anda temukan di baris yang sama ( .*
akan cocok dengan karakter di antara mereka, menangkap opsi perintah apa pun) di direktori tempat dpkg
menyimpan skrip, dalam file yang namanya diakhiri denganinst
sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'
menanggalkan semuanya sebelum & termasuk yang terakhir /
di path lengkap dan .preinst
atau .postinst
ekstensiTerima kasih kepada @muru karena menyarankan cara pencarian yang lebih rapi dan lebih cepat daripada menggunakan di find
sini :)
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
untuk menyederhanakannya find -exec grep
.
basename -s
menerima 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 adduser
pengguna dan grup yang biasa ditambahkan di sini: orang-orang yang datang dengan Ubuntu secara default. Ini disediakan oleh base-passwd
paket. 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-passwd
untuk 14,04 - Anda dapat melihat daftar pengguna dan grup dalam *.master
file.
preinst
karena ada beberapa paket yang membuat pengguna di skrip itu. Tapi saya mendapatkan ide jadi saya akan menerimanya.