man
なぜ自分のユーザーがいるのだろうか。
$ grep man /etc/passwd
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
私はDebianバスターを使用しています。
答え1
man
(少なくとも、実装バージョンman-db
) は、「キャッシュ」(索引付けを含む)が使用されるように独自のユーザーとして設定できます。例えば)ではwhatis
なく、このユーザーが所有および更新できますroot
。
またman
、このユーザーに対してuidを設定して、ユーザーに特定の権限を要求せずにキャッシュディレクトリに書き込むこともできます。
$ ls -ld /var/cache/man /usr/bin/man
-rwsr-sr-x 1 man man 115600 Feb 19 2021 /usr/bin/man
drwxr-xr-x 31 man man 4096 Nov 23 00:00 /var/cache/man
上記のman
バイナリはsetuidとsetgidman
だけでなくman
ownsです/var/cache/man
。
sudo dpkg-reconfigure man-db
Debian 派生では、次の説明を使用できます。
manおよびmandbプログラムは、「man」ユーザーの権限で実行するようにset-user-idビットを設定してインストールできます。これにより、一般ユーザーは、事前にフォーマットされたマニュアルページ(「catページ」)をキャッシュして、遅いシステムのパフォーマンスを向上させるのに役立ちます。
マンページキャッシングは、80列ターミナルを使用している場合にのみ機能します。これは、あるユーザーが他のユーザーに不快な幅でCatページを保存するのを防ぐためです。ワイド端末を使用している場合は、MANWIDTH = 80を設定してマニュアルページの形式を80列に強制することができます。
この機能を有効にするとセキュリティ上のリスクがあるため、デフォルトでは無効になっています。疑わしい場合は無効にする必要があります。
Catページは現在役に立たないので、それをサポートしていないシステムを設定しても問題は発生しません。 Catページもサポートされていますが、任意のユーザーはそれを生成できないため、man
定期的に作成するにはユーザーとsetuidバイナリが必要です。みんな猫のページがありません(参照catman
)。
setuidなしで、ユーザーman
は関連するクローン操作(インデックス付けなど)man
に使用できます。man
whatis