NFSv4 ACL配置与参数
NFSv4 ACL配置命令
在NFSv4中,ACL(Access Control Lists)配置主要通过nfs4_setfacl
和nfs4_getfacl
命令实现。这些命令用于设置和查看NFSv4风格的ACL权限。
查看NFSv4 ACL
使用nfs4_getfacl
命令查看文件或目录的NFSv4 ACL:
nfs4_getfacl /path/to/file_or_directory
设置NFSv4 ACL
使用nfs4_setfacl
命令修改文件或目录的ACL:
nfs4_setfacl -a type:flags:principal:permissions file_or_directory # 各项参数说明如下,更详细的参数说明可参考https://linux.die.net/man/5/nfs4_acl。
nfs4_setfacl -a A::user@domain:rxtncy /path/to/file_or_directory
其中:
- type:
A
表示允许(Allow),D
表示拒绝(Deny),U
用于审计,记录ACE主体对对象的访问(Audit)、L
警告配置(Alarm)。 - flags:group flag,inheritance flag,administrative flag
如下表1-1 ACE flag参数说明
ACE flag | 说明 |
---|---|
group flag | ACE组标志。取值为“g”,设置后表示主体是组而不是用户。 |
inheritance flag | ACE继承标志,取值包括:“d”、“f”、“n”、“i”。 d:目录继承,新创建的子目录将继承当前对象的ACE; f:文件继承,新创建的文件将继承当前对象ACE; n:无传播继承,与“d”或“f”组合使用后,新创建的子目录将继承当前对象的ACE,但未继承该标志位(即子目录的子目录不会继承该ACE); i:仅继承,与“d”或“f”组合使用后,ACE不适用于当前对象本身,但新创建的子目录或文件将继承该ACE。 |
administrative flag | 取值包括:“S”、“F”。“S”和“F”可同时设置,表示成功和失败事件都将被审计。 S:审计日志中记录ACE主体的成功事件; F:审计日志中记录ACE主机的失败事件。 |
- principal:ACE针对的主体,可以是用户或组,具体取决于字段中是否包含标志“g”,principal包括以下3种类型:
用户,如:user@nfsdomain.org
组,如:g:group@osc.edu:rxtncy
特殊主体,包括:OWNER@,GROUP@以及EVERYONE@ - permissions:ACE权限位,一个ACE由一个或多个权限设定,权限位的具体含义如表1-2。
权限位 | 对于文件的含义 | 对于目录的含义 |
---|---|---|
r | 读文件 | 列举目录 |
w | 写文件 | 创建文件、目录 |
a | 追加写文件 | 创建子目录 |
x | 执行文件 | 进入目录 |
d | 删除文件 | 删除目录 |
D | - | 删除目录的子文件、子目录 |
t | 读取文件的属性信息 | 读取目录的属性信息 |
T | 修改文件的属性信息 | 写目录的属性信息 |
n | 读取文件的named attributes属性信息 | 读取目录的named attributes属性信息 |
N | 修改文件的named attributes属性信息 | 修改目录的named attributes属性信息 |
c | 读取文件的ACL | 读取目录的ACL |
C | 修改文件的ACL | 修改目录的ACL |
o | 修改文件的拥有者(owner)信息 | 修改文件的拥有者(owner)信息 |
y | 允许客户端与服务器使用同步I/O。 (allow clients to use synchronous I/O with the server.) |
示例
为用户alice@example.com
添加读写权限:
nfs4_setfacl -a A::alice@example.com:rw /data/share
删除用户bob@example.com
的所有权限:
nfs4_setfacl -x A::bob@example.com /data/share
递归设置ACL
使用-R
选项递归设置目录及其子项的ACL:
nfs4_setfacl -R -a A::group@example.com:rx /data/share
清除所有ACL
重置为默认ACL:
nfs4_setfacl -c /path/to/file_or_directory
注意事项
- NFSv4 ACL与POSIX ACL不同,需确保NFS服务器和客户端支持NFSv4。
- 权限修改后需重新挂载或重启NFS服务生效。
- 使用
man nfs4_setfacl
和man nfs4_getfacl
查看详细帮助。