使用 /etc/*.d/ 作為配置機制的概念是什麼時候在 Linux 中引入的,它叫什麼?

使用 /etc/*.d/ 作為配置機制的概念是什麼時候在 Linux 中引入的,它叫什麼?

這是一個非常基本的問題,但卻是很難用谷歌搜尋的問題之一。似乎並非/etc/*.d所有 Linux 核心都支援配置。我想了解,首先,如何正確引用該.d範例,其次,(可能超出本網站的範圍)其背後的歷史以及為什麼選擇不同的配置策略。

謝謝。

答案1

這顯然是一個非常常見的問題。據我所知,您是 Stack Exchange 上第一個詢問好處和/或歷史的人,而不僅僅是詢問其含義,因此我將直接在這裡回答。

所以.d只是意味著“目錄”。據我所知,這變成了 sysvinit 和/etc/init.d//etc/rc.d資料夾的事情。這些始終包含由其他進程解析或調用的單獨設定檔。

至於為什麼要這樣做,有幾個原因:

  1. 想像一下,如果您的 init 進程由單一設定檔控制。該文件會變得很大而且難以處理。 Web 服務喜歡nginx使用這種範例來鼓勵將各個網站或虛擬主機分離到自己的設定檔中。 (這個資料夾sites-available在大多數發行版 Nginx 套件中被調用,但它也有一個conf.d通常適用於所有地方的設定的資料夾)

  2. 安全分離(某種程度上)。單獨的設定檔允許每個檔案具有不同的權限。如果一個使用者被信任可以修改與他們相關的服務或設置,他們只能修改他們有權存取的文件,而不是授予他們「一個文件統治所有文件」的權利

  3. 易於故障排除/重新配置。回到 nginx,假設您需要停用特定的子網域。將每個網站分解為自己的設定檔後,您只需重新命名或刪除該檔案即可,而不必進入單一大檔案並註解掉內容。這同樣適用於 init - 通常在 sysv 系統上,init 腳本透過新增或刪除符號連結來進入和退出服務。這處理運行級別等。無需調用文字編輯器。

所有這些好處都是透過複雜性的微小增加而獲得的。

術語?我不認為這個設計有任何官方的東西,每個人都只是稱它們為“dot d 資料夾”。

一些進一步閱讀:

相關內容