Linux

使文件在 Linux 上只讀,即使是 root

  • December 24, 2017

我知道chattr +i filename使文件對所有使用者只讀的命令。但是,問題是我可以使用chattr -i filename.

有沒有辦法讓系統上的每個人都可以讀取文件,但任何人都不能寫,甚至是根使用者,並且沒有返回(沒有選項讓它再次可寫)?

將其放在 CD 或 DVD 上。一次可寫的,不是可擦的。或某種其他類型的只讀設備。

好的,我想你想要一個軟體解決方案,所以這裡有一些想法:你可以創建一個 SELinux 規則集來禁用使用的系統呼叫(*),chattr即使是 root。另一種可能性是使用能力:設置+i需要CAP_LINUX_IMMUTABLE能力,所以如果你可以安排所有程序的能力邊界集不包括它,那麼沒有人可以更改這些標誌。但是您需要獲得支持init才能將其應用於所有流程。Systemd可以做到這一點,但我認為需要為每個服務單獨完成。

(*也許它是一個ioctl代替。)

但是,如果您這樣做,請記住,通常的 root 可以從原始設備修改文件系統(這就是debugfs目的),因此您也需要防止這種情況發生,並防止修改核心(載入模組)。使用 sysctl 可以防止載入模組kernel.modules_disabled,但我不確定是否可以防止訪問原始設備。並使所有相關的配置文件也是不可變的。

無論如何,在那之後,您還需要防止更改系統啟動方式,否則有人可以使用允許覆蓋上述限制的核心重新啟動系統。

引用自:https://unix.stackexchange.com/questions/412695