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