首頁 > 軟體

在Linux中用chattr和lsattr命令管理檔案和目錄屬性

2020-06-16 17:59:07

為了允許新增資料,防止更改或者刪除等,檔案和資料夾可以設定了特定的控制屬性。例如,你可以在關鍵的系統檔案或者資料夾中啟用屬性,然後沒有任何使用者,包括root,可以刪除或者修改它,比如不允許使用像dump這樣的命令等備份工具去備份一個特定的檔案或者資料夾,等等。這些屬性只可以在ext2,ext3或者ext4檔案系統中的檔案和資料夾上設定。

有兩個命令 lsattrchattr 用來管理屬性。下面是常用屬性的列表。

屬性

描述

a (append)

允許在檔案中進行追加操作

A

這個屬性不允許更新檔案的存取時間

c (compressed)

啟用這個屬性時,檔案在磁碟上會自動壓縮

d (dump)

不能使用dump命令備份檔案

D

設定了資料夾的D屬性時,更改會在同步儲存在磁碟上

e (extent format)

它表明,該檔案使用磁碟上的塊的對映擴充套件

i (immutable)

在檔案上啟用這個屬性時,我們不能更改、重新命名或者刪除這個檔案

j (journaling)

設定了這個屬性時,檔案的資料首先儲存在紀錄檔中,然後再寫入檔案

S (synchronous)

設定了這個屬性時,變更或更改同步儲存到磁碟上

chattr屬性中可以使用的不同選項 :

  • -R 遞回地修改資料夾和子資料夾的屬性
  • -V chattr命令會輸出帶有版本資訊的冗餘資訊
  • -f 忽略大部分錯誤資訊

在chattr中用於設定或者取消屬性的 操作符

  • '+' 符號用來為檔案和資料夾設定屬性,
  • '-' 符號用來移除或者取消屬性
  • '=' 使它們成為檔案有的唯一屬性。

chattrlsattr 命令的基本語法 :

  1. # chattr <options> <attributes> <file or Directory >
  2. # lsattr <File or Directory>

例:1 使用‘i’屬性使檔案不可更改

  1. [root@linuxtechi ~]# chattr +i dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. ----i----------- dummy_data

現在試著刪除或者修改檔案

  1. [root@linuxtechi ~]# rm -f dummy_data
  2. rm: cannot remove 'dummy_data':Operationnot permitted
  3. [root@linuxtechi ~]# echo "test">> dummy_data
  4. -bash: dummy_data:Permission denied

 

例:2 移除不可更改屬性

  1. [root@linuxtechi ~]# chattr -i dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. ---------------- dummy_data

 

例:3 在檔案中只允許追加操作

  1. [root@linuxtechi ~]# chattr +a dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. -----a---------- dummy_data

現在試著把fstab檔案的內容追加到dummy_data檔案

  1. [root@linuxtechi ~]# cat /etc/fstab >> dummy_data
  2. [root@linuxtechi ~]#

例 :4 使用 -R 選項和 ‘+i’ 屬性使資料夾和它的子資料夾成為安全目錄

讓我們來新建一個sysadmin資料夾和它的子資料夾

  1. [root@linuxtechi ~]# mkdir sysadmin
  2. [root@linuxtechi ~]# mkdir sysadmin/admim_{1,2,3,4,5}
  3. [root@linuxtechi ~]# ls -l sysadmin/
  4. total 0
  5. drwxr-xr-x.2 root root 6Apr1909:50 admim_1
  6. drwxr-xr-x.2 root root 6Apr1909:50 admim_2
  7. drwxr-xr-x.2 root root 6Apr1909:50 admim_3
  8. drwxr-xr-x.2 root root 6Apr1909:50 admim_4
  9. drwxr-xr-x.2 root root 6Apr1909:50 admim_5

在sysadmin資料夾遞回設定不可更改屬性

  1. [root@linuxtechi ~]# chattr -R +i sysadmin
  2. [root@linuxtechi ~]# lsattr -R sysadmin/
  3. ----i----------- sysadmin/admim_1
  4. sysadmin/admim_1:
  5. ----i----------- sysadmin/admim_2
  6. sysadmin/admim_2:
  7. ----i----------- sysadmin/admim_3
  8. sysadmin/admim_3:
  9. ----i----------- sysadmin/admim_4
  10. sysadmin/admim_4:
  11. ----i----------- sysadmin/admim_5
  12. sysadmin/admim_5:
  13. [root@linuxtechi ~]#

現在試著用rm命令刪除資料夾

  1. [root@linuxtechi ~]# rm -rf sysadmin
  2. rm: cannot remove sysadmin/admim_1’:Permission denied
  3. rm: cannot remove sysadmin/admim_2’:Permission denied
  4. rm: cannot remove sysadmin/admim_3’:Permission denied
  5. rm: cannot remove sysadmin/admim_4’:Permission denied
  6. rm: cannot remove sysadmin/admim_5’:Permission denied
  7. [root@linuxtechi ~]#

使用以下命令遞回取消屬性

  1. [root@linuxtechi ~]# chattr -R -i sysadmin

via: http://www.linuxtechi.com/file-directory-attributes-in-linux-using-chattr-lsattr-command/

作者:Pradeep Kumar 譯者:ictlyh 校對:wxy

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

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-06/118571.htm


IT145.com E-mail:sddin#qq.com