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