iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 10
0

ACL 是啥

全名是 Access Control List

基本權限

三種 owner, group, others 對應 read, write, execute

如果有一個目錄底下有一堆人要使用,每個人或群組所需要的權限每個都不一樣,而基本的權限管理只有檔案擁有者、群組、其他人,沒辦法針對 aming 這個單一用戶設定權限,因此就有以下的 ACL 概念。

ACL 的控制權

  • 使用者(user):針對使用者設定權限
  • 群組(group):針對群組設定權限
  • 預設屬性(mask):該目錄新建檔案/目錄時,規範新資料的預設權限。

檢查 ACL

dmesg | grep -i acl

設定 ACL

針對特定使用者

setfacl

我們來針對特定使用者 aming 來設定權限 r,x,一開始先建一個檔案並檢視其一般權限。

root$> touch test
root$> ll test
-rw-r--r--. 1 root root 0 八 07 08:07 test

接下來使用 ACL 權限設定:

setfacl -m u:aming:rx test
ll test

接下來檔案權限會變成這樣:

-rwxr-xr--+. 1 root root 0 八 07 08:07 test

我們來比較一下兩個檔案權限,會發現差了一個 + 號還有 owner 的 x、group 的 x。

getfacl

getfacl test

這樣就會列出詳細資訊,其中最重要的

user::rwx
user:aming:r-x

凸顯了透過 AC 使 aming 和其他使用者權限的產生差異。

針對特定群組

root$> setfacl -m g:groooop:wx test
getfacl test

一樣我們看群組的欄位:

group::r--
group:groooop:wx

這樣 groooop 的權限就與一般群組不同了。

有效權限遮罩:m

我們可以透過 mask 來規範最大允許的權限,能夠避免不小心開放權限給其他使用者或群組。

設定方法如下:

setfacl -m m:x test
getfacl test
user:aming:r-x #effective:--x
group:groooop:-wx #effective:--x

#effective 代表有效權限,我們會發現 aming 和 groooop 的權限都是 --x

aming:

r-x ---> aming
--x ---> mask
================ 取交集
--x ---> 有效權限

groooop:

-wx ---> groooop
--x ---> mask
================ 取交集
--x ---> 有效權限

取消權限

setfacl -x u:aming test

上一篇
[Day 9] Linux 帳號管理
下一篇
[Day 11] Linux 程序管理(1)
系列文
30 天不間斷-資工隨筆大雜燴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言