必须将swap文件权限设为600,因为内核强制校验且仅接受root可读写、其他用户无权限的文件,否则swapon会拒绝加载;该操作须在创建文件后、mkswap前立即执行。

直接把 swap 文件权限设为 600 是防止敏感数据泄露的关键一步。swap 文件可能包含进程内存页,比如密码、密钥、会话令牌等,若权限宽松(如 644),普通用户可读,就等于把内存快照暴露出去。
为什么必须是 600?
Linux 内核在启用 swap 时强制校验权限:只有所有者(root)可读可写、其他用户无任何权限的文件才被接受。否则 swapon 会报错:
这不是警告,是拒绝加载——权限不对,swap 根本启不起来。
chmod 600 要在哪个环节执行?
必须在 创建 swap 文件后、运行 mkswap 前 立即执行。顺序错了会导致失败或留下安全窗口:
- 用
fallocate或dd创建文件后,立刻运行:sudo chmod 600 /swapfile - 再执行
sudo mkswap /swapfile和sudo swapon /swapfile - 如果先 mkswap 再改权限,部分系统会在 swapon 阶段仍因内核检查失败而拒载
fstab 中也要保持权限隔离
添加到 /etc/fstab 后,swap 文件由系统自动挂载,但权限不会自动重设。所以确保:
- fstab 行末尾不要加
uid=或gid=参数(swap 不支持) - 挂载前再次确认:
ls -l /swapfile输出应为-rw------- 1 root root - 重启后可用
sudo swapon --show验证是否正常启用,避免“写了 fstab 却没生效”的情况
额外加固建议
仅 600 权限还不够彻底防泄密,可配合以下操作:
- swap 文件放在根分区(如
/swapfile),避免放在 NFS 或 FUSE 类共享/网络文件系统上 - 禁用休眠(hibernate):因为
swapon启用的 swap 文件不参与 hibernate 镜像保存,而 hibernate 镜像本身常存于 swap 分区且无权限控制 - 调低
vm.swappiness(如设为 10):减少内核主动换出内存页的倾向,间接降低敏感数据落盘概率











