为什么man有自己的用户?

Pan*_*nki 11 man

我只是好奇为什么man有自己的用户。

$ grep man /etc/passwd
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

我正在使用 Debian Buster。

Ste*_*itt 19

man(至少,中实现的版本man-db)可以由其自己的用户设置,以便该用户可以拥有和更新其 \xe2\x80\x9ccache\xe2\x80\x9d (其中包括索引,例如使用的索引) whatis(代替root)。

\n

此外,man可以为该用户设置uid,允许其写入其缓存目录,而不需要用户的特定权限:

\n
$ ls -ld /var/cache/man /usr/bin/man\n-rwsr-sr-x  1 man man 115600 Feb 19  2021 /usr/bin/man\ndrwxr-xr-x 31 man man   4096 Nov 23 00:00 /var/cache/man\n
Run Code Online (Sandbox Code Playgroud)\n

上面显示man二进制文件是 setuid 和 setgid man,以及manowns /var/cache/man

\n

在 Debian 衍生版本中,可以使用sudo dpkg-reconfigure man-db. 给出的解释是

\n
\n

man 和 mandb 程序可以通过设置 set-user-id 位来安装,以便\n它们将以 \'man\' 用户的权限运行。这允许\普通用户受益于预格式化手册页\n(\'cat Pages\')的缓存,这可能有助于较慢机器上的性能。

\n

缓存的手册页仅在您使用 80 列终端时才起作用,以避免\n用户导致目录页保存的宽度对其他用户来说不方便\n。如果您使用宽终端,则可以通过设置 MANWIDTH=80 强制将手册页格式化为\n80 列。

\n

启用此功能可能存在安全风险,因此默认情况下将其禁用。\n如果有疑问,应将其保留为禁用状态。

\n
\n

\xe2\x80\x9ccat 页面\xe2\x80\x9d 现在\xe2\x80\x99 不再有用,因此配置不支持它们的系统不会\xe2\x80\x99 导致任何问题。也可以支持 cat 页面,但不允许任意用户创建它们,因此需要man用户和 setuid 二进制文件;过去,各种 Unix 系统都被设置为定期生成所有丢失的 cat 页面(请参阅 参考资料catman)。

\n

即使没有 setuid manman用户也可以用于man相关的 cron 作业(whatis索引等)。

\n