温馨提示×

centos readdir怎样隐藏

小樊
40
2026-09-24 09:38:16
栏目: 智能运维

在 CentOS(或者说 Linux 下使用 readdir 相关的场景)中,“隐藏”目录项通常有以下几种常见理解和技术做法,我按最常见需求给你说明:


一、最常规做法:以点(.)开头隐藏文件/目录

Linux 中 readdir() 会返回所有目录项,但. 开头的文件被视为“隐藏文件”,普通 ls 不会显示,但 readdir 仍然能读到。

mv testdir .testdir

✅ 用户用 ls 看不到
readdir() 依然能读到(这是正常的)


二、在程序中“过滤” readdir 结果(应用层隐藏)

如果你是自己写 C / C++ 程序调用 readdir(),可以在代码里过滤:

while ((entry = readdir(dir)) != NULL) {
    if (entry->d_name[0] == '.')  // 隐藏以点开头的
        continue;
    printf("%s\n", entry->d_name);
}

这是最常见、最安全的“隐藏”方式。


三、通过权限控制“看不见”

如果是想让某些用户根本读不到:

chmod 700 secret_dir
  • 其他用户:
    • opendir() 失败
    • readdir() 拿不到内容

⚠️ 仅对非 root / 无权限用户有效


四、使用 mount --bind 或 overlay 隐藏(高级)

把真实目录“覆盖”掉:

mount --bind /empty_dir /real_dir

这样 readdir("/real_dir") 看到的是空目录(对普通用户而言)。

常用于:

  • 容器
  • 安全隔离

五、内核 / FUSE 级别隐藏(不推荐常规使用)

  • 写内核模块
  • 使用 FUSE 文件系统

✅ 真正从 readdir 层面不返回
❌ 复杂度高、风险大


六、常见误区

readdir 本身不能“隐藏”文件
✅ 只能:

  • 文件命名隐藏
  • 程序过滤
  • 权限限制
  • 挂载覆盖

总结

需求 推荐方式
用户 ls 看不到 文件名加 .
程序里不显示 readdir 过滤
别的用户读不到 chmod / chown
完全看不见 mount / FUSE

如果你能说清楚:

  • C 程序 readdir
  • 还是 shell / 用户看不见
  • 还是 root 也想隐藏

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

0