細化權限管理
環境說明:
博客使用的linux版本:CentOS Linux release 7.7.1908 (Core)
終端語言調整:調整成漢語是爲了方便學習,點擊這裏查看
一、文件權限管理ACL簡介
1. 文件權限介紹
- 第一檔位:
- 標識文件的屬性(讀寫執行,分別對應r、w、x、)
- 這裏一共十個格子(10個比特位),第一個字母標識文件的類型
字母 | 表示文件類型 |
---|---|
- | 普通文件 |
d | 目錄,dirtectory的縮寫 |
l | 鏈接符號 |
b | 塊設備文件 |
c | 字符設備文件 |
- 緊接着是三組字符,分別代表文件讀寫執行權限,第一組文件所屬用戶的權限買第二組文件所屬組對文件的權限,其他用戶對文件的權限
- 第二檔位:標識文件的個數,如果是目錄則是該目錄中文件的個數
- 第三檔位:文件的所屬用戶
- 第四檔位:文件或者目錄的所屬組,每一個用戶都可以擁有一個或者多個組
- 第五檔位:表示文件或者目錄的大小,文件的大小使用的單位是byte,一般空目錄是1024byte
- 第六個欄位:表示最後一次修改時間。以“月,日,時間”的格式表示,如Feb 20 10:57表示2月20日早上10:57分。
- 第七檔位:表示文件或者目錄名,加-a參數可以查看隱藏文件名
… 表示上級目錄
. 表示當前目錄
2. linux文件權限計算辦法:
- 從左至右,1-3位數字代表文件所有者的權限,4-6位數字代表同組用戶的權限,7-9數字代表其他用戶的權限。
- 權限是由數字來表示的,讀取的權限等於4,用r表示;寫入的權限等於2,用w表示;執行的權限等於1,用x表示;
- 通過4、2、1的組合,得到以下幾種權限:0(沒有權限);4(讀取權限);5(4+1 | 讀取+執行);6(4+2 | 讀取+寫入);7(4+2+1 | 讀取+寫入+執行)
- 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 - 創建文件默認權限 666 創建目錄權限默認777
- 權限掩碼即代表拿走的權限
3.ACL介紹
ACL可以對某個文件設置該文件具體的某些用戶的權限,意思就是通過ACL可以對一個文件權限做擴展,可以不同的用戶對某個文件有不同的權限。
二、chmod命令 – 改變文件或目錄權限
- chmod簡介:
- 語法格式: chmod [參數] [文件]、
- 常用參數:
參數 | 含義 |
---|---|
-c | 若該文件權限確實已經更改,才顯示其更改動作 |
-f | 若該文件權限無法被更改也不顯示錯誤訊息 |
-v | 顯示權限變更的詳細資料 |
-R | 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更) |
- 應用實例
- 遞歸修改目錄下面的所有文件和子目錄設置爲任何人可寫
chmod -R a+w *
#這裏同樣可以使用數字進行操作
三、setfacl命令-設置文件ACL規則
- setfacl命令簡介:
改命令可以更精確的控制權限的分配,比如讓某一個用戶對某一個文件具有某種權限。 - 語法格式:setfacl [參數] [文件]
- 常用參數:
參數 | 含義 |
---|---|
-m | –modify-acl 更改文件的訪問控制列表 |
-M | –modify-file=file 從文件讀取訪問控制列表條目更改 |
-x | –remove=acl 根據文件中訪問控制列表移除條目 |
-X | –remove-file=file 從文件讀取訪問控制列表條目並刪除 |
-b | –remove-all 刪除所有擴展訪問控制列表條目 |
-k | –remove-default 移除默認訪問控制列表 |
-d | –default 應用到默認訪問控制列表的操作 |
-P | –physical 依照自然邏輯,不跟隨符號鏈接 |
-v | –version 顯示版本並退出 |
-R | –recursive 遞歸操作子目錄 |
- 應用實例
-修改文件test權限,test組用戶可以查看
groupadd test #創建test組
setfacl -Rm g:test:6 test #添加test組權限爲讀寫
setfacl -Rm u:test:4 test #添加或者修改test用戶權限爲讀
setfacl -x u:test test #刪除test用戶的權限
四、getfacl命令 – 顯示文件或目錄的ACL
- getfacl簡介:
getfacl命令的作用是查看文件的ACL信息。對於要查看的每一個文件和目錄,getfacl命令可以顯示出文件的名稱,用戶所有者、組羣所有者和訪問控制列表(ACL)。
2.語法簡介: getfacl [參數] [目錄或文件] - 常用參數:
參數 | 含義 |
---|---|
-a | 顯示文件的ACL |
-d | 顯示默認的ACL |
-c | 不顯示註釋標題 |
-e | 顯示所有的有效權限 |
-E | 顯示沒有的有效權限 |
-s | 跳過文件,只具有基本條目 |
-R | 遞歸到子目錄 |
-t | 使用表格輸出格式 |
-n | 顯示用戶的UID和組羣的GID |
- 應用實例:
- 查看指定文件的ACL (顯示註釋信息、不顯示註釋信息)
getfacl test
getfacl -c test
- 使用表格形式查看指定文件的ACL
getfacl -t test
五、umask命令-查看修改文件權限掩碼
- umask 命令:umask命令可用來設定權限掩碼。權限掩碼是由3個八進制的數字所組成,將現有的存取權限減掉權限掩碼後,即可產生建立文件時預設的權限。
- 語法格式:umask [參數] [權限掩碼]
- 常用參數:
參數 | 含義 |
---|---|
-S | 以文字的方式來表示權限掩碼 |
-p | 輸出的權限掩碼可直接作爲指令來執行 |
4.應用實例:
- 使用指令”umask”查看當前權限掩碼:
umask
- 使組用戶的寫權限,其他用戶的讀、寫和執行權限都被取消:
umask u=,g=w,o=rwx
#或者
umask 750
六、特殊權限
- 特殊權限:u+s
-
suid: 讓進程不再屬於它的發起者,而是屬於程序文件本身。(suid只對二進制文件有效;調用者對該文件有執行權;在執行過程中,調用者會暫時獲得該文件的所有者權限;該權限只在程序執行的過程中有效)
查找passwd的程序文件位置:which passwd
chmod u+s /usr/bin/passwd
查看進程信息:ps -ef
運行程序時,進程的屬主是程序文件自身的權限,而不是進程發起者 u+s 4UID強制位
chmod u[+|-]s FILENAME 如果文件原來有執行權限就顯示爲s,反之顯示S -
**sgid:g+s,**對於普通文件,以組的權限執行修改/usr/bin/touch的g+s,touch文件後文件所屬組爲root(作用於普通文件時,和suid類似);對於目錄文件,目錄的屬組是誰,在目錄下創建的文件的屬組是目錄的屬組。
-
**sticky,o+t:**不能夠刪除其他用戶在同目錄裏創建的文件,也無法修改其他用戶創建的文件的內容,可刪除修改自己創建的文件
-