回答:
man(ユーザーではなくコマンド)は、ヘルプアプリケーションです。アプリケーションは、パッケージ内のマニュアルページを提供しますがman、それらがどこにあるのか、また何を提供するのかを知る必要があります。速度を上げるためにman(入力時にファイルシステム全体を検索しないように)、man <command>これらのmanページはと呼ばれるコマンドによってデータベースにインデックス付けされますmandb。
Ubuntuでは、mandbインデックスをGNU gdbmデータベースに格納します/var/cache/man/index.db(同じディレクトリにいくつかの言語固有のバージョンがあります)。これは、memcacheに似ていないキー値ハッシュデータベース、または同様のアイデアに関する他の100の実装です。バイナリ、軽量、高速です。最後にそれをどのようにプレイするかの例を紹介します。
このインデックスは、Ubuntuで毎日実行されるようにスケジュールされてい/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ページによって悪用されるプロセス(またはさらに悪いことに)から隔離されます。
起こりうる最悪の事態は、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> 
実際のフィールドの内容については、テクニカルマニュアルを参照してください。