為了允許添加數據,防止更改或者刪除等,文件和文件夾可以設定了特定的控制屬性。例如,你可以在關鍵的系統文件或者文件夾中啟用屬性,然後沒有任何 用戶,包括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屬性中可以使用的不同選項 :
在chattr中用於設置或者取消屬性的 操作符
chattr 和 lsattr 命令的基本語法 :
# chattr <options> <attributes> <file or Directory > # lsattr <File or Directory>
[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
[root@linuxtechi ~]# chattr -i dummy_data [root@linuxtechi ~]# lsattr dummy_data ---------------- dummy_data
[root@linuxtechi ~]# chattr +a dummy_data [root@linuxtechi ~]# lsattr dummy_data -----a---------- dummy_data
現在試著把fstab文件的內容追加到dummy_data文件
[root@linuxtechi ~]# cat /etc/fstab >> dummy_data
讓我們來新建一個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:
現在試著用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 ~]# chattr -R -i sysadmin譯文:https://linux.cn/article-5590-1.html