Linux中國

如何在Linux下創建一個不可變更的文件

在這個教程中,我會示範如果使用chattr來讓Linux中的文件不可變更。

chattrlsattr命令是e2fsprogs包的一部分,它在所有現代Linux發行版都預裝了。

下面是chattr的基本語法。

$ chattr [-RVf] [操作符][標誌位] 文件...

其中操作符可以是「+」(把選定的標誌位添加到標誌位列表)、「-」(從標誌位列表中移除選定的標誌位)、或者「=」(強制使用選定的標誌位)。

下面是一些可用的標誌位。

  • a: 只能以追加模式打開。
  • A: 不能更新atime(文件訪問時間)。
  • c: 當被寫入磁碟時被自動壓縮。
  • C: 關掉「寫時複製」。
  • i: 不可變更。
  • s: 通過自動歸零來安全刪除。(LCTT 譯註:一般情況文件被刪後內容不會被修改,改標誌位會使得文件被刪後原有內容被「0」取代)

「不可變更」標誌位

為了讓一個文件不可變更,你需要按照如下方法為這個文件添加「不可變更」標誌位。例如,對/etc/passwd文件做防寫:

$ sudo chattr +i /etc/passwd

注意設置或取消一個文件的「不可變更」標誌位是需要root用戶許可權的。現在檢查該文件「不可變更」標誌位是否被添加上了。

$ lsattr /etc/passwd

一旦文件被設置為不可變更,任何用戶都將無法修改該文件。即使是root用戶也不可以修改、刪除、覆蓋、移動或者重命名這個文件。如果你想再次修改這個文件,需要先把「不可變更」標誌位取消了。

用如下命令取消「不可變更」標誌位:

$ sudo chattr -i /etc/passwd

如果你想讓一個目錄(比如/etc)連同它下邊的所有內容不可變更,使用「-R」選項:

$ sudo chattr -R +i /etc

「只可追加」標誌位

另一個有用的的標誌位是「只可追加」,它只允許文件內容被追加的方式修改。你不能覆蓋或者刪除一個設置了「只可追加」標誌位的文件。這個標誌位在你想避免日誌文件被意外清理掉的情況很有用。

和「不可變更」標誌位類似,你可以使用如下命令讓文件變成「只可追加」模式:

$ sudo chattr +a /var/log/syslog

注意當你複製一個「不可變更」或者「只可追加」的文件到其他地方後,新文件不會保留這些標誌位!

結論

在這個教程中,我展示了如何使用chattrlsattr命令來管理額外的文件標誌位,來避免文件被篡改(意外或者其他情況)的方法。注意你不能將chattr作為一個安全措施,因為「不可變更」標誌位可以很容易被取消掉。解決這個問題的一個可能的方式是限制chattr命令自身的可用性,或者去掉CAPLINUXIMMUTABLE內核權能標誌。關於chattr以及可用的標誌位的更多細節,請參考它的man手冊。

via: http://xmodulo.com/make-file-immutable-linux.html

作者:Dan Nanni 譯者:goreliu 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國