जवाबों:
man
(कमांड, उपयोगकर्ता नहीं) एक सहायता एप्लिकेशन है। एप्लिकेशन उनके पैकेज में मैन पेज प्रदान करते हैं, लेकिन man
यह जानना आवश्यक है कि वे कहां हैं और यह भी कि वे क्या मदद करते हैं। चीजों को गति देने के लिए - इसलिए man
जब आप टाइप करते हैं तो पूरे फाइल सिस्टम को नहीं खोजते हैं man <command>
- इन मैन पेजों को एक कमांड में डेटाबेस में अनुक्रमित किया जाता है जिसे कहा जाता है mandb
।
उबंटू mandb
में एक GNU gdbm डेटाबेस में /var/cache/man/index.db
(और उसी निर्देशिका में कुछ भाषा विशिष्ट संस्करण) अनुक्रमित करता है । यह एक मुख्य-मूल्य हैशिंग डेटाबेस है जो मेमेचे से भिन्न नहीं है, या समान विचारों पर सौ अन्य कार्यान्वयन। यह द्विआधारी, हल्का और तेज है। मैं अंत में इसके साथ खेलने के तरीके के एक उदाहरण में फेंक दूंगा।
यह अनुक्रमण उबंटू में दैनिक रूप से चलाने के लिए निर्धारित है /etc/cron.daily/man-db
। पूरी स्क्रिप्ट रूट के रूप में चलती है और पहले कुछ सफाई करती है लेकिन अंत में हम देखते हैं mandb
कि man
उपयोगकर्ता के रूप में चलाया जा रहा है :
# --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
यह समूह नहीं बदल रहा है, यही वजह है कि समूह के सभी मालिक /var/cache/man
अभी भी जड़ हैं।
लेकिन आखिर mandb
एक अलग उपयोगकर्ता के रूप में क्यों चलता है ? यह (शायद) बस के रूप में अच्छी तरह से चला सकता है, root
लेकिन यह विभिन्न स्रोतों से इनपुट संसाधित कर रहा है (देखें manpath
)। अपने स्वयं के उपयोगकर्ता के रूप में चल रहा है, सिस्टम को ऊपर से उड़ाने की प्रक्रिया से इंसुलेट करता है — और भी बदतर - विकृत, दूषित या दुर्भावनापूर्ण पुरुष पृष्ठों द्वारा शोषण किया जा रहा है।
जो सबसे खराब हो सकता है, वह केवल man
पृष्ठों के सूचकांक को प्रभावित करेगा । बू हू। आप पुष्टि कर सकते हैं कि कुछ इस तरह से:
sudo -u man find / -writable 2>/dev/null
और आप उस दृष्टिकोण का उपयोग करके देख सकते हैं कि कोई उपयोगकर्ता किसी सिस्टम पर कितना नुकसान कर सकता है। अपनी फ़ाइल अनुमतियों का ऑडिट करना एक अच्छा विचार है (मुझे अभी पता चला है कि कोई भी उपयोगकर्ता मेरे पूरे संगीत संग्रह को हटा सकता है, उदाहरण के लिए)।
आप डेटाबेस के साथ झांक सकते हैं accessdb
। यहाँ कुछ यादृच्छिक रिकॉर्ड हैं:
$ 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."
हालांकि ऊपर से पूरी तरह से स्पष्ट नहीं है, वहाँ वास्तव में टैब-अलग क्षेत्र हैं:
<name> -> <ext> <sec> <mtime> <ID> <ref> <comp> <whatis>
आप तकनीकी मैनुअल में वास्तविक क्षेत्र सामग्री के बारे में अधिक पढ़ सकते हैं ।