umask 077是最简单有效的解决方式,因其使新建文件权限为600(-rw-------)、目录为700(drwx------),彻底屏蔽组和其他用户访问,堵住mysqldump等工具默认生成644权限导致的明文泄露漏洞。

直接用 umask 077 控制新建文件权限,是最简单有效的解决方式。
为什么 umask 能堵住明文泄露漏洞
默认 umask 是 022(或 002),导致 mysqldump 生成的 .sql 文件权限为 644 或 664 —— 同服务器其他用户可直接读取。而 umask 077 表示“屏蔽组和其他人的所有权限”,新创建文件默认就是 600(仅属主可读写),目录为 700(仅属主可进出)。
三种安全落地方式
-
脚本开头统一设 umask:在备份脚本第一行加
umask 077,后续所有重定向、管道输出生成的文件都自动继承该权限 -
mysqldump 命令前临时设 umask:比如
(umask 077; mysqldump -u app db > backup.sql),括号内是子 shell,不影响当前环境 -
配合 --result-file 避免重定向风险:用
mysqldump --result-file=/path/backup.sql,再立即执行chmod 600 /path/backup.sql,双重保险
必须避开的坑
别把备份文件存到 /tmp、/var/www 或任何 Web 可访问路径;也别依赖 SSH 传输加密——落地后的文件仍是明文且权限宽松,攻击者只要拿到服务器普通账户就能直接 cat 出来。
验证是否生效
备份完成后立刻执行:ls -l backup.sql
确认输出中权限字段是 -rw-------(即 600),而不是 -rw-r--r--(644)或更宽松的值。











