2021-05-12 14:32:11
在Linux中用chattr和lsattr命令管理檔案和目錄屬性
為了允許新增資料,防止更改或者刪除等,檔案和資料夾可以設定了特定的控制屬性。例如,你可以在關鍵的系統檔案或者資料夾中啟用屬性,然後沒有任何使用者,包括root,可以刪除或者修改它,比如不允許使用像dump這樣的命令等備份工具去備份一個特定的檔案或者資料夾,等等。這些屬性只可以在ext2,ext3或者ext4檔案系統中的檔案和資料夾上設定。
有兩個命令 lsattr 和 chattr 用來管理屬性。下面是常用屬性的列表。
屬性 |
描述 |
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中用於設定或者取消屬性的 操作符
- ‘+’ 符號用來為檔案和資料夾設定屬性,
- ‘-’ 符號用來移除或者取消屬性
- ‘=’ 使它們成為檔案有的唯一屬性。
chattr 和 lsattr 命令的基本語法 :
# chattr <options> <attributes> <file or Directory > # lsattr <File or Directory>
例:1 使用‘i’屬性使檔案不可更改
[root@linuxtechi ~]# chattr +i dummy_data [root@linuxtechi ~]# lsattr dummy_data ----i----------- dummy_data
現在試著刪除或者修改檔案
[root@linuxtechi ~]# rm -f dummy_data rm: cannot remove 'dummy_data': Operation not permitted [root@linuxtechi ~]# echo "test" >> dummy_data -bash: dummy_data: Permission denied
例:2 移除不可更改屬性
[root@linuxtechi ~]# chattr -i dummy_data [root@linuxtechi ~]# lsattr dummy_data ---------------- dummy_data
例:3 在檔案中只允許追加操作
[root@linuxtechi ~]# chattr +a dummy_data [root@linuxtechi ~]# lsattr dummy_data -----a---------- dummy_data
現在試著把fstab檔案的內容追加到dummy_data檔案
[root@linuxtechi ~]# cat /etc/fstab >> dummy_data [root@linuxtechi ~]#
例 :4 使用 -R 選項和 ‘+i’ 屬性使資料夾和它的子資料夾成為安全目錄
讓我們來新建一個sysadmin資料夾和它的子資料夾
[root@linuxtechi ~]# mkdir sysadmin [root@linuxtechi ~]# mkdir sysadmin/admim_{1,2,3,4,5} [root@linuxtechi ~]# ls -l sysadmin/ total 0 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_1 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_2 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_3 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_4 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_5
在sysadmin資料夾遞回設定不可更改屬性
[root@linuxtechi ~]# chattr -R +i sysadmin [root@linuxtechi ~]# lsattr -R sysadmin/ ----i----------- sysadmin/admim_1 sysadmin/admim_1: ----i----------- sysadmin/admim_2 sysadmin/admim_2: ----i----------- sysadmin/admim_3 sysadmin/admim_3: ----i----------- sysadmin/admim_4 sysadmin/admim_4: ----i----------- sysadmin/admim_5 sysadmin/admim_5: [root@linuxtechi ~]#
現在試著用rm命令刪除資料夾
[root@linuxtechi ~]# rm -rf sysadmin rm: cannot remove ‘sysadmin/admim_1’: Permission denied rm: cannot remove ‘sysadmin/admim_2’: Permission denied rm: cannot remove ‘sysadmin/admim_3’: Permission denied rm: cannot remove ‘sysadmin/admim_4’: Permission denied rm: cannot remove ‘sysadmin/admim_5’: Permission denied [root@linuxtechi ~]#
使用以下命令遞回取消屬性
[root@linuxtechi ~]# chattr -R -i sysadmin
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-05/117421.htm
相關文章