为什么在/ etc / passwd中有一个man条目

杜米特鲁

我注意到我的/etc/passwd文件中有一个用于man用户的条目该用户的目的是什么?

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

man(命令而不是用户)是帮助应用程序。应用程序在其程序包中提供手册页,但man需要知道它们的位置以及所提供的帮助。为了加快运行速度-man键入时不要搜索整个文件系统man <command>-名为的命令将这些手册页索引到数据库中mandb

在Ubuntu中,mandb将索引存储在GNU gdbm数据库中/var/cache/man/index.db(位于同一目录中,还有几种特定于语言的版本)。这是一个键值哈希数据库,与memcache或与之类似的其他一百种实现没有什么不同。它是二进制的,轻巧而又快速的。最后,我将举一个有关如何使用它的示例。

该索引计划由每天在Ubuntu中运行/etc/cron.daily/man-db整个脚本以root身份运行,并且先进行一些清理,但最后,我们看到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页面索引。您可以通过以下方式确认这一点:

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> 

您可以在技术手册中阅读有关实际现场内容的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我不能创建一个以“ passwd”为前缀的文件。在“ / etc”中?

/ etc / shadow和/ etc / passwd特权-为什么可写

为什么syslog和uml-net在/ etc / passwd中有/ home?

为什么/ etc / cups中有.O文件?

为什么“ /”有一个“ ..”条目?

为什么/ etc / passwd对公众开放以供阅读?

为什么对/ etc / passwd所做的更改不生效?

为什么每个人都这么关心etc / passwd?

为什么在/ etc / passwd中找不到+ :: 0:0 :::?

AngularJS:为什么我的下拉菜单中有一个初始空白条目?

/ etc / shadow和/ etc / passwd有什么区别

/ etc / shadow和/ etc / passwd有什么区别

为什么没有必要更改/ etc / hosts

为什么hostname命令没有从/ etc / hostname获取FQDN?

为什么每次有人执行`ls -l`命令时都使用/ etc / passwd?

为什么在/ etc下有一个二进制的多兆字节blob /etc/udev/hwdb.bin?

为什么/ etc / group中有guest-6lDH45Lx组?

为什么流行的使用TCP的服务在/ etc / services中具有UDP以及TCP条目?

为什么在String.equals中有一个“ ==”?

为什么在UIViewController中有一个NavigationItem?

为什么这个答案中有一个 en?

为什么列表中有一个列表对象?

为什么在C ++中有一个比率对象

为什么在Lua的文件中有一个“ *”:read(“ * a”)?

为什么在Volley的RequestQueue中有一个mWaitingRequests

为什么我的/ etc / passwd中的默认Shell无法由Unity会话中的终端启动?

'〜/ .bashrc'与'/etc/skel/.bashrc'。为什么有两个“ .bashrcs”?

为什么将主机名添加到/ etc / hosts条目会更改查看的网站

“./etc/profile”有什么作用?