『學了就忘』Linux許可權管理 — 56、不可改變位許可權(chattr)

繁華似錦Fighting發表於2021-11-30

檔案系統屬性chattr許可權,也叫不可改變位許可權,該許可權沒有風險,但是他能限制root使用者。

1、命令格式

[root@localhost ~]# chattr [+-=] [選項] 檔案或目錄名

選項

  • +:增加許可權。
  • -:刪除許可權。
  • =:等於某許可權。(不常用)
  • i:如果對檔案設定i屬性,那麼不允許對檔案進行刪除、改名,也不能新增和修改資料(也就是檔案不能做任何修改,相當於把檔案加了一把鎖,包括root在內都不行。);如果對目錄設定i屬性,那麼只能修改目錄下檔案的資料,但不允許建立和刪除檔案。
  • a:如果對檔案設定a屬性,那麼只能在檔案中增加資料,但是不能刪除也不能修改資料;如果對目錄設定a屬性,那麼只允許在目錄中建立和修改檔案,但是不允許刪除。
  • e:Linux中絕大多數的檔案都預設擁有e屬性。表示該檔案是使用ext檔案系統進行字儲的,而且不能使用chattr -e命令取消e屬性。

提示:常用的就是ia屬性。

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刪除就可以了。

如下圖所示:

image

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":不允許的操作

相關文章