linux文件權限中保存了3種信息:1、文件所有者的權限信息,即擁有該文件或目錄的用戶權限信息;2、文件所有者所在組的權限信息,即擁有該文件或者目錄的組的權限信息;3、其他用戶的權限信息,即除了屬主和屬組的其他人的權限信息。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux文件權限中保存了文件所有者的權限、文件所有者所在組的權限和其他用戶的權限信息。對應3 種訪問身份(文件所有者,所屬群組,其他用戶)
linux里一切皆文件
文件夾其實也是文件
普通文件保存的是文本信息,文件夾保存的是當前文件夾下文件的目錄項信息
目錄項:就是文件名和文件索引
訪問權限
? 1、可讀權限(read):允許查看文件或文件夾內容,顯示目錄列表
? 2、可寫權限(write):允許修改文件內容,允許在目錄中新建、移動、刪除文件或子目錄
? 3、可執行權限(execute):允許允許程序,切換目錄
歸屬(所有權)
? ?1、文件擁有者(owner):擁有該文件或目錄的用戶賬號–》屬主–user–》u
? ?2、屬組(group):擁有該文件或者目錄的組賬號 ?–》組織社團–group–》g
? ?3、其他人(other):除了屬主和屬組的其他人 –》外人–others–》o
用案例來解釋文件的權限
# ls -al up.txt -rw-r--r--. 1 root root 126 4月 9 16:59 up.txt
1、空白分割 第一列就是設定的權限 第三列是屬主 第四列是屬組
????1.1、第一列一般十個字符組成 ????????????????第一個字符表示文件類型 ????????????????????????f??為文件 ????????????????????????d??為文件夾 ????????????????????????l??為鏈接文件 ????????????????????????b??為塊設備文件(block)????????--》磁盤設備文件 ????????????????????????c??為字符設備文件???????--》顯示字符相關 ????????????????????????p??為管道文件???? ????????????????????????s??為socket文件??--》進程通信的 ????????????????????????????????1.文件socket ????????????????????????????????????????本機上的不同進程之間通信的方式 ????????????????????????????????2.網絡socket? ????????????????????????????????????????ip:port?不同的機器之間的不同的進程通信,192.168.0.123:3
2、文件描述符 fd
文件描述符:linux內核給每個進程創建了一個文件描述符表,這個表里記載了這個進程所打開的所有文件,為了方便進程知道自己打開了哪些文件,就給每個文件進行了編號,這個編號就是文件描述符。而且進程對文件進行讀寫操作的時候,就直接使用對應的編號了,不再使用文件名了
Linux ACL訪問控制權限
Linux 系統傳統的權限控制方式,無非是利用 3 種身份(文件所有者,所屬群組,其他用戶),并分別搭配 3 種權限(讀 r,寫 w,訪問 x)。比如,我們可以通過 ls -l 命令查看當前目錄中所有文件的詳細信息,其中就包含對各文件的權限設置:
#?ls?-l total?36 drwxr-xr-x.?2?root?root?4096?Apr?15?16:33?Desktop drwxr-xr-x.?2?root?root?4096?Apr?15?16:33?Documents ... -rwxr-xr-x.?2?root?root?4096?Apr?15?16:33?post-install ...
以上輸出信息中,“rwxr-xr-x”就指明了不同用戶訪問文件的權限,即文件所有者擁有對文件的讀、寫、訪問權限(rwx),文件所屬群組擁有對文件的讀、訪問權限(r-x),其他用戶擁有對文件的讀、訪問權限(r-x)。
權限前的字符,表示文件的具體類型,比如 d 表示目錄,- 表示普通文件,l 表示連接文件,b 表示設備文件,等等。
但在實際應用中,以上這 3 種身份根本不夠用,給大家舉個例子。
上圖的根目錄中有一個 /project 目錄,這是班級的項目目錄。班級中的每個學員都可以訪問和修改這個目錄,老師需要擁有對該目錄的最高權限,其他班級的學員當然不能訪問這個目錄。
需要怎么規劃這個目錄的權限呢?應該這樣,老師使用 root 用戶,作為這個目錄的屬主,權限為 rwx;班級所有的學員都加入 tgroup 組,使 tgroup 組作為 /project 目錄的屬組,權限是 rwx;其他人的權限設定為 0(也就是 —)。這樣一來,訪問此目錄的權限就符合我們的要求了。
有一天,班里來了一位試聽的學員 st,她必須能夠訪問 /project 目錄,所以必須對這個目錄擁有 r 和 x 權限;但是她又沒有學習過以前的課程,所以不能賦予她 w 權限,怕她改錯了目錄中的內容,所以學員 st 的權限就是 r-x??墒侨绾畏峙渌纳矸菽兀孔優閷僦??當然不行,要不 root 該放哪里?加入 tgroup 組?也不行,因為 tgroup 組的權限是 rwx,而我們要求學員 st 的權限是 r-x。如果把其他人的權限改為 r-x 呢?這樣一來,其他班級的所有學員都可以訪問 /project 目錄了。
顯然,普通權限的三種身份不夠用了,無法實現對某個單獨的用戶設定訪問權限,這種情況下,就需要使用 ACL 訪問控制權限。
ACL,是 Access Control List(訪問控制列表)的縮寫,在 Linux 系統中, ACL 可實現對單一用戶設定訪問文件的權限。也可以這么說,設定文件的訪問權限,除了用傳統方式(3 種身份搭配 3 種權限),還可以使用 ACL 進行設定。拿本例中的 st 學員來說,既然賦予它傳統的 3 種身份,無法解決問題,就可以考慮使用 ACL 權限控制的方式,直接對 st 用戶設定訪問文件的 r-x 權限。
相關推薦:《Linux視頻教程》