文件類型
對於文件和目錄的訪問權力是根據讀訪問,寫訪問,和執行訪問來定義的。
我們來看一下 ls 命令的輸出結果
[root@iZ28dr6w0qvZ test]# ls -l 總用量 72 -rw-r--r-- 1 root root 62199 3月 2 11:21 lsbin.txt drwxr-xr-x 38 root root 4096 2月 29 16:11 Pics -rw-r--r-- 1 root root 54 2月 29 14:22 text.txt -rw-r--r-- 1 root root 0 3月 1 17:07 two words.txt
列表的前十個字符是文件的屬性。
這十個字符的第一個字符表明文件類型。
常用的文件類型(還有其它的,不常見類型):
| 屬性 | 文件類型 |
|---|---|
| - | 一個普通文件 |
| d | 一個目錄 |
| l | 一個符號鏈接。注意對於符號鏈接文件,剩余的文件屬性總是"rwxrwxrwx",而且都是 虛擬值。真正的文件屬性是指符號鏈接所指向的文件的屬性。 |
| c | 一個字符設備文件。這種文件類型是指按照字節流,來處理數據的設備。 比如說終端機,或者調制解調器 |
| b | 一個塊設備文件。這種文件類型是指按照數據塊,來處理數據的設備,例如一個硬盤,或者 CD-ROM 盤。 |
剩下的九個字符,叫做文件模式,代表着文件所有者,文件組所有者,和其他人的讀,寫,執行權限。
常用的linux文件權限
444 r--r--r-- 600 rw------- 644 rw-r--r-- 666 rw-rw-rw- 700 rwx------ 744 rwxr--r-- 755 rwxr-xr-x 777 rwxrwxrwx
- 讀取的權限等於4,用r表示;
- 寫入的權限等於2,用w表示;
- 執行的權限等於1,用x表示;
通過4、2、1的組合,得到以下幾種權限:
0(沒有權限);4(讀取權限);5(4+1 | 讀取+執行);6(4+2 | 讀取+寫入);7(4+2+1 | 讀取+寫入+執行)
安全權限的臨界點
1.目錄755,文件644是相對安全的權限;
2.用戶為root以及用戶組為root
chmod 更改權限
通過八進制表示法,我們使用八進制數字來設置所期望的權限模式。因為每個八進制數字代表了 3個二進制數字,這種對應關系,正好映射到用來存儲文件模式所使用的方案上。下表展示了 我們所要表達的意思:
| Octal | Binary | File Mode |
|---|---|---|
| 0 | 000 | --- |
| 1 | 001 | --x |
| 2 | 010 | -w- |
| 3 | 011 | -wx |
| 4 | 100 | r-- |
| 5 | 101 | r-x |
| 6 | 110 | rw- |
| 7 | 111 | rwx |
通過傳遞參數 “600”,我們能夠設置文件所有者的權限為讀寫權限,而刪除用戶組和其他人的所有 權限。雖然八進制到二進制的映射看起來不方便,但通常只會用到一些常見的映射關系: 7 (rwx),6 (rw-),5 (r-x),4 (r--),和 0 (---)。
chmod 命令支持一種符號表示法,來指定文件模式。符號表示法分為三部分:更改會影響誰, 要執行哪個操作,要設置哪種權限。通過字符 “u”,“g”,“o”,和 “a” 的組合來指定 要影響的對象,
chmod 命令符號表示法
| u+x | 為文件所有者添加可執行權限。 |
| u-x | 刪除文件所有者的可執行權限。 |
| +x | 為文件所有者,用戶組,和其他所有人添加可執行權限。 等價於 a+x。 |
| o-rw | 除了文件所有者和用戶組,刪除其他人的讀權限和寫權限。 |
| go=rw | 給群組的主人和任意文件擁有者的人讀寫權限。如果群組的主人或全局之前已經有了執行的權限,他們將被移除。 |
| u+x,go=rw | 給文件擁有者執行權限並給組和其他人讀和執行的權限。多種設定可以用逗號分開。 |
符號表示法的優點是, 允許你設置文件模式的單個組成部分的屬性,而沒有影響其他的部分。
chown - 更改文件所有者和用戶組
| 參數 | 結果 |
|---|---|
| cqh | 把文件所有者從當前屬主更改為用戶 cqh。 |
| cqh:users | 把文件所有者改為用戶 cqh,文件用戶組改為用戶組 users。 |
| :cqh | 把文件用戶組改為組cqh,文件所有者不變。 |
| cqh: | 文件所有者改為用戶 cqh,文件用戶組改為,用戶 cqh 登錄系統時,所屬的用戶組。 |
chattr和lsattr -文件或者目錄的隱藏屬性
chattr可以創建root都不能修改的文件,但是它並不適合所有的目錄,不能保護/、/dev、/tmp、/var目錄
lsattr可以顯示chattr命令設置的文件屬性
與chmod這個命令相比,chmod只是改變文件的讀寫、執行權限,更底層的屬性控制是由chattr來改變的。
chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最關鍵的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]這些字符組合的,這部分是用來控制文件的
屬性。
+ :在原有參數設定基礎上,追加參數。 - :在原有參數設定基礎上,移除參數。 = :更新為指定參數設定。 A:文件或目錄的 atime (access time)不可被修改(modified), 可以有效預防例如手提電腦磁盤I/O錯誤的發生。 S:硬盤I/O同步選項,功能類似sync。 a:即append,設定該參數后,只能向文件中添加數據,而不能刪除,多用於服務器日志文件安全,只有root才能設定這個屬性。 c:即compresse,設定文件是否經壓縮后再存儲。讀取時需要經過自動解壓操作。 d:即no dump,設定文件不能成為dump程序的備份目標。 i:設定文件不能被刪除、改名、設定鏈接關系,同時不能寫入或新增內容。i參數對於文件 系統的安全設置有很大幫助。 j:即journal,設定此參數使得當通過mount參數:data=ordered 或者 data=writeback 掛 載的文件系統,文件在寫入時會先被記錄(在journal中)。如果filesystem被設定參數為 data=journal,則該參數自動失效。 s:保密性地刪除文件或目錄,即硬盤空間被全部收回。 u:與s相反,當設定為u時,數據內容其實還存在磁盤中,可以用於undeletion。 各參數選項中常用到的是a和i。a選項強制只可添加不可刪除,多用於日志系統的安全設定。而i是更為嚴格的安全設定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標識)的進程能夠施加該選項。
示例一:創建不可刪除的文件
# 設置 root@ubuntu:/tmp/test# chattr +i chenqionghe.txt root@ubuntu:/tmp/test# rm -f chenqionghe.txt rm: cannot remove 'chenqionghe.txt': Operation not permitted # 解除 root@ubuntu:/tmp/test# lsattr chenqionghe.txt ----i---------e--- chenqionghe.txt
# 使用lsattr查看設置的參數 root@ubuntu:/tmp/test# chattr -i chenqionghe.txt root@ubuntu:/tmp/test# rm -f chenqionghe.txt
示例二:創建只可能追加數據不能刪除的文件(不可使用vim,不可echo >,只能使用echo >>追加)
root@ubuntu:~# chattr +a chenqionghe.txt root@ubuntu:~# rm chenqionghe.txt rm: cannot remove 'chenqionghe.txt': Operation not permitted root@ubuntu:~# echo 'aa' > chenqionghe.txt -su: chenqionghe.txt: Operation not permitted root@ubuntu:~# echo 'aa' >> chenqionghe.txt
