/etc/passwd 文件是如何实例化的?

/etc/passwd 文件是如何实例化的?

这是一个奇怪的问题,但它让我觉得就像鱼会问关于水的问题。

文件是如何/etc/passwd创建的?最初。

我来自哪里

  • 我是一名 Linux 系统管理员,已经工作多年了
  • 我正在使用 Ubuntu,但这可能会被任何发行版询问
  • 我发现该/etc/passwd文件实际上不属于任何包

所以,例如这个

# dpkg -S /etc/passwd
dpkg-query: no path found matching pattern /etc/passwd

和这个

# dpkg -L passwd | grep '/etc/passwd'

(没有结果)

该软件包包含所有可使用的工具/etc/passwd。只是,不是文件本身。

安装过程中是否有从安装介质创建此文件的操作?

或者它只是埋在安装介质中的样板文件?

或者是其他东西?

答案1

对于 Ubuntu 和 Debianbase-passwdpackage 部署的不是打包文件,这就是为什么运行dpkg -L不起作用,而是从预安装脚本生成文件/var/lib/dpkg/info/base-passwd.preinst

对于我的 RHEL 和 CentOS,等效项rpm -qf /etc/passwd确实显示“拥有”该文件的包,即setupRPM 包。

答案2

从零开始的Linux你自己创建这个文件吗?我假设发行版从一个基本文件开始,然后添加您在安装时动态选择的用户和服务。看起来他们希望你遵循的唯一规则是 root 的 uid 和 gid 为 0,bin 的值为 1。看起来其他一切都是任意的。

答案3

对于嵌入式系统,它是在 buildroot/mkimage 等中创建的。

在自定义/小型发行版中,管理员创建它。

在某些桌面/服务器发行版上,它是使用 Arch Linux 上的“文件系统”或 Fedora 上的“设置”等软件包创建的。

在 Ubuntu 或 Debian 上,它是预安装脚本的一部分。 base-passwd 软件包提供了 update-passwd 实用程序。

相关内容