Mengapa ada entri man di / etc / passwd

23

Saya perhatikan bahwa ada entri untuk pengguna pria di /etc/passwdfile saya . Apa tujuan dari pengguna ini?

man:x:6:12:man:/var/cache/man:/bin/sh
Dumitru
sumber

Jawaban:

31

man(perintah, bukan pengguna) adalah aplikasi bantuan. Aplikasi menyediakan halaman manual dalam paket mereka tetapi manperlu tahu di mana mereka berada dan juga bantuan apa yang mereka berikan. Untuk mempercepat - jadi manjangan mencari seluruh sistem file saat Anda mengetik man <command>- halaman manual ini diindeks ke dalam database dengan perintah yang disebut mandb.

Di Ubuntu mandbmenyimpan indeks dalam database GNU gdbm di /var/cache/man/index.db(dan beberapa versi spesifik bahasa dalam direktori yang sama). Ini adalah basis data hashing kunci-nilai yang tidak berbeda dengan memcache, atau seratus implementasi lainnya pada ide-ide serupa. Ini biner, ringan dan cepat. Saya akan memberikan contoh cara bermain di bagian akhir.

Pengindeksan ini dijadwalkan untuk berjalan setiap hari di Ubuntu oleh /etc/cron.daily/man-db. Seluruh skrip berjalan sebagai root dan melakukan pembersihan terlebih dahulu tetapi tepat di akhir kita melihat mandbdijalankan sebagai manpengguna:

# --pidfile /dev/null so it always starts; mandb isn't really a daemon,
# but we want to start it like one.
start-stop-daemon --start --pidfile /dev/null \
                  --startas /usr/bin/mandb --oknodo --chuid man \
                  $iosched_idle \
                  -- --no-purge --quiet

Itu tidak mengubah grup, itulah sebabnya semua kepemilikan grup di /var/cache/manmasih root.

Tetapi mengapa tidak mandbberjalan sebagai pengguna yang berbeda sama sekali? Itu bisa (mungkin) berjalan dengan baik roottetapi tetapi memproses input dari berbagai sumber (lihat manpath). Berjalan sebagai penggunanya sendiri mengisolasi sistem dari proses meledakkan - atau lebih buruk - dieksploitasi oleh halaman manual yang cacat, rusak atau jahat.

Yang terburuk yang bisa terjadi hanya akan mempengaruhi manindeks halaman. Huu huu. Anda dapat mengonfirmasinya dengan sesuatu seperti:

sudo -u man find / -writable 2>/dev/null

Dan Anda dapat menggunakan pendekatan itu untuk melihat seberapa besar kerusakan yang dapat ditimbulkan oleh pengguna pada suatu sistem. Merupakan ide bagus untuk mengaudit izin file Anda (saya baru tahu bahwa setiap pengguna dapat menghapus seluruh koleksi musik saya, misalnya).


Anda dapat mengintip database dengan accessdb. Berikut adalah beberapa catatan acak:

$ accessdb | shuf -n3
fpurge -> "- 3 3 1380819168 A - - gz purge a stream"
fcgetlangs -> "FcGetLangs 3 3 1402007131 A - - gz Get list of languages"
ipython -> "- 1 1 1393443907 A - - gz Tools for Interactive Computing in Python."

Meskipun tidak sepenuhnya jelas dari yang di atas, sebenarnya ada bidang-bidang yang dipisahkan-tab di sana:

<name> -> <ext> <sec> <mtime> <ID> <ref> <comp> <whatis> 

Anda dapat membaca lebih lanjut tentang isi kolom aktual dalam manual teknis .

Oli
sumber
3
Mungkin Anda bisa menambahkan penjelasan mengapa layanan ini (dan banyak lainnya) memiliki pengguna sendiri, dan tidak hanya dijalankan sebagai root atau apalah?
Thomas Padron-McCarthy
@ ThomasPadron-McCarthy Cukup menyeluruh?
Oli
Itu luar biasa!
Thomas Padron-McCarthy