Linux文件權限與屬性詳解 之 一般權限
Linux文件權限與屬性詳解 之 ACL
Linux文件權限與屬性詳解 之 SUID、SGID & SBIT
Linux文件權限與屬性詳解 之 chattr & lsattr
Linux文件權限與屬性詳解 之 su & sudo
前言
在Linux中,有一些系統文件,對系統的運行有着至關重要的作用,如/etc/fstab等,一般不允許修改,這個時候,我們可以賦予文件/目錄r--------的權限;然而,還有一個更為簡單有效的命令chattr可以實現該功能!
特殊權限
特殊權限的要求:
- 所支持的文件系統包括:
ext2、ext3、ext4和xfs- 一般要求內核版本不低於2.2(查看版本的命令如下):
uname -a
lsb_release -a
- 不能保護
//tmp/dev/var目錄- chattr 只能由root用戶使用
chattr、lsattr
類似於chmod, chmod只是改變文件的讀寫、執行權限,更底層的屬性控制是由chattr來改變的.
1). chattr 語法:
chattr [ -RVf ] [ -v version ] [ mode ] files...
最關鍵的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]這些字符組合的,這部分是用來控制文件的屬性。
- + : 在原有參數設定基礎上,追加參數
- - :在原有參數設定基礎上,移除參數
- = :更新為指定參數設定
- A :文件或目錄的 atime (access time)不可被修改(modified),可以有效預防例如手提電腦磁盤I/O錯誤的發生
- a :即append,設定該參數后,只能向文件中添加數據,而不能刪除;
- c :即compresse,設定文件是否經壓縮后再存儲。讀取時需要經過自動解壓操作。
- i :設定文件不能被刪除、改名、設定鏈接關系,同時不能寫入或新增內容;對目錄
- s :保密性地刪除文件或目錄,即硬盤空間被全部收回
- u :與s相反,當設定為u時,數據內容其實還存在磁盤中,可以用於undeletion.
2). lsattr 語法:
lsattr [ -RVadv ] [ files... ]
參數如下:
- a : 列出目錄下的所有文件,包括隱藏文件
- d : 查看本目錄自身的權限
3). 例程:
首先,我使用root身份新建一個文件:
[root@niesh test]# ll
總用量 0
-rw-rw-r--. 1 root niesh 0 7月 31 20:27 abc
然后,我給該文件增加 i 權限:
[root@niesh test]# chattr +i abc
[root@niesh test]# lsattr abc
----i----------- abc
然后,我嘗試增加內容、刪除文件和修改文件名:
[root@niesh test]# echo 1234 >> abc
bash: abc: 權限不夠
[root@niesh test]# rm -f abc
rm: 無法刪除"abc": 不允許的操作
[root@niesh test]# mv abc bcd
mv: 無法將"abc" 移動至"bcd": 不允許的操作
以上均失敗,由此驗證!
修改以上文件的權限為 a :
[root@niesh test]# chattr +a abc
[root@niesh test]# lsattr abc
-----a---------- abc
對 abc文件進行操作:
[root@niesh test]# echo 1111 >> abc
[root@niesh test]# cat abc
1111
[root@niesh test]# rm -f abc
rm: 無法刪除"abc": 不允許的操作
[root@niesh test]# mv abc bcd
mv: 無法將"abc" 移動至"bcd": 不允許的操作
由以上可以看出,只能增加文件內容,不能進行其他的操作!
