Jawaban:
man
(perintah, bukan pengguna) adalah aplikasi bantuan. Aplikasi menyediakan halaman manual dalam paket mereka tetapi man
perlu tahu di mana mereka berada dan juga bantuan apa yang mereka berikan. Untuk mempercepat - jadi man
jangan mencari seluruh sistem file saat Anda mengetik man <command>
- halaman manual ini diindeks ke dalam database dengan perintah yang disebut mandb
.
Di Ubuntu mandb
menyimpan 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 mandb
dijalankan sebagai man
pengguna:
# --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/man
masih root.
Tetapi mengapa tidak mandb
berjalan sebagai pengguna yang berbeda sama sekali? Itu bisa (mungkin) berjalan dengan baik root
tetapi 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 man
indeks 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 .