為了允許新增資料,防止更改或者刪除等,檔案和資料夾可以設定了特定的控制屬性。例如,你可以在關鍵的系統檔案或者資料夾中啟用屬性,然後沒有任何使用者,包括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 <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
評論(1)