我只是好奇为什么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
)。
此外,man
可以为该用户设置uid,允许其写入其缓存目录,而不需要用户的特定权限:
$ 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
,以及man
owns /var/cache/man
。
在 Debian 衍生版本中,可以使用sudo dpkg-reconfigure man-db
. 给出的解释是
\n\nman 和 mandb 程序可以通过设置 set-user-id 位来安装,以便\n它们将以 \'man\' 用户的权限运行。这允许\普通用户受益于预格式化手册页\n(\'cat Pages\')的缓存,这可能有助于较慢机器上的性能。
\n缓存的手册页仅在您使用 80 列终端时才起作用,以避免\n用户导致目录页保存的宽度对其他用户来说不方便\n。如果您使用宽终端,则可以通过设置 MANWIDTH=80 强制将手册页格式化为\n80 列。
\n启用此功能可能存在安全风险,因此默认情况下将其禁用。\n如果有疑问,应将其保留为禁用状态。
\n
\xe2\x80\x9ccat 页面\xe2\x80\x9d 现在\xe2\x80\x99 不再有用,因此配置不支持它们的系统不会\xe2\x80\x99 导致任何问题。也可以支持 cat 页面,但不允许任意用户创建它们,因此需要man
用户和 setuid 二进制文件;过去,各种 Unix 系统都被设置为定期生成所有丢失的 cat 页面(请参阅 参考资料catman
)。
即使没有 setuid man
,man
用户也可以用于man
相关的 cron 作业(whatis
索引等)。