协作型umask应设为002,配合SGID和默认ACL:先chown :projectteam并chmod 2775启用SGID确保属组继承,再setfacl -d -m g:projectteam:rwx实现新文件自动获组读写执行权,最后通过login.defs与PAM全局配置umask 002保障所有场景生效。

在多用户协作的高性能计算(HPC)集群中,umask 配置不能只追求“私有”或“宽松”,而要兼顾安全基线与协作效率。关键不是让所有用户互相可写,而是让指定组内成员能自然、一致地读写共享目录下的新文件——这需要 umask 与 SGID、默认 ACL 协同工作。
协作型 umask 值选 002,而非 022 或 077
生产环境推荐设为 002(即八进制三位,常写作 0002),原因如下:
- 新文件权限为 664(rw-rw-r--):属主和属组可读写,其他人只读 —— 满足课题组内共享基本需求
- 新目录权限为 775(rwxrwxr-x):组内可进入、列目录、创建子项,其他人仅可进入和查看
- 避免 022(644/755)导致组内无写权,也避开 077(600/700)彻底阻断协作
必须配合 SGID 和默认 ACL 才真正生效
仅靠 umask 002 不足以保障协作连续性。新建文件默认继承父目录属主,但不自动继承属组;且即使属组正确,新文件仍可能无组写权。因此需三步联动:
-
设目录属组并启用 SGID:如共享路径
/dssg/home/acct-exp/share,执行sudo chown :projectteam /dssg/home/acct-exp/sharesudo chmod 2775 /dssg/home/acct-exp/share
(其中 2 表示 SGID,确保新文件/目录自动归属 projectteam 组) -
设置默认 ACL:运行
sudo setfacl -d -m g:projectteam:rwx /dssg/home/acct-exp/share
这使该目录下所有新建项自动获得组读、写、执行权限 -
确认文件系统支持 ACL:ext4/xfs 默认支持,无需额外挂载选项;验证命令:
getfacl /dssg/home/acct-exp/share | grep default
全局配置要覆盖 HPC 全场景:login.defs + PAM 双轨落地
HPC 中作业常通过 qsub、sbatch、crond、sudo -u 等非交互方式启动,仅改 ~/.bashrc 会失效:
-
/etc/login.defs:添加或确认未注释行
UMASK 002→ 控制useradd创建的新账号初始值 -
PAM 统一注入:
- Ubuntu/Debian:在
/etc/pam.d/common-session末尾加session optional pam_umask.so umask=0002 - RHEL/CentOS:在
/etc/pam.d/system-auth的 session 段加同上行
- Ubuntu/Debian:在
- 若系统无
pam_umask.so(如旧版 Ubuntu),先安装libpam-umask包
验证必须实测,不能只看 umask 命令输出
打开全新登录会话(如重连 SSH),执行:
umask && mkdir testdir && touch testdir/testfile && ls -ld testdir testdir/testfile
预期结果(umask 002 + SGID + 默认 ACL):
-
drwxrwsr-x+(含 s 和 +,表示 SGID 与 ACL 生效) -
-rw-rw-r--+(属组可写,+ 表示 ACL 存在)
若出现 -rw-r--r-- 或 drwxr-xr-x,说明 SGID 或默认 ACL 未生效,需回查 chown、chmod、setfacl 步骤。











