你們好,我是良許。程序員
文件是咱們在電腦裏最珍貴的財富,咱們常常工做了老半天,而後出來的成果就只是一個文件而已。特別是程序員,咱們寫了半天的代碼,結果也就是一個個代碼文件而已。面試
可是,咱們都有過這樣慘痛的經歷——工做了老半天,結果不當心把文件刪除了……bash
這時候,你的心情是怎樣的?痛苦?自責?無奈?架構
今天良許就給你們介紹一個命令,它將給你的重要文件加一把鎖,防止誤刪除或誤修改,爲你的寶貝文件保駕護航!學習
這裏咱們須要使用到一個命令是:chattr
,這個命令在大部分的 Linux 發行版裏都有,因此對於它的安裝就不贅述了。它的基本用法以下:測試
$ chattr 操做符 屬性 文件名複製代碼
對於操做符,有如下三種:網站
+
:給文件增長屬性-
:去除文件屬性=
:設置文件的僅有屬性注意,這裏講的屬性不是文件對應的系統屬性,而是 chattr 給文件賦予的屬性。本文要講的屬性有如下兩個:spa
a
- 容許給文件追加內容i
- 保護模式(不容許刪除或修改)可是,它的屬性能夠設置不少,有興趣的小夥伴能夠去看下它的 man 手冊。code
$ man chattr複製代碼
假如咱們如今有個國寶級重要文件 file.txt
,如今咱們使用 chattr 對它進行保護。在這裏,咱們給文件增長 +i
屬性:cdn
$ 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複製代碼
能夠看出來,依然不能對文件進行修改了。
並且,即便你從 GUI 界面手動去刪除這個文件,也仍是不能耐他幾何。
因此,能夠看出來,如今這個文件獲得了很好的保護,既不能被刪除(各類方法都不行),也不能被修改。
那咱們要怎麼去除這個保護呢?很簡單,只需加上 -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/複製代碼
最後,最近不少小夥伴找我要Linux學習路線圖,因而我根據本身的經驗,利用業餘時間熬夜肝了一個月,整理了一份電子書。不管你是面試仍是自我提高,相信都會對你有幫助!目錄以下:
免費送給你們,只求你們金指給我點個贊!
也但願有小夥伴能加入我,把這份電子書作得更完美!
推薦閱讀: