在 CentOS 上,“readdir 加密”通常并不是直接加密 readdir() 这个系统调用,而是让目录内容在磁盘上加密,或在访问时被透明解密,从而保护 readdir 看到的数据。常见做法如下:
readdir 读取的是已解密的挂载点,对应用完全透明。
# 创建加密分区
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 secure
mkfs.ext4 /dev/mapper/secure
mount /dev/mapper/secure /mnt/secure
✅ 优点:安全、稳定
❌ 缺点:不能只加密单个目录
适合“某个用户目录加密”。
yum install ecryptfs-utils
mount -t ecryptfs /secret /secret
readdir 只能看到解密后的文件名(挂载后)。
✅ 优点:目录级
❌ 缺点:配置略复杂
yum install encfs
encfs ~/.secret-raw ~/secret
✅ 优点:易用
❌ 缺点:安全性略弱于 LUKS
readdir 看到真实文件名(应用层)如果你是 开发者,想在 C/C++ 里“加密 readdir”:
/data/.enc/readdir 时解密文件名返回给程序struct dirent *d = readdir(dir);
// 对 d->d_name 做解密
✅ 适合自定义程序
❌ 不适合普通命令(ls 等)
readdir 被监听(高级)如果你担心:
strace readdir✅ 使用:
ptrace| 需求 | 推荐 |
|---|---|
| 服务器数据安全 | LUKS |
| 单目录加密 | eCryptfs |
| 用户级简单加密 | EncFS |
| 自写程序 | 应用层加密文件名 |
如果你能说清楚:
我可以给你更精确的方案。