在Linux中用chattr和lsattr命令管理文件和目錄屬性
有兩個命令 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
via: http://www.linuxtechi.com/file-directory-attributes-in-linux-using-chattr-lsattr-command/
作者:Pradeep Kumar 譯者:ictlyh 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive