首頁 > linux教程 > Linux權限管理 閱讀:0更新時間:2020-03-28 00:59:44

ACL權限是什么,Linux ACL訪問控制權限(包含開啟方式)

linux 系統傳統的權限控制方式,無非是利用 3 種身份(文件所有者,所屬群組,其他用戶),并分別搭配 3 種權限(讀 r,寫 w,訪問 x)。比如,我們可以通過 ls -l 命令查看當前目錄中所有文件的詳細信息,其中就包含對各文件的權限設置:

[root@localhost ~]# 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 種身份根本不夠用,給大家舉個例子。
ACL控制權限
圖 1 ACL 訪問控制權限
圖 1 的根目錄中有一個 /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 權限。

開啟 ACL 權限

CentOS 6.x 系統中,ACL 權限默認處于開啟狀態,無需手工開啟。但如果你的操作系統不是 CentOS 6.x,可以通過如下方式查看ACL權限是否開啟:

[root@localhost ~]# mount
/dev/sda1 on /boot type ext4 (rw)
/dev/sda3 on I type ext4 (rw)
…省略部分輸出…
#使用mount命令可以看到系統中已經掛載的分區,但是并沒有看到ACL權限的設置
[root@localhost ~]# dumpe2fs -h /dev/sda3
#dumpe2fs是查詢指定分區文件系統詳細信息的命令
…省略部分輸出…
Default mount options: user_xattr acl
…省略部分輸出…

其中,dumpe2fs 命令的 -h 選項表示僅顯示超級塊中的信息,而不顯示磁盤塊組的詳細信息;

使用 mount 命令可以查看到系統中已經掛載的分區,而使用 dumpe2fs 命令可以查看到這個分區文件系統的詳細信息。大家可以看到,我們的 ACL 權限是 /dev/sda3 分區的默認掛載選項,所以不需要手工掛載。

如果 Linux 系統如果沒有默認掛載,可以執行如下命令實現手動掛載:

[root@localhost ~]# mount -o remount,acl /
#重新掛載根分區,并加入ACL權限

使用 mount 命令重新掛載,并加入 ACL 權限。但使用此命令只是臨時生效,要想永久生效,需要修改 /etc/fstab 文件,修改方法如下:

[root@localhost ~]#vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 /ext4 defaults,acl 1 1
#加入ACL權限
[root@localhost ~]# mount -o remount /
#重新掛載文件系統或重啟系統,使修改生效

在你需要開啟 ACL 權限的分區行上(也就是說 ACL 權限針對的是分區),手工在 defaults 后面加入 ",acl" 即可永久在此分區中開啟 ACL 權限。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩