chacl是用來更改文件或目錄的訪問控制列表的命令。其和chmod有異曲同工之妙。但是比chmod更為強大,更為精細。
chmod只能把權限分為三種:用戶,組,其它人。通過chmod你可以指定文件屬主的權限,文件所在組的用戶的權限,其它人的權限。
如果有這樣的需求,通過chmod能搞定嗎??如果A用戶的文件只想給B看。通過chmod能不能搞定。當然你可能講把A,B放到一個組裡面就可以了。但是你這樣就會限制了別的用戶不能加入這個組。通過chacl可以輕松的搞定這個問題。
chacl命令的格式是: chacl acl filename1 filename2
acl的英文是 the access control list,我就直譯為存取控制列表吧。chacl就是一個改變文件存取控制列表的一個命令。
acl是一個可以被acl_from_text程序分析出各用戶權限的字符串。該字符串用逗號分隔成多個片段
每個片段的形式都如:tag:name:perm
tag可以是下面形式的一種:
"user" (or "u")
表示這是一個用戶的ACL條目。
"group" (or "g")
表示這是一個用戶組的ACL條目。
"other" (or "o")
表示這是其它的ACL條目。即沒有在ACL指定的用戶和組的ACL條目。
"mask" (or "m")
表示這是一個掩碼的ACL條目。在指定其它非用戶屬主的ACL權限時,這個掩碼條目必須被指定,否則執行chacl命令會出錯。
name可以是用戶名或組名。如果不指定,那麼默認是給文件或目錄的屬主或用戶組指定acl權限。當然name也可以是用戶的uid或者組的gid。
perm是指該用戶或組所具有的權限,它是由"rwx"組成的一個字符串,什麼意思當然大家都明白了。如果要使該用戶或組不具有某種權限,簡單的以"-"代替指定的字母就可以了。例如"r-x"是只具有讀,執行權限。
該命令具有的選項不多,就具體的介紹下每個選項的含義吧。
-b 表明這裡有兩個acl需要修改,前一個acl是文件的acl,後一個是目錄的默認acl。
-d 設定目錄的默認acl,這個選項是比較有用的。如果指定了目錄的默認acl,在這個目錄下新建的文件或目錄都會繼承目錄的acl。
-R 只刪除文件的acl
-D 只刪除目錄的默認acl,是-d的反向操作。
-B 刪除文件和目錄默認的acl。是-b的反向操作。
-r 遞歸地修改文件和目錄的acl權限。
-l 列出文件和目錄的acl權限。
例:
復制代碼代碼如下:
[root@localhost ~]# chacl u::r-x,g::r-x,o::---,u:tank:rwx,m::--- test
[root@localhost ~]# getfacl test #查看文件的acl權限
# file: test
# owner: root
# group: root
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---