將 /etc 目錄設為只讀是個壞主意嗎?
我有一個使用 buildroot 和 initramfs 建構的嵌入式系統設置。它在緊湊型快閃記憶體設備上執行,我創建了單獨的 ext3 分區來掛載
/etc/
和/var
目錄以及自定義目錄來儲存數據。我不完全確定這是否是一個好主意,但我需要訪問系統日誌輸出並且還需要能夠修改文件,/etc
因為它們需要在此處配置靜態 IP 地址。編輯文件以/etc/network/interfaces
設置 IP 後,我不再需要手動編輯任何內容,/etc
所以我想知道當設備不在現場時將此安裝設置為只讀是否是個好主意,或者是否有可能我係統上的其他應用程序需要寫入/etc
? 我執行了一個相當小的系統,實際上只是 dropbear 和 busybox 正在執行(以及我控制設備的自定義控制器應用程序)。我在各種論壇和網站上環顧四周,這個想法似乎沒有太大爭議,但我的知識相當有限。我意識到我可以嘗試將它安裝為只讀,但似乎事情可能會無聲無息地破壞,所以這是一個壞主意嗎?
只讀
/etc
在嵌入式設備上越來越普遍。在桌面和伺服器安裝中,很少更改/etc
也越來越常見,文件類似於/etc/mtab
並/etc/resolv.conf
位於另一個文件系統上並符號連結/etc
(因此/etc
在安裝軟體或電腦配置更改時需要修改文件,但在安裝USB 驅動器或在筆記型電腦中連接到不同的網路)。新興的標準是安裝一個 tmpfs 文件系統和類似的
/run
符號連結/etc
/etc/mtab -> /run/mtab /etc/resolv.conf -> /etc/resolvconf/run/resolv.conf
現有或嵌入式系統可能會將 tmpfs 安裝在不同的位置,例如
/dev/shm
or/lib/init/rw
或/var/run
。
/etc
設置為只讀的問題在於,這會鎖定您可以修改的文件集。避免此問題的另一種方法是使根文件系統成為 initramfs。這是儲存在核心映像旁邊並由引導載入程序載入的存檔。它被解壓到 RAM 中並成為文件系統根目錄的根目錄。如果您要讓 initramfs 繼續存在,它不應該太大(因為它會佔用寶貴的 RAM),但是 BusyBox 二進製文件加上一些配置文件可能是可接受的 RAM 使用。
另一種方法是擁有一個只讀根文件系統加上一個讀寫文件系統的聯合掛載。