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':Operationnot 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 6Apr1909:50 admim_1
drwxr-xr-x.2 root root 6Apr1909:50 admim_2
drwxr-xr-x.2 root root 6Apr1909:50 admim_3
drwxr-xr-x.2 root root 6Apr1909:50 admim_4
drwxr-xr-x.2 root root 6Apr1909: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
via: http://www.linuxtechi.com/file-directory-attributes-in-linux-using-chattr-lsattr-command/
作者:Pradeep Kumar 譯者:ictlyh 校對:wxy
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-06/118571.htm
相關文章