將 /etc 下的設定檔的權限更改為非 root 使用者是否存在任何潛在的陷阱?

將 /etc 下的設定檔的權限更改為非 root 使用者是否存在任何潛在的陷阱?

我們的機器上正在運行各種服務,例如 cassandra、datadog 等。

有時,我們需要更改配置,並且希望自動傳播配置檔案並重新啟動。

我們使用 Jenkins 來自動化應用程式軟體的工作流程,並考慮將其用於服務。我們不希望運行 Jenkins 的伺服器對主機伺服器具有遠端 root(甚至 sudo)存取權限。

我想知道我們是否可以安全地將 /etc/cassandra 的所有者更改為 cassandra,將 /etc/datadog 更改為 dd-agent 等,因為這將幫助我們實現自動化。 (其實這樣的資料夾/文件是不是建議應該由適當的使用者擁有,並且以 root 作為所有者是錯誤的?

答案1

該目錄的想法是該/etc目錄包含所有全系統配置 - 與每個單獨的使用者配置相反,在大多數情況下,每個使用者的配置都位於下面的$HOME/.config某個位置。由於系統範圍的配置會影響所有用戶,因此這些檔案由 root 擁有是正確的。

現在,我不知道您的系統,但您可能在每個系統上運行 cassandra 等一次,因此您可能不需要單一使用者設定檔。我沒有看到更改這些文件/子目錄的所有權有任何陷阱,除了它與設計方式相矛盾。 (只要你不改變主/etc目錄的所有權!)

就我個人而言,我會設定一個實例目錄(可能在其主資料夾中),並使用儲存在其中的配置 - 但這取決於您。

答案2

root 不應該是與應用程式相關的等設定檔的擁有者。優雅的解決方案是這樣的:datadog應用程式由使用者datadog運行,設定檔由datadog和群組datadog擁有。但現在詹金斯出現了,需要查看/編輯 /etc/datadog 中的一些文件,但也許不是全部。

因此,我們創建一個名為「datadogjenkins」的新群組,並使 datadog 和 jenkins 都成為該群組的成員。然後我們將詹金斯需要讀/寫/執行的文件/資料夾的ownerGROUP更改為我們的新組。

現在,datadog 和 jenkins 都可以存取這些資產。而且他們都不需要將權限升級為root。我們可以讓 jenkins 遠離它不需要看到的東西,以防 jenkins 受到損害。

希望這足以解釋它。

相關內容