温馨提示×

centos readdir怎么隐藏

小樊
37
2026-10-12 00:06:16
栏目: 智能运维

在 CentOS(其实是 Linux 下通用的做法)里,readdir 本身是系统调用,你不能“隐藏 readdir”,但可以从文件系统层 / 应用层 / 权限层来“让 readdir 看不到某些内容”。下面按常见需求分类说明:


一、只想让某些文件不被 readdir 列出来(最常见)

✅ 方法 1:以 . 开头(最简单)

mv secret.txt .secret.txt

readdir 会返回,但很多程序(ls、readdir 上层封装)默认忽略 . 开头文件。

注意:
readdir() 仍会返回 . 文件,只是 ls 默认不显示。


✅ 方法 2:改文件权限(让别人 readdir 都失败)

chmod 000 secret.txt
chown root:root secret.txt

其他用户:

  • 无权限进入目录 → readdir 直接失败
  • 有目录权限但无文件权限 → 能看到名字,不能访问内容

✅ 方法 3:把文件放到无权限目录

mkdir /hidden
chmod 700 /hidden

其他用户 opendir("/hidden") 直接失败,readdir 根本拿不到。


二、想“彻底让 readdir 看不到某些文件”(高级)

✅ 方法 4:使用挂载掩盖(bind mount)

mount --bind /empty /path/to/dir

原目录内容被“盖住”,readdir 只看到空目录。

常用于:

  • 隐藏系统目录
  • 容器 / chroot 环境

✅ 方法 5:使用 overlay / 加密文件系统

  • overlayfs
  • encfs
  • cryptfs

真实文件在底层,readdir 只看到挂载层内容。


三、程序级:在 C 代码里“过滤 readdir”

如果你是自己写程序:

struct dirent *de;
while ((de = readdir(dir)) != NULL) {
    if (strncmp(de->d_name, "hide", 4) == 0)
        continue;
}

四、内核级(不推荐,除非安全场景)

  • 写 LKM(内核模块)
  • Hook getdents64 / filldir
  • 在返回用户态前删掉某些项

⚠️ 风险极高,CentOS 有 Secure Boot / 签名限制。


五、总结对照表

需求 推荐方式
简单隐藏 .文件名
防止别人看 权限 / 目录权限
程序级过滤 readdir 里判断
系统级隐藏 mount / overlay
安全级隐藏 内核 hook(不推荐)

如果你能说清楚:

  • 是 用户级还是 root
  • 是 自己程序还是系统命令
  • 是想 防谁看

我可以给你更精确的方案。

0 踩