文件系統屬性chattr
權限,也叫不可改變位權限,該權限沒有風險,但是他能限制root
用戶。
1、命令格式
[root@localhost ~]# chattr [+-=] [選項] 文件或目錄名
選項
+
:增加權限。-
:刪除權限。=
:等於某權限。(不常用)i
:如果對文件設置i
屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據(也就是文件不能做任何修改,相當於把文件加了一把鎖,包括root
在內都不行。);如果對目錄設置i
屬性,那么只能修改目錄下文件的數據,但不允許建立和刪除文件。a
:如果對文件設置a
屬性,那么只能在文件中增加數據,但是不能刪除也不能修改數據;如果對目錄設置a
屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除。e
:Linux中絕大多數的文件都默認擁有e
屬性。表示該文件是使用ext
文件系統進行字儲的,而且不能使用chattr -e
命令取消e
屬性。
提示:常用的就是
i
和a
屬性。
2、查看文件系統屬性chattr權限
# 給abc文件加入i屬性
[root@localhost ~]# chattr +i abc
# ll命令是查看不到任何結果的,這點比較不好。
[root@localhost ~]# ll abc
rw-r--r-.1 root root 0 2月 19 13:08 abc
如果需要查看chattr
權限,需要用如下命令:
[rootelocalhost ~]# chattr [選項] 文件名
選項:
-a
:顯示所有文件和目錄。-d
:若目標是目錄,僅列出目錄本身的屬性,而不是子文件的。
[root@localhost ~]# chattr abc
----i--------e- abc
注意:帶~
表示臨時文件,和Windows系統的word的臨時文件差不多一個意思。直接rm
刪除就可以了。
如下圖所示:
3、示例
例1:給文件賦予chattr
權限的i
屬性。
# 建立測試文件,給文件賦予i屬性
[root@localhost ~]# touch ftest
[root@localhost ~]# chattr +i ftest
# 賦予i屬性后,root也不能刪除
[root@localhost ~]# rm -rf ftest
rm:無法刪除"ftest":不允許的操作
# 也不能修改文件的數據
[root@localhost ~]# echo 111 >> ftest
-bash:ftest:權限不夠
例2:給目錄賦予chattr
權限的i
屬性。
# 建立測試目錄給
[root@localhost ~]# mkdir dtest
# 再建立一個測試文件abc
[root@localhost dtest]# touch dtest/abc
# 給目錄賦予i屬性
[root@localhost ~]# chattr +i dtest/
# dtest目錄不能新建文件
[root@localhost ~]# cd dtest/
[root@localhost dtest] # touch bcd
touch:無法創建"bcd":權限不夠
# 但是可以修改文件內容
[root@localhost dtest]# echo 1111 >> abc
[root@localhost dtest]# cat abc
1111
# 不能刪除目錄內文件
[root@localhost dtest]# rm -rf abc
rm:無法刪除"abc":權限不夠
例3:測試chattr
權限的a
屬性。
# 給abc文件賦予a屬性
[root@localhost ~]# chattr +a abc
# 向abc文件中追加內容
# 注意一定不能用vim編輯器,用vim編輯器編輯內容不能保存。
[root@localhost ~]# echo aaaaaaaaaaaaaaaaaaaaaa >> abc
[root@localhost ~]# cat abc
aaaaaaaaaaaaaaaaaaaaaa
# 可以復制文件和新建文件到指定目錄
[root@localhost ~]# cp /var/log/messages /back/log/
# 但是不允許刪除文件
[root@localhost ~]# rm -rf abc
rm:無法刪除"/back/1og/messages":不允許的操作