跳转至

8.1 目录/文件访问授权

计算平台数据访问安全策略:个人目录默认设置为“仅本人可访问”。

如果因协作需要共享某个目录或文件,请不要直接开放整个 home 目录,也不要使用 chmod 777 这类面向所有人的权限设置。应按目录所在文件系统选择对应命令,只授权给确实需要访问的用户或组。

8.1.1 授权原则

  • 只授权给确实需要的人或组。
  • 只开放确实需要共享的目录,建议使用 ~/share、~/public 等专用子目录。
  • 只给必要权限,能只读就不给写权限。
  • 上层目录只给“进入”或“列出路径所需”的最小权限,避免暴露无关文件。
  • 用完后及时收回权限。
  • 涉及敏感数据、实验组数据或未公开结果时,请先确认实验组的数据管理要求。

8.1.2 判断目录类型

不同文件系统使用的授权命令不同,设置前请先通过路径判断目录类型。

目录类型 常见路径 授权命令
AFS 目录 /afs/ihep.ac.cn/users/{a-z}/{用户名} fs setacl、fs listacl
Lustre/POSIX 类目录 /home、/scratchfs、/sharefs、/aifs、/sugonfs、/ihepfs 等 setfacl、getfacl
EOS 目录 /eos/juno、/eos/lhaaso 等 eos acl

注意

AFS、Lustre/POSIX 类目录和 EOS 的 ACL 命令不能混用。如果不确定当前目录属于哪类文件系统,请先使用 pwd 查看路径。

8.1.3 AFS 目录授权

AFS 使用自己的 ACL 权限机制,普通 chmod 对 AFS 目录权限管理无效。AFS 权限按目录设置,如果要共享某个文件,应把文件放入已授权的目录中。

常用权限如下:

权限 含义
l list,可列出目录内容
r read,可读取文件内容,通常与 l 一起使用
rl 可进入并读取,常用于只读共享
write 可写入,包含常用读写权限
all 全部权限
none 取消该用户或组的权限

授权给指定用户:

# 让 zhangsan 只读访问 ~/public
fs setacl -dir ~/public -acl zhangsan rl

# 让 zhangsan 可读写 ~/project
fs setacl -dir ~/project -acl zhangsan write

授权给指定组:

fs setacl -dir ~/public -acl bes:members rl

查看和收回权限:

fs listacl -path ~/public
fs setacl -dir ~/public -acl zhangsan none

如果确需开放给所有可访问 AFS 的用户,应作为特殊情况处理,并在使用后及时收回:

fs setacl -dir ~/public -acl system:anyuser rl
fs setacl -dir ~/public -acl system:anyuser none

别人要访问 ~/public,还需要能到达该目录。更稳妥的做法是只给指定用户上层目录的 l 权限,再给共享目录 rl 权限:

fs setacl -dir ~ -acl zhangsan l
fs setacl -dir ~/public -acl zhangsan rl

如果用户对自己的 AFS 文件也没有权限,可能是凭证过期,可重新获取凭证:

kinit 用户名
aklog -d

8.1.4 Lustre/POSIX 类目录授权

/home、/scratchfs、/sharefs、/aifs、/sugonfs、/ihepfs 等目录通常遵循 Linux POSIX 权限规则,可使用 setfacl 给指定用户或组设置更细粒度的访问权限。

授权给指定用户:

# 让 zhangsan 可进入并读取
setfacl -m user:zhangsan:rx /home/cc/myname/share

# 让 zhangsan 可读写
setfacl -m user:zhangsan:rwx /home/cc/myname/share

授权给指定组:

setfacl -m group:besusers:rx /home/cc/myname/share

目录权限中,x 表示可以进入目录。只读共享通常使用 rx。

让已有子目录和文件一并生效:

setfacl -R -m user:zhangsan:rX /home/cc/myname/share

其中 -R 表示递归,大写 X 表示只给目录和已有可执行文件加 x,不会给普通数据文件增加执行权限。若希望以后新建的文件也继承该权限,可增加默认 ACL:

setfacl -R -d -m user:zhangsan:rX /home/cc/myname/share

查看和删除 ACL:

getfacl /home/cc/myname/share
setfacl -x user:zhangsan /home/cc/myname/share
setfacl -b /home/cc/myname/share

设置过 ACL 的目录,ls -l 权限位末尾会出现 +。setfacl -b 会清空全部 ACL,恢复为原始 chmod 权限,请谨慎使用。

别人要访问 /home/cc/myname/share,必须对沿途每一级目录都有 x 权限。可以只给上层目录 x,不加 r,让对方能够“路过”但不能列出其他文件:

setfacl -m user:zhangsan:x /home/cc/myname

注意

只有目录属主本人可以设置该目录的 ACL。部分 Lustre 卷如果提示不支持用户 ACL 或扩展属性,请联系 ics@ihep.ac.cn 申请开通。

8.1.5 EOS 目录授权

/eos/juno、/eos/lhaaso 等目录使用 EOS 分布式文件系统。EOS ACL 通常用于目录级共享授权,不建议对大量文件逐个设置 ACL,以免影响 namespace 管理性能。

授权给指定用户:

# 让 zhangsan 可进入并读取
eos acl --user u:zhangsan=rx /eos/myname/share

# 让 zhangsan 可读写
eos acl --user u:zhangsan=rwx /eos/myname/share

授权给指定组:

eos acl --user g:juno=rx /eos/myname/share

递归设置、查看和删除 ACL:

eos acl --user -R u:zhangsan=rx /eos/myname/share
eos acl -l /eos/myname/share
eos acl --user u:zhangsan= /eos/myname/share

对包含大量文件的目录执行递归 ACL 操作可能耗时较长,请谨慎使用。

注意

给某个用户开放 EOS 写权限时,还需要确认该用户在共享目录下有可用 quota。若没有可用 quota,请联系目录负责人或 ics@ihep.ac.cn 处理。

8.1.6 快速对照表

需求 AFS 目录 Lustre/POSIX 类目录 EOS 目录
给某用户只读 fs setacl -dir 目录 -acl 用户 rl setfacl -m user:用户:rx 目录 eos acl --user u:用户=rx 目录
给某用户读写 fs setacl -dir 目录 -acl 用户 write setfacl -m user:用户:rwx 目录 eos acl --user u:用户=rwx 目录
给某组只读 fs setacl -dir 目录 -acl 组名 rl setfacl -m group:组名:rx 目录 eos acl --user g:组名=rx 目录
查看权限 fs listacl -path 目录 getfacl 目录 eos acl -l 目录
取消某用户授权 fs setacl -dir 目录 -acl 用户 none setfacl -x user:用户 目录 eos acl --user u:用户= 目录
清空 ACL 逐条设置为 none setfacl -b 目录 按用户或组逐条删除

如有疑问,请联系 helpdesk@ihep.ac.cn,电话 010-88236855。Lustre ACL 开通申请和 EOS ACL 问题可联系 ics@ihep.ac.cn。

常见问题(FAQ)

见常见问题。

🤖 AI 助手
💬 快速提问 ×

有问题?输入后跳转到对话页继续交流