Linux許可權管理 chattr命令、lsattr命令、sudo命令
chattr命令
chattr命令用來修改檔案系統的許可權屬性
chatrr 命令格式如下:選項:
選項 | 選項說明 |
+ |
増加許可權 |
- |
刪除許可權 |
= |
等於某許可權 |
i |
如果對檔案設定屬性,那麼不允許對檔案進行刪除、改名,也不能新增和修改資料; 如果對目錄設定 i 屬性,那麼只能修改目錄下檔案中的資料,但不允許建立和刪除檔案 |
a |
如果對檔案設定 a 屬性,那麼只能在檔案中増加資料,但是不能刪除和修改資料; 如果對目錄設定 a 屬性,那麼只允許在目錄中建立和修改檔案,但是不允許刪除檔案 |
Linux 中的絕大多數檔案都預設擁有 e 屬性,表示該檔案是使用 ext 檔案系統進行儲存的, 而且不能使用"chattr -e"命令取消 e 屬性 |
還是舉幾個例子吧。
#給檔案賦予屬性
[[email protected]
#建立測試檔案
[[email protected] ~]# chattr +i ftest
[[email protected] ~]# rm -rf flest
rm:無法刪除"ftesr":不允許的操作
#被賦予i屬性後,root不能刪除
[[email protected] ~]# echo 111>>ftest -bash:ftest:許可權不夠
#也不能修改檔案中的資料
#給目錄賦予i屬性
[[email protected] ~]# mkdir dtest
#建立測試目錄
[[email protected] dtest]# touch dtest/abc
#再建立一個測試檔案abc
[
#給目錄賦予i屬性
[[email protected] ~]# cd dtest/
[[email protected] dtest]# touch bed
touch:無法建立"bcd":許可權不夠
#dtest目錄不能新建檔案
[[email protected] dtest]# echo 11>>abc
[[email protected] dtest]# cat abc
11
#但是可以修改檔案內容
[[email protected] dtest]# rm -rf abc
rm:無法刪除"abc":許可權不夠
#不能刪除 此時,flest 檔案和 dtest 目錄都變得非常強悍,即便你是 root 使用者,也無法刪除和修改它。若要更改或刪除檔案,也必須先去掉 i 屬性才可以。命令如下:
[[email protected] ~]# chattr -i ftest
[[email protected] ~]# chattr -i dtest/
在舉個例子,演示一下 a 屬性。假設有這樣一種應用,我們每天自動實現把伺服器的日誌備份到指定目錄,備份目錄可設定 a 屬性,變為只可建立檔案而不可刪除。命令如下:
[[email protected] ~]# mkdir -p /back/log
#建立備份目錄
[[email protected] ~]# chattr +a /back/log/
#賦予a屬性
[[email protected] ~]# cp /var/log/messages /back/log/
#可以複製檔案和新建檔案到指定目錄中
[[email protected] ~]# rm -rf /back/log/messages
rm:無法刪除"/back/log/messages":不允許的操作
#但是不允許刪除
[[email protected] ~]# lsattr 選項 檔名
選項:- -a:顯示所有檔案和目錄;
- -d:如果目標是目錄,則僅列出目錄本身的屬性,而不會列出檔案的屬性;
例如:
[[email protected] ~]#lsattr -d /back/log/
-----a------e- /back/log/
#檢視/back/log/目錄,其擁有a和e屬性