Linux 下防止文件被誤刪除


 chattr 命令簡介  

這里我們需要使用到一個命令是:chattr ,這個命令在大部分的 Linux 發行版里都有,所以對於它的安裝就不贅述了。它的基本用法如下:

$ chattr 操作符 屬性 文件名

對於操作符,有以下三種:

+ :給文件增加屬性

- :去除文件屬性

= :設置文件的僅有屬性

注意,這里講的屬性不是文件對應的系統屬性,而是 chattr 給文件賦予的屬性。本文要講的屬性有以下兩個:

a - 允許給文件追加內容

i - 保護模式(不允許刪除或修改)

但是,它的屬性可以設置很多,有興趣的小伙伴可以去看下它的 man 手冊。

$ man chattr

  防止文件被誤刪除或修改  

假如我們現在有個重要文件 file.txt ,現在我們使用 chattr 對它進行保護。在這里,我們給文件增加 +i 屬性:

$ sudo chattr +i file.txt

然后,我們可以使用 lsattr 命令查看它的屬性。類似的輸出如下:

$ lsattr file.txt

----i---------e---- file.txt

現在,我們來嘗試一下,手賤去刪除那個文件:

$ rm file.txt

rm: cannot remove 'file.txt': Operation not permitted

咦?不允許刪除?難道權限不夠?

那好,我 sudo 一下!

$ sudo rm file.txt

rm: cannot remove 'file.txt': Operation not permitted

我 X ,居然還是不能刪除?

我們再來試一下,修改文件的內容。

$ echo 'hello world!' >> file.txt

bash: file.txt: Operation not permitted

可以看出來,依然不能對文件進行修改了。

 

所以,可以看出來,現在這個文件得到了很好的保護,既不能被刪除(各種方法都不行),也不能被修改。

那我們要怎么去除這個保護呢?很簡單,只需加上 -i 這個選項。

$ sudo chattr -i file.txt

現在,文件又恢復原樣了,我們想修改就修改,想刪除就刪除。

$ echo 'Hello World!' >> file.txt

$ cat file.txt

Hello World!

$ rm file.txt

 防止文件夾被誤刪除或修改  

上面講到的是保護文件,那么文件夾要如何保護呢?

其實也是一樣,使用 +i 這個選項。假如我們現在有個 dir1 目錄,里面有個 file.txt 文件。我們來對這個文件夾進行保護。

$ sudo chattr -R +i dir1

在這里,我們使用 -R 選項表示可以遞歸作用到目錄里所有的文件(包括子目錄)。

現在,我們同樣測試一下是否可以被刪除或修改。

$ rm -rf dir1

$ sudo rm -rf dir1

rm: cannot remove 'dir1/file.txt': Operation not permitted

$ echo 'hello world!' >> dir1/file.txt

bash: file.txt: Operation not permitted

所以與文件一樣,我們成功地對文件夾進行了保護。

  防止文件 / 目錄被刪除,但允許追加內容  

現在我們知道怎么防止文件 / 目錄被誤刪除或修改了,但是,假如我們不想要文件已有內容被修改,但允許別人在文件末尾追加內容,要怎么操作?

這時候我們就需要使用 +a 這個選項了。

對文件:

$ sudo chattr +a file.txt

對目錄:

$ sudo chattr -R +a dir1

現在,我們來確認一下,文件是否可以被追加內容。

$ echo 'Hello World!' >> file.txt

$ echo 'Hello World!' >> dir1/file.txt

我們再使用 cat 命令去查看一下內容:

$ cat file.txt

Hello World!

$ cat dir1/file.txt

Hello World!

可以看出來,文件都是可以被追加的。

 

但是,file.txt 還有 dir1/file.txt 依然不能被刪除。

如果你想去掉可追加的屬性,可以使用 -a 這個選項。

對文件:

$ sudo chattr -R -a file.txt

對目錄:

$ sudo chattr -R -a dir1/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM