FACL:Filesystem Acess Control Listvim
Linux(和其餘Unix等POSIX兼容的操做系統)有一種被稱爲訪問控制列表(ACL)的權限控制方法,它是一種權限分配以外的廣泛範式。例 如,默認狀況下你須要確認3個權限組:owner、group和other。而使用ACL,利用文件擴展屬性保存額外的訪問控制權限,你能夠增長權限給其餘用戶或組別,而不單只是簡單 的"other"或者是擁有者不存在的組別。能夠容許指定的用戶A、B、C擁有寫權限而再也不是讓他們整個組擁有寫權限。bash
ACL支持多種Linux文件系統,包括ext2, ext3, ext4, XFS, Btfrs, 等。若是你不肯定你的文件系統是否支持ACL,請參考文檔。工具
場景:Tom,Jerry兩個用戶,Tom在一個公共目錄建立一個文件,只但願Jerry也能夠訪問,並可以編輯修改保存。用戶之間文件共享。oop
安裝acl管理工具spa
CentOS/Fedora/RHEL 中:操作系統
yum install acl
Ubuntu/Debian 中:code
sudo apt-get install acl
安裝ACL完成後,須要激活咱們磁盤分區的ACL功能,這樣咱們才能使用它。blog
首先,咱們檢查ACL功能是否已經開啓。繼承
vim /etc/fstab進程
查看到/ /boot均沒有開啓ACL功能,在須要開啓ACL的分區的選項前增長acl標記。
eg.
基礎ACL經過兩條命令管理:setfacl用於增長或者修改ACL,getfacl用於顯示分配完的ACL。
getfacl
[root@RedHat tmp]# cp /etc/inittab . [root@RedHat tmp]# ls inittab project test [root@RedHat tmp]# getfacl inittab # file: inittab # owner: root # group: root user::rw- group::r-- other::r--
setfacl
-m: 設定
u:UID:perm
g:GID:perm
d:u:UID:perm
d:g:GID:perm
爲某一個目錄設置默認的訪問控制列表。意味着在這個目錄下新建的文件將自動繼承目錄的訪問控制列表權限。
setfacl -m u:hadoop:rw inittab
-x:取消
u:UID
g:GID
setfacl -x u:hadoop inittab
--mask:
在hadoop用戶下 [hadoop@RedHat tmp]$ echo 123 >> inittab -bash: inittab: Permission denied 在root用戶下 [root@RedHat tmp]# setfacl -m u:hadoop:rw inittab [root@RedHat tmp]# getfacl inittab # file: inittab # owner: root # group: root user::rw- user:hadoop:rw- group::r-- mask::rw- other::r--
添加acl權限後
-rw-rw-r--+ 1 root root 495 7月 26 19:06 inittab
在hadoop用戶下 [hadoop@RedHat tmp]$ echo 123 >> inittab [hadoop@RedHat tmp]$ tail -3 inittab # ln -sf /lib/systemd/system/<target name>.target /etc/systemd/system/default.target # 123
讓developteam組中的全部用戶對testfile有讀寫權限
[root@RedHat tmp]# mkdir testfile [root@RedHat tmp]# getfacl testfile # file: testfile # owner: root # group: root user::rwx group::r-x other::r-x [root@RedHat tmp]# setfacl -m g:developteam:rw testfile [root@RedHat tmp]# getfacl testfile/ # file: testfile/ # owner: root # group: root user::rwx group::r-x group:developteam:rw- mask::rwx other::r-x
用戶訪問文件 權限應用次序 用戶進程匹配以下:
owner --> group--> other
owner --> facl,user --> group --> facl,group --> other