redis持久化文件权限必须闭环控制:dir目录需设为700且属主为redis用户,进程须以redis用户运行并配置umask=077,否则aof/rdb可能被未授权读写。

Redis持久化文件权限配置不是“设完就完事”,而是必须从目录、进程、文件三层面闭环控制,否则AOF/RDB文件可能被其他用户读取甚至篡改。
dir目录权限必须是700且属主为redis用户
Redis不会自动创建dir目录,也不会自动修复权限。如果dir /var/lib/redis存在但权限是755或属主是root,Redis进程(通常以redis用户运行)将无法写入,导致AOF/RDB静默失败——INFO persistence里aof_enabled仍显示1,但aof_current_size始终为0。
- 执行
sudo chown redis:redis /var/lib/redis和sudo chmod 700 /var/lib/redis - 禁止把
dir设成/tmp、/home、/var/www等共享路径,这些目录天然对其他用户可读 - 容器场景下,宿主机挂载目录的UID/GID必须与容器内
redis用户一致,否则chown在容器内无效
AOF重写时临时文件权限会继承父目录
当BGREWRITEAOF执行时,Redis先生成appendonly.aof.1234567890.temp,再原子替换原文件。如果dir目录权限是755,临时文件默认就是-rw-r--r--(644),重命名后AOF内容直接暴露给同组或其他用户。
Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。
- 确保
dir本身权限为700,这是唯一能约束临时文件权限的方式 - 不要用
appendfilename指定绝对路径(如/tmp/appendonly.aof),这会让Redis绕过dir配置,直接在目标路径创建文件 - systemd服务中建议显式设置
UMask=077,避免内核umask意外放宽权限
RDB/AOF文件不能依赖“默认权限”,要靠目录+进程双重保障
Redis进程创建dump.rdb或appendonly.aof时,文件权限由进程umask和父目录权限共同决定。即使你设了chmod 700 /var/lib/redis,若Redis以root启动,文件仍可能是644;若以redis用户启动但umask是022,文件仍是644。
- 必须在
redis.conf中配置user redis,强制降权运行 - 验证方式:用非
redis用户执行ls -l /var/lib/redis/,应返回Permission denied,而非列出文件详情 - 混合持久化(
aof-use-rdb-preamble yes)下,AOF文件开头是RDB二进制,结尾是明文命令——一旦权限放开,攻击者可直接编辑尾部注入恶意指令
真正起作用的从来不是单个配置项,而是user + dir + chmod 700 + UMask这一整套组合;漏掉任意一环,都可能让审计时被标记为“高危配置”。










