詳解Linux chattr 命令,超越權限任性修改

導讀 不少時候,Linux機器被不一樣的用戶使用。所以,這些用戶有機會訪問一組共同的文件。這就爲一些問題打開了大門,好比意外刪除或編輯重要文件,而做爲管理員,你確定不但願發生這樣的事情。值得慶幸的是,存在一個名爲「chattr」的命令,它能夠在上述場景中幫助到你。下面,咱們使用一些容易理解的示例來討論這個工具。本頁面全部的例子都在Ubuntu 16.04 LTS上進行了測試。

Linux chattr 命令html

通常,「chattr」命令用於更改Linux文件上屬性。如下是它的語法:linux

chattr [ -RVf ] [ -v version ] [ mode ] files...安全

下面是man手冊對它的描述:app

chattr 改變一個Linux文件系統上的文件屬性。工具

一個通用格式是:+-=[aAcCdDeijsStTu]測試

‘+’選項,將給文件添加屬性;‘-’選項,移除文件中的屬性;‘=’選項,使得文件只有這些屬性。命令行

字母 'aAcCdDeijsStTu' 能夠賦予文件的新屬性:3d

a:只能附加數據A:不修改訪問時間c:壓縮文件,C:不執行寫入時複製(COW) 。多個調用者獲取同一個資源,這時,另外一個調用者對這資源進行了修改,不生成一個副本給d:不 dump D: 同步更新目錄e:extent格式(一種文件系統格式)i:不能修改。不能刪除或重命名,不能建立到該文件的連接,也不能向該文件寫入數據。只有超級用戶或擁有 CAP_LINUX_IMMUTABLE 能力的進程才能設置或清除此屬性。j:數據日誌s:安全刪除S:同步更新t:不知道文件尾部合併T:目錄層次的頂部u:文件被刪除時,其內容會被保存,後面能夠請求恢復日誌

下面的只讀屬性,可使用 lsattr列出,但不能被 chattr 修改:htm

E:壓縮錯誤h:巨大的文件I:索引目錄N:內聯數據X:壓縮原始訪問Z:壓縮文件是髒的

並非全部文件系統都支持全部標誌;參考文件系統手冊瞭解如btrfs(5), ext4(5), 和 xfs(5)文件格式的更多詳情。

下面是一些問答式的例子,這些例子應該能讓你對chattr命令的工做原理有一個很好的瞭解。

Q1. chattr 命令如何使用?

假設您想要使一個文件成爲只讀的。所以,您所要作的就是使用+i選項和文件的名稱做爲參數來運行chattr命令。

如:

chattr +i test.txt

下面的截圖顯示,一旦使用chattr成爲只讀文件,就不會有其餘操做在文件上取得成功。
詳解Linux chattr 命令,超越權限任性修改詳解Linux chattr 命令,超越權限任性修改

注意:正如您已經觀察到的,您須要擁有使用chattr命令的root權限。

Q2. chattr 命令如何取消只讀屬性?

這很簡單--你所要作的就是使用-i選項替換+i。例如:

chattr -i test.txt

詳解Linux chattr 命令,超越權限任性修改詳解Linux chattr 命令,超越權限任性修改

Q3. chattr 命令如何給一個文件添加只能追加(append-only)的權限?

有時,您可能不但願對文件進行徹底限制。個人意思是,您可能想要爲用戶提供對文件的追加的訪問,這樣就能夠添加新的內容,可是現有的內容不能被刪除或編輯。這也能夠經過+a選項。

chattr +a test.txt

詳解Linux chattr 命令,超越權限任性修改詳解Linux chattr 命令,超越權限任性修改

如今能夠附加內容到文件中,可是不能編輯文件中的現有信息,也不能刪除文件。要取消這種行爲,只需使用-a選項。

chattr -a test.txt

Q4. chattr 命令如何對一個目錄中的全部文件添加限制?

這可使用標記-R來完成,它容許您遞歸地改變目錄及其內容的屬性。例如,若是您想讓test-dir目錄中的全部文件都是隻讀的,那麼請使用如下方式:

chattr -R +i ./test-dir/

下面的截圖顯示了只讀限制被成功地應用到目錄中的全部文件中。
詳解Linux chattr 命令,超越權限任性修改詳解Linux chattr 命令,超越權限任性修改

Q5. 如何查看 chattr 命令賦予文件上的屬性?

到目前爲止,爲了檢查是否成功執行了chattr目錄,咱們嘗試執行一些操做,如編輯文件或刪除它。可是有一個單獨的命令,可讓您輕鬆地查看文件是否有某個屬性。這個命令是lsattr。

lsattr [FILENAME]

例如,下面的截圖顯示了lsattr的輸出,清楚地代表「i」屬性被應用到目錄中的全部文件中。
詳解Linux chattr 命令,超越權限任性修改詳解Linux chattr 命令,超越權限任性修改

再確認一下,這是使用-i選項後的輸出。
詳解Linux chattr 命令,超越權限任性修改詳解Linux chattr 命令,超越權限任性修改

您能夠在上面的截圖中看到,只讀屬性從全部文件中刪除了。

總結

若是您是一個系統管理員,或者在Linux機器上管理用戶,那麼您如今明白了,chattr是一個必須知道的命令行工具。有效地使用這個命令能夠避免不少麻煩。

原文來自: https://www.linuxprobe.com/linux-chattr-root.html

相關文章
相關標籤/搜索