訪問控制列表

ACL

訪問控制列表(Access Control List)係一種更為靈活同細粒度嘅權限管理機制, 用嚟定義同控制文件系統對象嘅訪問權限。相比傳統嘅文件權限系統,ACL 提供咗更細緻嘅權限控制, 容許你為唔同嘅用戶同用戶組設置特定嘅權限,唔再局限於傳統嘅三個角色(Owner、Group、Others)。

安裝

如果未安裝,可以用以下命令。

sudo apt-get install acl

getfacl

獲取文件嘅訪問控制列表

getfacl - get file access control lists

使用例子

獲取 foo 文件嘅 ACL 信息。

getfacl foo
# file: foo
# owner: kuga
# group: kuga
user::rw-
group::rw-
other::r--

setfacl

設置文件嘅訪問控制列表。

setfacl - set file access control lists

指定用戶授權

畀 soda 用戶添加對 foo 文件嘅讀寫權限。

setfacl -m u:soda:rw foo
getfacl foo
# file: foo
# owner: kuga
# group: kuga
user::rw-
user:soda:rw-
group::rw-
mask::rw-
other::r--

指定組授權

畀 soda 組添加對 foo 文件嘅讀寫權限。

setfacl -m g:soda:rw foo
getfacl foo
# file: foo
# owner: kuga
# group: kuga
user::rw-
user:soda:rw-
group::rw-
group:soda:rw-
mask::rw-
other::r--

其它人授權

對其它人添加對 foo 文件嘅讀寫權限。

setfacl -m o::rw foo
getfacl foo
# file: foo
# owner: kuga
# group: kuga
user::rw-
user:soda:rw-
group::rw-
group:soda:rw-
mask::rw-
other::rw-

授權修改

命令採取覆蓋的形式。

setfacl -m o::r foo

other::rw- 會變成 other::r--

清空授權

setfacl -m u:soda:- foo
setfacl -m o::- foo
user:soda:---
other::---

刪除授權

setfacl -x u:soda foo
setfacl -m g:soda foo

user:sodagroup:soda 這兩行會刪掉。

末尾的 + 號

使用 ACL 的文件,權限列後面會有一個 + 號。

-rw-rw-r--+

RBAC

差不多 7-8 年前,曾經接觸過一個 ACL 的管理後台,後來改成了 RBAC。