Hal ini diduga bahwa beberapa paket memiliki script menjalankan pada waktu menginstal yang membuat account pengguna di /etc/passwd
. Bagaimana saya bisa memeriksa paket mana yang menciptakan pengguna tertentu?
sumber
Hal ini diduga bahwa beberapa paket memiliki script menjalankan pada waktu menginstal yang membuat account pengguna di /etc/passwd
. Bagaimana saya bisa memeriksa paket mana yang menciptakan pengguna tertentu?
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 :)
preinst
karena ada beberapa paket yang membuat pengguna di skrip itu. Tapi saya mendapatkan ide jadi saya akan menerimanya.grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'
untuk menyederhanakannyafind -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 menggunakanpreinst
(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 olehbase-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:Pengguna (biasanya dengan grup yang sesuai)
Grup (tanpa pengguna yang sesuai)
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.sumber