詳解Linux chattr 命令,超越許可權任性修改
很多時候,Linux機器被不同的用戶使用。因此,這些用戶有機會訪問一組共同的文件。這就為一些問題打開了大門,比如意外刪除或編輯重要文件,而作為管理員,你肯定不希望發生這樣的事情。值得慶幸的是,存在一個名為「chattr」的命令,它可以在上述場景中幫助到你。下面,我們使用一些容易理解的示例來討論這個工具。本頁面所有的例子都在Ubuntu 16.04 LTS上進行了測試。
Linux chattr 命令
一般,「chattr」命令用於更改Linux文件上屬性。以下是它的語法:
chattr [ -RVf ] [ -v version ] [ mode ] files...
下面是man手冊對它的描述:
chattr 改變一個Linux文件系統上的文件屬性。
一個通用格式是:+-=[aAcCdDeijsStTu]
『+』選項,將給文件添加屬性;『-』選項,移除文件中的屬性;『=』選項,使得文件只有這些屬性。
字母 "aAcCdDeijsStTu" 可以賦予文件的新屬性:
a:只能附加數據A:不修改訪問時間c:壓縮文件,C:不執行寫入時複製(COW) 。多個調用者獲取同一個資源,這時,另一個調用者對這資源進行了修改,不生成一個副本給d:不 dump D: 同步更新目錄e:extent格式(一種文件系統格式)i:不能修改。不能刪除或重命名,不能創建到該文件的鏈接,也不能向該文件寫入數據。只有超級用戶或擁有 CAP_LINUX_IMMUTABLE 能力的進程才能設置或清除此屬性。j:數據日誌s:安全刪除S:同步更新t:不知道文件尾部合併T:目錄層次的頂部u:文件被刪除時,其內容會被保存,後面可以請求恢復
下面的只讀屬性,可以使用 lsattr列出,但不能被 chattr 修改:
E:壓縮錯誤h:巨大的文件I:索引目錄N:內聯數據X:壓縮原始訪問Z:壓縮文件是髒的
並不是所有文件系統都支持所有標誌;參考文件系統手冊了解如btrfs(5), ext4(5), 和 xfs(5)文件格式的更多詳情。
下面是一些問答式的例子,這些例子應該能讓你對chattr命令的工作原理有一個很好的了解。
Q1. chattr 命令如何使用?
假設您想要使一個文件成為只讀的。因此,您所要做的就是使用+i選項和文件的名稱作為參數來運行chattr命令。
如:
chattr +i test.txt
下面的截圖顯示,一旦使用chattr成為只讀文件,就不會有其他操作在文件上取得成功。
注意:正如您已經觀察到的,您需要擁有使用chattr命令的root許可權。
Q2. chattr 命令如何取消只讀屬性?
這很簡單--你所要做的就是使用-i選項替換+i。例如:
chattr -i test.txt
Q3. chattr 命令如何給一個文件添加只能追加(append-only)的許可權?
有時,您可能不希望對文件進行完全限制。我的意思是,您可能想要為用戶提供對文件的追加的訪問,這樣就可以添加新的內容,但是現有的內容不能被刪除或編輯。這也可以通過+a選項。
chattr +a test.txt
現在可以附加內容到文件中,但是不能編輯文件中的現有信息,也不能刪除文件。要取消這種行為,只需使用-a選項。
chattr -a test.txt
Q4. chattr 命令如何對一個目錄中的所有文件添加限制?
這可以使用標記-R來完成,它允許您遞歸地改變目錄及其內容的屬性。例如,如果您想讓test-dir目錄中的所有文件都是只讀的,那麼請使用以下方式:
chattr -R +i ./test-dir/
下面的截圖顯示了只讀限制被成功地應用到目錄中的所有文件中。
Q5. 如何查看 chattr 命令賦予文件上的屬性?
到目前為止,為了檢查是否成功執行了chattr目錄,我們嘗試執行一些操作,如編輯文件或刪除它。但是有一個單獨的命令,可以讓您輕鬆地查看文件是否有某個屬性。這個命令是lsattr。
lsattr [FILENAME]
例如,下面的截圖顯示了lsattr的輸出,清楚地表明「i」屬性被應用到目錄中的所有文件中。
再確認一下,這是使用-i選項後的輸出。
您可以在上面的截圖中看到,只讀屬性從所有文件中刪除了。
總結
如果您是一個系統管理員,或者在Linux機器上管理用戶,那麼您現在明白了,chattr是一個必須知道的命令行工具。有效地使用這個命令可以避免很多麻煩。
※公司業務需要軟體定義網路的五個原因
※BitBucket支持Git V2啦
TAG:Linux資訊速推 |