2.Linux 文件管理命令
2.60 getfacl:获取文件访问控制列表
-
作用:获取文件访问控制列表。
-
用法:getfacl[-aceEsRLPtpndvh]文件
-
主要选项如下:
命令 描述 -a,--access
仅显示文件访问控制列表。 -d,--default
仅显示默认的访问控制列表。 -c,--omit-header
不显示注释表头。 -e,--all-effective
显示所有的有效权限。 -E,--no-effective
显示无效权限。 -s,--skip-base
跳过只有基条目(Baseentries)的文件。 -R,--recursive
递归显示子目录。 -L,--logical
逻辑遍历(跟随符号链接)。 -P,--physical
物理遍历(不跟随符号链接)。 -t,--tabular
使用制表符分隔的输出格式。 -n,--numeric
显示数字的用户/组标识。 -p,--absolute-names
不去除路径前的“/”符号。 -v,--version
显示版本并退出。 -h,--help
显示帮助信息。
案例练习
(1)查看 acl 权限列表。
# getfacl test
# file: test
# owner: root
# group: root
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
(2)查看 acl 权限,省略头信息。
# getfacl -c test
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---
2.61 chacl:更改文件或目录的访问控制列表
-
作用:更改文件或目录的访问控制列表。
-
用法:chacl acl filename1 filename2
-
主要选项如下:
命令 描述 -b
表明这里有两个 acl 需要修改,前一个 acl 是文件<br />的 acl,后一个是目录的默认 acl。 -d
设定目录的默认 acl,这个选项是比较有用的。如果指定<br />了目录的默认 acl,在这个目录下新建的文件或目录都会继承目录的 acl。 -R
只删除文件的 acl。 -D
只删除目录的默认 acl,是-d 的反向操作。 -B
删除文件和目录默认的 acl,是-b 的反向操作。 -r
递归地修改文件和目录的 acl 权限。 -l
列出文件和目录的 acl 权限。 chacl 是用来更改文件或目录的访问控制列表的命令。其和 chmod 有异曲同工之 妙,但是比 chmod 更为强大、更为精细
chmod 只能把权限分为 3 种:用户、组、其他人。通过 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”表示只具有读、 执行权限。
案例练习
# chacl u::r-x,g::r-x,o::---,u:tank:rwx,m::--- test
# getfacl test #查看文件的 acl 权限
# file: test
# owner: root
# group: root
user::r-x
user:tank:rwx #effective:---
group::r-x #effective:---
mask::---
other::---