Skip to main content

客户端权限控制(ACL)

JuiceFS 提供两种控制访问权限策略的机制,访问令牌和 POSIX Extended ACL。这是两个维度的权限管理方式,访问令牌控制谁能挂载(以及挂载点的整体权限);而 POSIX ACL 是面对同一个挂载点,不同系统用户的权限管理。

访问令牌

JuiceFS 文件系统的元数据,如目录结构、文件属性和时间戳等,均保存在 Metadata 服务中,通过令牌(Token)进行授权访问。

用户可以通过 JuiceFS Web 控制台管理令牌,支持基于 IP 范围、读写权限和挂载子目录等的访问规则。

运行 juicefs mount 挂载文件系统或 juicefs auth 进行交互认证时,系统将提示输入此令牌。默认令牌可以在文件系统设置页面找到,你也可以设置多个创建多个令牌,为每一个配置不同的 ACL 以及其他挂载设置。

默认令牌允许用户从任意 IP 范围对整个文件系统进行读写操作。如需进行更精细的配置,可以前往访问控制管理界面。

令牌分为两类,一类用于客户端访问文件系统内容,另一类仅供访问监控 API。

客户端访问令牌

客户端访问令牌用于授权客户端访问文件系统,并且控制着一些客户端行为,你可以在「控制台 → 访问控制」标签页进行配置。选项说明如下:

  • IP 范围:仅允许来自指定 IP 范围的访问
  • 读写权限
    • 只读:仅允许读操作(openreadreaddir 等)。
    • 可读可追加写:在读操作的基础上同时允许以追加模式打开文件并写入。
    • 可读可写:允许所有读写操作。
  • 挂载选项
    • 挂载子目录:只能挂载这个子目录之下的路径,通过 --subdir 参数指定。
    • 允许后台任务:客户端默认开启后台任务,如数据块删除、碎片合并及文件系统跨区域同步等(该功能是全局的,不受读写、子目录权限影响)。因此对于低带宽的机器,建议禁用后台任务,避免影响系统整体性能。

API 访问令牌

JuiceFS 通过 Prometheus API 为每个文件系统导出监控数据,此列表中的令牌仅可用于访问监控 API,无法用于挂载文件系统。

POSIX Extended ACL

在 Linux 中,POSIX 文件系统支持最小化 ACL(minimal ACL),由 3 个要素构成,也就是我们熟悉的文件 Owner、Group、Other 权限。在最小化 ACL 之上,还有 Extended ACL,支持更高级的权限策略,每一个文件都可以为多个不同的组单独设置权限(查看 setfacl了解使用细节)。

JuiceFS 同样支持 Extended ACL,考虑到相关权限查询会带来少量额外性能开销,因此默认关闭。需要挂载时添加 --enable-acl 以开启。

juicefs mount myjfs /jfs --enable-acl

启用 Extended ACL 后,别忘了 JuiceFS 还默认启用UID/GID 自动映射,这个功能会保证在不同节点上,名称相同的用户,即使其 UID 不同,也保持一致的文件权限。

设置 umask,令新创建的文件对其他用户可访问

umask 控制着用户创建文件的默认权限。这和 JuiceFS 的使用没有关系,仅仅作为常见问题收录在文档里。

对于 root 用户,默认的 umask 是 022,意味着用户创建文件的权限是 666 - 022 = 644,也就是 root 用户可读写,其他用户/组可读。

如果希望令创建的文件默认对其他用户可读写,那么需要调整 umask:

# 首位的 0 代表八进制
# 改为 000 后,创建文件的默认权限是 666,其他用户也可读写
umask 0000