这次主要说一下zfs的acl(以下内容请下载附件视频后,配合看会更加明白一些!)
访问权限
缩写
说明
add_file
w
向目录中添加新文件的权限。
add_subdirectory
p
在目录中创建子目录的权限。
append_data
p
对文件修改文件内容的权限。
delete
d
删除文件的权限。
delete_child
D
删除目录中的文件或目录的权限。
execute
x
执行文件或搜索目录内容的权限。
list_directory
r
列出目录内容的权限。
read_acl
c
读取 ACL 的权限 (ls)。
read_attributes
a
读取文件的基本属性(非 ACL)的权限。将基本属性视为状态级别属性
允许此访问掩码位意味着该实体可以执行 ls(1) 和 stat(2)。
read_data
r
读取文件内容的权限。
read_xattr
R
读取文件的扩展属性或在文件的扩展属性目录中执行查找的权限。
synchronize
s
占位符,此时不使用。
write_xattr
A
创建扩展属性或向扩展属性目录进行写入的权限。
向用户授予此权限意味着用户可为文件创建扩展属性目录
属性文件的权限可以控制用户对属性的访问。
write_data
w
修改或替换文件内容的权限。
write_attributes
W
将与文件或目录关联的时间更改为任意值的权限。
write_acl
C
编写 ACL 的权限或使用 chmod 命令修改 ACL 的能力。
write_owner
o
更改文件的属主或组的权限,或者对文件执行 chown 或 chgrp 命令的能力。
获取文件拥有权的权限或将文件的组拥有权更改为由用户所属组的权限
如果要将文件或组的拥有权更改为任意用户或组,则需要 PRIV_FILE_CHOWN 权限。
ACL 继承标志
继承标志
缩写
说明
file_inherit
f
仅将 ACL 从父目录继承到该目录中的文件。
dir_inherit
d
仅将 ACL 从父目录继承到该目录的子目录。
inherit_only
i
从父目录继承 ACL,但仅适用于新创建的文件或子目录,而不适用于该目录自身
该标志要求使用 file_inherit 标志或 dir_inherit 标志,或同时使用两者来表示要继承的内容。
no_propagate
n
仅将 ACL 从父目录继承到该目录的第一级内容,而不是第二级或后续内容
该标志要求使用 file_inherit 标志或 dir_inherit 标志,或同时使用两者来表示要继承的内容。
ACL 属性模式
ZFS 文件系统包括与 ACL 相关的两种属性模式:
aclinherit-此属性可确定 ACL 继承的行为。包括以下属性值:
discard-对于新对象,创建文件或目录时不会继承任何 ACL 项
文件或目录的 ACL 等效于该文件或目录的权限模式。
noallow-对于新对象,仅继承访问类型为 deny 的可继承 ACL 项。
secure-对于新对象,继承 ACL 项时将删除 write_owner 和 write_acl 权限。
passthrough-对于新对象,将继承可继承的 ACL 项,并且不会对其进行更改
实际上,此模式会禁用 secure 模式。
aclinherit 的缺省模式为 secure。
aclmode-每次 chmod 命令修改文件或目录的模式或最初创建文件时
此属性都将修改 ACL 的行为。包括以下属性值:
discard-删除所有 ACL 项,但定义文件或目录的模式所需的项除外。
groupmask-除非用户项与文件或目录的属主具有相同的 UID
否则将减少用户或组的 ACL 权限,以使其不会大于组权限位
然后,减少 ACL 权限,以使其不会大于属主权限位。
passthrough-对于新对象,将继承可继承的 ACL 项,并且不会对其进行更改。
aclmode 属性的缺省模式为 groupmask。
以上是各个属性的说明,我就不多说了
做ACL时有2种,一种就是上面这种形式,我觉得很麻烦,所以我就不多介绍了
直接说下面的
因为颜色的原因,所以我有2个ls,为了正确的显示,所以用了系统自带的
/usr/bin/ls
chmod A0=user:user1:rwx::allow a
chmod A+user:user1:rwx::allow a
chmod A-user:user1:rwx::allow a
chmod A0- a删除
这样在没有权限的情况下,user这样就可以了,对a文件读写
新创建的文件没有继承上一级的
很多情况下,为一个文件夹设权限的话,也是要希望里的继承的,所以我们要设置一下
chmod A0+user:user:wx:f:allow xin
zfs set aclmode=passthrough liu/xin
chmod A0=user:user:rwx:f:allow /liu/xin
touch file
ls -v file
这样就可以继承了
如果将文件系统的 aclmode 属性设置为 discard,则目录的权限位更改时,可能会废弃 ACL
zfs set aclmode=discard liu/xin
chmod A0=user:user:wx:f:allow xin
/usr/bin/ls -Vd test
设置了两个包含文件继承的显式 ACL。一个 ACL 允许 read_data 权限,一个 ACL
拒绝 read_data 权限。此示例还说明了如何可在同一 chmod 命令中指定两个 ACE
# zfs set aclinherit=nonallow liu/xinA
# chmod A+user:gozer:read_data:file_inherit:deny,user:lp:read_data:file_inherit:allow
test
# ls -dv test
这东西挺多也挺麻烦
不一一做了,自己试下吧
成功!!!!!!!!!
阅读(4039) | 评论(0) | 转发(0) |