天天看點

linux實用檔案權限總結

在 Unix 安全模型中,一個使用者可能擁有檔案和目錄。當一個使用者擁有一個檔案或目錄時, 使用者對這個檔案或目錄的通路權限擁有控制權。

使用者又屬于一個由一個或多個 使用者組成的使用者組,使用者組成員由檔案和目錄的所有者授予對檔案和目錄的通路權限。除了對一個使用者組授予權限之外,檔案所有者可能會給每個人一些權限,在 Unix 術語中,每個人 是指整個世界。

檔案類型

對于檔案和目錄的通路權力是根據讀通路,寫通路,和執行通路來定義的。如果我們看一下 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
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 - 更改檔案所有者和使用者組

通過傳遞參數 “600”,我們能夠設定檔案所有者的權限為讀寫權限,而删除使用者組和其他人的所有 權限。

雖然八進制到二進制的映射看起來不友善,但通常隻會用到一些常見的映射關系: 7 (rwx),6 (rw-),5 (r-x),4 (r--),和 0 (---)。

參數 結果
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
      

  

繼續閱讀