使用 /etc/*.d/ 作为配置机制的概念是何时在 Linux 中引入的?它叫什么?

使用 /etc/*.d/ 作为配置机制的概念是何时在 Linux 中引入的?它叫什么?

这是一个非常基础的问题,但却是 Google 上很难找到的问题之一。似乎/etc/*.d并非所有 Linux 内核都支持配置。首先,我想了解如何正确引用该.d范例;其次(可能超出了本网站的范围),我想了解其背后的历史以及选择不同配置策略的原因。

谢谢。

答案1

这显然是一个非常常见的问题。据我所知,你是 Stack Exchange 上第一个询问其好处和/或历史而不是仅仅询问其含义的人,所以我将在这里直接回答。

所以.d只是表示“目录”。据我所知,这已成为 sysvinit 的一个功能,具有/etc/init.d//etc/rc.d文件夹。这些始终包含由其他进程解析或调用的独立配置文件。

至于为什么这样做,有以下几个原因:

  1. 想象一下,如果您的 init 进程由单个配置文件控制。该文件将变得庞大而笨重。Web 服务等nginx使用此范例来鼓励将各个网站或虚拟主机分离到自己的配置文件中。(此文件夹在大多数发行版 Nginx 软件包中都有调用sites-available,但它也有一个conf.d通常适用于所有设置的文件夹)

  2. 安全分离(某种程度上)。单独的配置文件允许对每个文件设置不同的权限。如果信任一个用户修改与他们相关的服务或设置,他们只能修改他们有权修改的文件,而不是赋予他们“一个文件统治所有文件”的权限

  3. 易于故障排除/重新配置。回到 nginx,假设您需要禁用特定子域。由于每个站点都分解为自己的配置文件,因此您只需重命名或删除该文件,而不必进入单个大文件并注释掉所有内容。这同样适用于 init - 通常在 sysv 系统上,通过添加或删除符号链接来启用和停用 init 脚本。这可处理运行级别等。无需调用文本编辑器。

所有这些好处都是通过复杂性的微小增加而获得的。

术语?我认为这种设计没有任何官方术语,每个人都称它们为“点 d 文件夹”。

进一步阅读:

相关内容