如何创建一个无法看到且只能通过其绝对路径名访问的目录?

bla*_*nix 6 directory

我正在完成一项为标准 UNIX 系统添加时间支持的作业。但是,其中的一部分涉及通过使备份文件不可见来保护备份文件的位置(默认情况下我们已将其设置在系统根目录下),即使是通过像“ls -al”这样的命令,并且只能通过指定访问它的绝对路径名。这是原始报价:

最后,历史目录应该是“虚拟的”,因为它们在检查代表根目录的 inode 的内容或执行诸如“ls -al /”之类的命令时不会出现,并且只能通过直接 chdir 访问() ("cd") 操作到历史路径名。

我一直在浏览 UNIX 文件系统 API,但我还没有想出一种方法来强制执行此操作(我认为命令行程序或 bash 脚本中的这些程序的组合可能会完成这项工作)。我是不是在思考错误的方向?

将不胜感激任何指向正确方向的指示或提示,谢谢:)

Hau*_*ing 7

您可以从目录中删除读取权限。在这种情况下,仍然可以访问其内容(文件或子目录,只要它们的权限允许),但您必须知道(或:尝试...)它们的名称,因为不再可能列出目录内容。


Gil*_*il' 5

您可以防止非 root 用户列出目录的内容,同时允许他们通过授予x权限而不是r. 对于目录,r(“read”) 表示可以列出内容,而x表示可以访问目录中的文件或cd进入其中。但是,这似乎不是分配的含义,因为它不是指权限。

对于普通文件系统,目录中的条目是出现在目录列表中的条目。但是,如果您控制文件系统驱动程序,则可能违反此约定。以下是一些您可能会在野外找到的示例:

  • 在不区分大小写的文件系统,在一个目录,其上市仅显示一个文件Foo,你可以也被称为访问文件FOOfOO等,他们都是一样的文件,因为文件系统驱动程序是这样设计的。
  • 一些自动挂载程序对目录名称做出反应并相应地尝试挂载。例如,为 NFS 配置的自动挂载程序通常决定在您访问/amnt/myserver/somedir时尝试挂载myserver:/somedir,从而使目录/amnt/myserver/amnt/myserver/somedir存在。
  • AVFS 中,如果文件被识别为存档,则您可以将其作为目录访问,但假目录名称不会出现在目录列表中:如果ls ~/.avfs/path/to显示为,foo.zip则目录~/.avfs/path/to/foo.zip#也存在。
  • 一些文件系统快照系统以你的任务描述的方式运行:如果你访问一个目录,/snapshot/20140415022342或者/snapshot/yesterday你在指定时间之前获得最新的快照。