这是一个奇怪的问题,但它让我觉得就像鱼会问关于水的问题。
文件是如何/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-passwd
package 部署的不是打包文件,这就是为什么运行dpkg -L
不起作用,而是从预安装脚本生成文件/var/lib/dpkg/info/base-passwd.preinst
对于我的 RHEL 和 CentOS,等效项rpm -qf /etc/passwd
确实显示“拥有”该文件的包,即setup
RPM 包。
答案2
从零开始的Linux你自己创建这个文件吗?我假设发行版从一个基本文件开始,然后添加您在安装时动态选择的用户和服务。看起来他们希望你遵循的唯一规则是 root 的 uid 和 gid 为 0,bin 的值为 1。看起来其他一切都是任意的。
答案3
对于嵌入式系统,它是在 buildroot/mkimage 等中创建的。
在自定义/小型发行版中,管理员创建它。
在某些桌面/服务器发行版上,它是使用 Arch Linux 上的“文件系统”或 Fedora 上的“设置”等软件包创建的。
在 Ubuntu 或 Debian 上,它是预安装脚本的一部分。 base-passwd 软件包提供了 update-passwd 实用程序。