歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 轉載:setfacl與getfacl

轉載:setfacl與getfacl

日期:2017/3/3 13:02:24   编辑:Linux技術
ACL 全稱 Access Control Lists 翻譯成中文叫"訪問控制列表",
傳統的 Linux 文件系統的權限控制是通過 user、group、other 與 r(讀)、w(寫)、x(執行) 的不同組合來實現的。隨著應用的發展,這些權限組合已不能適應現時復雜的文件系統權限控制要求。 例如,目錄 /data 的權限為:drwxr-x---,所有者與所屬組均為 root,在不改變所有者的前提下,要求用戶 tom 對該目錄有完全訪問權限 (rwx).考慮以下2種辦法 (這裡假設 tom 不屬於 root group)
(1) 給 /data 的 other 類別增加 rwx permission,這樣由於 tom 會被歸為 other 類別,那麼他也將擁有 rwx 權限。
(2) 將 tom 加入到 root group,為 root group 分配 rwx 權限,那麼他也將擁有 rwx 權限。
以上 2 種方法其實都不合適,所以傳統的權限管理設置起來就力不從心了。
為了解決這些問題,Linux 開發出了一套新的文件系統權限管理方法,叫文件訪問控制列表 (Access Control Lists, ACL)。簡單地來說,ACL 就是可以設置特定用戶或者用戶組對於一個文件的操作權限。
ACL 有兩種,一種是存取 ACL (access ACLs),針對文件和目錄設置訪問控制列表。一種是默認 ACL (default ACLs),只能針對目錄設置。如果目錄中的文件沒有設置 ACL,它就會使用該目錄的默認 ACL.
首先我來講一下getfacl ( 顯示文件或目錄的 ACL)
在我的電腦裡首先有一個用戶叫NEU.我們學校的簡稱.同時還有一個用戶,software,我的專業名稱.
我以neu用戶進行操作,在其目錄下建立一個文件fileofneu.
可以看到它的初始權限為-rw-rw-r--然後我把這個文件權限進行下修改.使用的命令為chmod,修改後的文件權限為-rw-rw----現在這個文件的權限就不允許其它用戶訪問了.
然後切換到sofeware用戶,來證實這個文件的不可訪問性.
下面我們就通過getfacl命令來查看.這時候得進入neu用戶下操作了.其命令格式很簡單:getfacl fileofneu
權限一目了然.不多介紹了,下面就要用Setfacl來進行修改了.使其在對於其它用戶的權限裡,只對software用戶只讀只寫.
#setfacl -m u:softeware:rw- fileofneu
然後用getfacl命令來進行查看.我們就可以看到多了一行user:software:rw- 這說明其對用戶software開放了讀寫的權限.
為了證實其可用性,再切換到software用戶下訪問這個文件,發現與前面不同的是,這回可以讀寫了.















上邊的圖不全,也可以看下邊的這個例子
[test@RedHat92 ~]$ getfacl testfile
# file: testfile
# owner: test
# group: test
user::rw-
group::rw-
other::r--
權限一目了然.不多介紹了,下面就要用Setfacl來進行修改了.使其在對於其它用戶的權限裡,只對lee用戶只讀只寫.
[test@RedHat92 ~]$ setfacl -m u:lee:rw- testfile
[test@RedHat92 ~]$ getfacl testfile
# file: testfile
# owner: test
# group: test
user::rw-
user:lee:rw-
group::rw-
mask::rw-
other::r--
然後用getfacl命令來進行查看.我們就可以看到多了一行user:lee:rw- 這說明其對用戶lee開放了讀寫的權限.
為了證實其可用性,再切換到lee用戶下訪問這個文件,發現與前面不同的是,這回可以讀寫了.
如果是目錄呢?
setfacl -R -m u:lee:rw- testdirectory/ (-R一定要在-m前面,表示目錄下所有文件)
setfacl -x u:lee testdirectory/ (去掉單個權限)
setfacl -b (去掉所有acl權限)
如果我們希望在一個目錄中新建的文件和目錄都使用同一個預定的ACL,那麼我們可以使用默認(Default) ACL。在對一個目錄設置了默認的ACL以後,每個在目錄中創建的文件都會自動繼承目錄的默認ACL作為自己的ACL。用setfacl的-d選項就可以 做到這一點:
[test@RedHat92 ~]$ setfacl -d --set u:lee:rw- testdirectory/
[test@RedHat92 ~]$ getfacl testdirectory/
原文地址:http://www.linuxdiyf.com/viewarticle.php?id=116112
Copyright © Linux教程網 All Rights Reserved