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
授权给指定组:
查看和收回权限:
如果确需开放给所有可访问 AFS 的用户,应作为特殊情况处理,并在使用后及时收回:
别人要访问 ~/public,还需要能到达该目录。更稳妥的做法是只给指定用户上层目录的 l 权限,再给共享目录 rl 权限:
如果用户对自己的 AFS 文件也没有权限,可能是凭证过期,可重新获取凭证:
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
授权给指定组:
目录权限中,x 表示可以进入目录。只读共享通常使用 rx。
让已有子目录和文件一并生效:
其中 -R 表示递归,大写 X 表示只给目录和已有可执行文件加 x,不会给普通数据文件增加执行权限。若希望以后新建的文件也继承该权限,可增加默认 ACL:
查看和删除 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,让对方能够“路过”但不能列出其他文件:
注意
只有目录属主本人可以设置该目录的 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
授权给指定组:
递归设置、查看和删除 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)¶
见常见问题。
有问题?输入后跳转到对话页继续交流