有時候你發現用root權限都不能修改某個文件,大部分原因是曾經用chattr命令鎖定該文件了。chattr命令的作用很大,其中一些功能是由Linux內核版本來支持的,不過現在生產絕大部分跑的linux系統都是2.6以上內核了。通過chattr命令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。lsattr命令是顯示chattr命令設置的文件屬性。
一、設定文件系統屬性:chattr
chattr [+-=][選項] 文件或目錄名
+:增加權限
-:刪除權限
=:等於某權限
選項:
a,如果對文件設置a屬性,那么只能在文件中增加數據,也不能刪除和修改數據,如果對目錄設置a屬性,那么只允許在目錄中建立和修改文件,但不允許刪除文件,多用於服務器日志文件安全。
i,如果對文件設置i屬性,那么不允許對文件進行刪除,改名,也不能添加和修改數據,如果對目錄設置i屬性,那么只能修改目錄下文件的數據,但不允許建立和刪除文件。
注意:chattr 限制權限之后,root 用戶也不能例外。這個命令可以防止對文件進行誤操作。
二、查看文件的系統屬性:lsattr
lsattr 選項 文件名
選項:
-a 顯示所有文件和目錄
-d 若是目錄,僅列出本身的屬性,而不是子文件的
三、舉例說明
1、設置文件為只讀。
------------------------------------------
[root@CentOS7 home]# chattr +i ii
------------------------------------------
2、查看chattr命令賦予文件的屬性
------------------------------------------
[root@CentOS7 home]# lsattr
---------------- ./pi1
---------------- ./pi2
----i----------- ./ii #可以看到被設置成只讀會多個i的參數
---------------- ./dd
[root@CentOS7 home]#
------------------------------------------
3、取消文件的只讀
------------------------------------------
[root@CentOS7 home]# chattr -i ii
------------------------------------------
4、如果想遞歸地改變目錄及其內容的屬性,可以使用標記-R來完成,例如,如果您想讓d1目錄中的所有文件都是只讀的,那么請使用以下方式:
------------------------------------------
[root@CentOS7 ~]# chattr -R +i d1
------------------------------------------