Linux

停止強制保存具有隻讀權限的文件

  • April 16, 2019

我有一個目前位於的腳本文件,sudoers為了安全起見,我希望這個文件是只讀的……所以我發出了以下 chmod:

chmod 555 test.sh

現在這個文件的權限是

-r-xr-xr-x  

但是,當我去 vi 這個文件時,即使它說W10: Warning: Changing a readonly file,我仍然可以做“w!” 強制保存它。我怎樣才能禁用強制保存,以便普通使用者根本無法寫入該文件?

在 Linux 系統上,使用chattr設置不可變文件屬性。

sudo chattr +i file

不能修改具有“i”屬性的文件:不能刪除或重命名,不能創建指向該文件的連結,不能修改文件的大部分元數據,不能以寫入模式打開文件。只有超級使用者或擁有 CAP_LINUX_IMMUTABLE 能力的程序才能設置或清除此屬性。

用於lsattr列出文件的屬性。

lsattr -l myfile
myfile    Immutable

這樣做的缺點是即使作為超級使用者(root)也無法寫入文件。您需要先刪除不可變屬性:

sudo chattr -i file

在 macOS 上,chflags命令用於設置和重置不可變標誌。設置:

chflags uchg file

並取消設置或清除:

chflags nouchg file

這些操作可以由文件的所有者或超級使用者執行。

在 macOS 中,使用-Ol帶有設置時ls顯示不可變標誌的標誌uchg

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