Bagaimana cara memeriksa paket mana yang membuat pengguna?

14

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?

Cyker
sumber

Jawaban:

16

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.

Penjelasan

  • 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 denganinst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'menanggalkan semuanya sebelum & termasuk yang terakhir /di path lengkap dan .preinstatau .postinstekstensi

Terima kasih kepada @muru karena menyarankan cara pencarian yang lebih rapi dan lebih cepat daripada menggunakan di findsini :)

Zanna
sumber
Anda juga harus memeriksa preinstkarena ada beberapa paket yang membuat pengguna di skrip itu. Tapi saya mendapatkan ide jadi saya akan menerimanya.
Cyker
@Cyker Ya terima kasih :) Saya akan mengedit ... Saya melihat ke dalamnya sekarang untuk melihat apakah saya dapat menangkap mereka semua
Zanna
grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'untuk menyederhanakannya find -exec grep.
muru
terima kasih @muru itu luar biasa ... (sekarang saya hanya perlu 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 )
Zanna
@Zanna merekomendasikan Kebijakan Debian postinst, jadi tidak mungkin Anda akan menemukan yang menggunakan preinst(tapi saya kira kasus langka mungkin ada).
muru
15

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:

Pengguna (biasanya dengan grup yang sesuai)

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

Grup (tanpa pengguna yang sesuai)

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:

muru
sumber