1、 管理 Linux 系統中的文件和目錄,除了可以設定普通權限和特殊權限外,還可以利用文件和目錄具有的一些隱藏屬性。
- chattr 命令,專門用來修改文件或目錄的隱藏屬性,只有 root 用戶可以使用。該命令的基本格式爲:
[root@localhost ~]# chattr [+ - =] [屬性] 文件或目錄名
+表示給文件或目錄添加屬性,- 表示移除文件或目錄擁有的某些屬性,= 表示給文件或目錄設定一些屬性。
如下表所示:chattr常用的屬性選項及其功能。
- 查看文件及目錄的隱藏屬性
lsattr filename
[root@localhost ~]# lschattr -d /etc/
---------------- /etc/
// 查看該文件夾etc的特殊權限
[root@localhost ~]# lschattr /test/1.txt
-----a---------- /test/1.txt
// 查看文件1.txt的特殊權限
2、給文件賦予 i 屬性。
[root@localhost ~]# touch ftest
#建立測試文件
[root@localhost ~]# chattr +i ftest
[root@localhost ~]# rm -rf ftest
rm:cannot remove ‘ftest’:Operation not permitted
// 無法刪除"ftesr",操作不允許
// 被賦予i屬性後,root不能刪除
[root@localhost ~]# echo 111>>ftest
bash:ftest:Permission denied
// 權限不夠,不能修改文件中的數據
可以看到,設置有 i 屬性的文件,即便是 root 用戶,也無法刪除和修改數據。
- 爲目錄賦予 i 屬性。
[root@localhost ~]# mkdir dtest
#建立測試目錄
[root@localhost dtest]# touch dtest/abc
// 再建立一個測試文件abc
[root@localhost ~]# chattr +i dtest
// 給目錄賦予i屬性
[root@localhost ~]# cd dtest
[root@localhost dtest]# touch bed
touch: cannot touch ‘bed’:Permission denied
// 無法創建"bcd",權限不夠,dtest目錄不能新建文件
[root@localhost dtest]# echo 11>>abc
[root@localhost dtest]# cat abc
11
// 可以修改文件內容
[root@localhost dtest]# rm -rf abc
rm: cannot remove ‘abc’: Permission denied
// 無法刪除"abc",權限不夠
一旦給目錄設置 i 屬性,即使是 root 用戶,也無法在目錄內部新建或刪除文件,但可以修改文件內容。
給設置有 i 屬性的文件刪除此屬性也很簡單,只需將 chattr 命令中 + 改爲 - 即可。
3、 a 屬性的作用。
假設有這樣一種應用,我們每天自動實現把服務器的日誌備份到指定目錄,備份目錄可設置 a 屬性,變爲只可創建文件而不可刪除。命令如下:
[root@localhost ~]# mkdir -p /back/log
#建立備份目錄
[root@localhost ~]# chattr +a /back/log
#賦予a屬性
[root@localhost ~]# cp /var/log/messages /back/log
#可以複製文件和新建文件到指定目錄中
[root@localhost ~]# rm -rf /back/log/messages
rm: cannot remove ‘/back/log/messages’: Permission denied
// 無法刪除 /back/log/messages,操作不允許
注意,通常情況下,不要使用 chattr 命令修改 /、/dev/、/tmp/、/var/ 等目錄的隱藏屬性,很容易導致系統無法啓動。另外,chatrr 命令常與 lsattr 命令合用,前者修改文件或目錄的隱藏屬性,後者用於查看是否修改成功。有關 lsattr 命令,放到下節講解。
--------------------------------------------武漢艾迪時代網絡技術有限公司-----------------------------------------------------