/ etc / passwdにmanエントリがあるのはなぜですか


23

/etc/passwdファイルにmanユーザーのエントリがあることに気付きました。このユーザーの目的は何ですか?

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

回答:


31

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> 

実際のフィールドの内容については、テクニカルマニュアルを参照してください


3
たぶん、このサービス(および他の多くのサービス)が独自のユーザーを持ち、単にルートまたは何かとして実行されない理由の説明を追加できますか?
トーマスパドロンマッカーシー14

@ ThomasPadron-McCarthy十分ですか?
オリ

それは素晴らしいです!
トーマスパドロン-マッカーシー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.