关键是要用umask 077屏蔽权限,使新备份目录默认为drwx------(700),仅属主可读写执行,组和其他用户无任何权限,且需在/etc/login.defs配置并验证实际创建效果。

要让新创建的备份目录具备最小安全访问权限,关键不是“设成想要的权限”,而是用 umask 屏蔽掉不需要开放的权限位。备份目录通常含敏感数据,应默认禁止组和其他用户访问——即只允许属主读、写、执行(rwx),其余全拒。
备份场景下推荐的 umask 值
对备份目录而言,最小权限原则意味着:目录必须有执行位(否则无法进入),但组和其他用户不应有任何权限。内核给新目录的起点权限是 0777,所以:
-
umask 077 → 实际目录权限 =
0777 & ~077=0700(drwx------) -
umask 027 → 得
0750(drwxr-x---),适合需组内只读浏览的备份归档场景 - 避免用
002或022,它们会让组或其他人获得写或读权限,备份目录一旦被误改或遍历,风险陡增
确保生效的配置位置选择
仅在 ~/.bashrc 里写 umask 077 不够可靠——SSH 单命令、cron 备份脚本、systemd 定时任务都不会加载它。应分层加固:
- 优先写入
/etc/login.defs:添加或修改行UMASK 077,适用于所有 PAM 登录(包括 SSH 登录、控制台) - 确认 PAM 模块启用:检查
/etc/pam.d/sshd或/etc/pam.d/login是否含session optional pam_umask.so - 对 cron 或 systemd 服务:在脚本开头显式加
umask 077,不依赖环境继承
验证是否真正生效
不能只看配置文件有没有写,也不能只运行 umask 命令看输出值——必须实测创建行为:
- 执行
umask,确认输出为0077(注意是四位显示,等价于077) - 运行
mkdir backup_test && ls -ld backup_test - 预期结果必须是
drwx------(即权限数字为700),而非755或775 - 若不符,说明当前 shell 环境未应用该 umask,需回溯初始化流程
注意目录与文件权限的天然差异
umask 对备份目录有效,但同一设置下新建普通文件会得 0600(-rw-------),这是正确且安全的——备份脚本生成的日志、压缩包等也应仅属主可读写。无需强行统一目录和文件权限,这违背内核设计逻辑,也无实际必要。











