Linux檔案許可權總結
Linux檔案許可權基本概述:
1.基本許可權:可讀(r) 可寫(w) 可編輯(x)
2.特殊許可權:SUID SGID SBIT
3.隱藏許可權:通過[lsattr]檢視,[chattr]設定;由於檔案的隱藏許可權種類較多(13種),在此不作具體說明;可以通過[man chattr]來檢視各個隱藏許可權的具體意義(非常詳細);
需要強調的是,檔案的隱藏許可權只有在Ext2及其後續版本的檔案系統才生效(摘自鳥哥Linux教程基礎篇)
檔案許可權具體說明:
Linux的檔案許可權針對目錄及檔案,兩者之間有少許差異,具體見下表
可讀 | 可寫 | 可執行 |
SUID | SGID | SBIT | |
檔案 | 可以檢視目標檔案的內容; |
可以編輯目標檔案; 單獨使用無效,需要配合[可讀]許可權(因為需要進入檔案編輯器修改檔案內容); |
可以執行目標檔案; 對於shell指令碼,需要配合[可讀]許可權才可以正常執行; 對於二進位制檔案,僅需[可執行]許可權即可; |
僅針對二進位制可執行檔案; 擁有SUID許可權的使用者執行程式時,程式在執行過程中會獲得程式擁有者的許可權支援; |
僅針對二進位制可執行檔案; 擁有SGID許可權的使用者執行程式時,程式在執行過程中會獲得程式所屬群組的許可權支援; |
不針對檔案; |
目錄 |
可以檢視目錄下的檔案列表; 單獨使用只能檢視目錄下的檔名; 如要檢視詳細資訊,需要配合[可執行]許可權; |
可以在目標目錄下進行[建立/刪除/移動]等操作; 單獨使用無效,需要配合[可執行]許可權; |
可以將該目錄設定成工作目錄(cd {dir}); | 不針對目錄; |
使用者在該目錄下的有效群組會變成該目錄的所屬群組; 例:在該目錄下,建立的目錄或檔案的所屬群組為該目錄的所屬群組,而非檔案建立者的所屬群組; 另:建立的目錄也會具有SGID許可權; |
只有使用者可以在該目錄下[刪除/移動]自己建立的[目錄/檔案];(超級使用者不受限制) 單獨使用無效,需要配合[可寫/可執行]許可權; |
檔案許可權的表示法:
基本許可權:
1.數字表示法: 4 = 可讀 2 = 可寫 1 = 可執行
2.字元表示法: r-- = 可讀 -w- = 可寫 --x = 可執行
3.具體顯示:
3.1)基本許可權的"運算":
[
r-- = 4
-w- = 2
--x = 1
rw- = 4+2 = 6
-wx = 2+1 = 3
r-x = 4+1 = 5
rwx = 4+2+1 = 7
]
3.2)基本許可權的"分解":
[
rwxrwxrwx =
[rwx][rwx][rwx]
[擁有人][群組][其他人]
7777=
*777
特殊許可權擁有人群組其他人
]
------------------------------------------
特殊許可權:
1.數字表示法: 4 = SUID 2 = SGID 1 = SBIT
2.字元表示法: --s------ ------s--- --------t
3.具體顯示:
3.1)特殊許可權的"運算":
[
--s------ = 4
-----s--- = 2
--------t = 1
--s--s--- = 4+2 = 6
-----s--t = 2+1 = 3
--s-----t = 4+1 = 5
--s--s--t = 4+2+1 = 7
]
3.2)特殊許可權的"分解":
[
rwsrwsrwt =
rw[s]rw[s]rw[t]
[SUID][SGID][SBIT]
7777=
7***
特殊許可權基本許可權
]
預設檔案許可權(umask):
建立檔案和目錄時(touch或mkdir),系統都會為我們建立的東西預設一定的許可權;
例如:
預設情況下,以root建立檔案,獲得的許可權是 -rw-r--r--;
建立目錄,獲得的許可權是 drwxr-xr-x;
而控制這個預設許可權的就是umask;
以root執行[umask]會輸出:
[
0022
]
0022 = -----w--w-
預設許可權的計算:
檔案: (-rw-rw-rw-) - [umask] = (-rw-rw-rw-) - (-----w--w-) = -rw-r--r--
目錄: (drwxrwxrwx) - [umask] = (drwxrwxrwx) - (-----w--w-) = drwxr-xr-x
所以說,如果需要控制預設命令,只要設定umask即可;
設定umask:
[
umask {三位的檔案許可權數字}
]
檔案許可權的設定:
1.基本許可權:
1.1)設定許可權:
chmod u=rwx {檔名} //針對該檔案,為其擁有者設定可寫/可讀/可執行許可權
chmod g=r-x {檔名} //針對該檔案,為其所屬群組設定可寫/可執行許可權
chmod o=--- {檔名} //針對該檔案,去除其他使用者(不是擁有者,不屬於檔案所屬群組的使用者) 的所有基本許可權
1.2)增加許可權:
chmod u+x {檔名} //針對該檔案,為其擁有者增加可執行許可權
chmod g+r {檔名} //針對該檔案,為其所屬群組增加可讀許可權
chmod o+w {檔名} //針對該檔案,為其他使用者增加可寫許可權
1.3)減少許可權:
chmod u-x {檔名} //針對該檔案,為其擁有者減少可執行許可權
chmod g-x {檔名} //針對該檔案,為其所屬群組減少可執行許可權
chmod o-x {檔名} //針對該檔案,為其他使用者減少可執行許可權
2.特殊許可權:
2.1)SUID
chmod u+s {檔名}
chmod u-s {檔名}
2.2)SGID
chmod g+s {檔名}
chmod g-s {檔名}
2.3)SBIT
chmod o+t {檔名}
chmod o-t {檔名}