三分鐘速學文件權限管理

在這裏插入圖片描述

環境說明:
博客使用的linux版本:CentOS Linux release 7.7.1908 (Core)
終端語言調整:調整成漢語是爲了方便學習,點擊這裏查看

一、文件權限管理ACL簡介

1. 文件權限介紹

  1. 第一檔位
  • 標識文件的屬性(讀寫執行,分別對應r、w、x、)
  • 這裏一共十個格子(10個比特位),第一個字母標識文件的類型
字母 表示文件類型
- 普通文件
d 目錄,dirtectory的縮寫
l 鏈接符號
b 塊設備文件
c 字符設備文件
  • 緊接着是三組字符,分別代表文件讀寫執行權限,第一組文件所屬用戶的權限買第二組文件所屬組對文件的權限,其他用戶對文件的權限
  1. 第二檔位:標識文件的個數,如果是目錄則是該目錄中文件的個數
  2. 第三檔位:文件的所屬用戶
  3. 第四檔位:文件或者目錄的所屬組,每一個用戶都可以擁有一個或者多個組
  4. 第五檔位:表示文件或者目錄的大小,文件的大小使用的單位是byte,一般空目錄是1024byte
  5. 第六個欄位:表示最後一次修改時間。以“月,日,時間”的格式表示,如Feb 20 10:57表示2月20日早上10:57分。
  6. 第七檔位:表示文件或者目錄名,加-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命令 – 改變文件或目錄權限

  1. chmod簡介:
  2. 語法格式: chmod [參數] [文件]、
  3. 常用參數:
參數 含義
-c 若該文件權限確實已經更改,才顯示其更改動作
-f 若該文件權限無法被更改也不顯示錯誤訊息
-v 顯示權限變更的詳細資料
-R 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
  1. 應用實例
  • 遞歸修改目錄下面的所有文件和子目錄設置爲任何人可寫
chmod -R a+w *
#這裏同樣可以使用數字進行操作

在這裏插入圖片描述

三、setfacl命令-設置文件ACL規則

  1. setfacl命令簡介:
    改命令可以更精確的控制權限的分配,比如讓某一個用戶對某一個文件具有某種權限。
  2. 語法格式:setfacl [參數] [文件]
  3. 常用參數:
參數 含義
-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 遞歸操作子目錄
  1. 應用實例
    -修改文件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

  1. getfacl簡介:
    getfacl命令的作用是查看文件的ACL信息。對於要查看的每一個文件和目錄,getfacl命令可以顯示出文件的名稱,用戶所有者、組羣所有者和訪問控制列表(ACL)。
    2.語法簡介: getfacl [參數] [目錄或文件]
  2. 常用參數:
參數 含義
-a 顯示文件的ACL
-d 顯示默認的ACL
-c 不顯示註釋標題
-e 顯示所有的有效權限
-E 顯示沒有的有效權限
-s 跳過文件,只具有基本條目
-R 遞歸到子目錄
-t 使用表格輸出格式
-n 顯示用戶的UID和組羣的GID
  1. 應用實例:
  • 查看指定文件的ACL (顯示註釋信息、不顯示註釋信息)
getfacl test
getfacl -c test

在這裏插入圖片描述

  • 使用表格形式查看指定文件的ACL
getfacl -t test 

在這裏插入圖片描述

五、umask命令-查看修改文件權限掩碼

  1. umask 命令:umask命令可用來設定權限掩碼。權限掩碼是由3個八進制的數字所組成,將現有的存取權限減掉權限掩碼後,即可產生建立文件時預設的權限。
  2. 語法格式:umask [參數] [權限掩碼]
  3. 常用參數
參數 含義
-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:**不能夠刪除其他用戶在同目錄裏創建的文件,也無法修改其他用戶創建的文件的內容,可刪除修改自己創建的文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章