檔案系統屬性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":不允許的操作