如何从ls -a隐藏文件/目录,同时仍然可以在兼容POSIX的系统中访问这些文件/目录?

s1lv3r

例如,在FreeBSD和ZoL下的ZFS中.zfs,每个zpool挂载点内部都有一个魔术目录,您可以使用zfs set snapdir=visible.zfs目录显示目录。

让我感到奇怪的是:如果将该设置设置为“ hidden”,那么该.zfs目录实际上如何ls -ashell或shell路径自动完成的输出中隐藏,而仍然可以通过其他方式访问(您仍然cd可以对其进行调用或调用stat它) )?

我无法真正考虑这个事实,因为我不知何故认为是否存在某些东西并且可以访问它,ls -a即使它本质上只是魔术/虚拟,也应该在其中列出

谁能解释这是如何工作的?是否存在符合POSIX的方式来使目录隐藏ls -a但仍可访问?你怎么做呢?

征服了

好吧,如何做到这一点很容易:ls从名为的syscall(或在Linux上,为libc函数)获取列表readdir切换到目录是通过单独的syscall完成的chdirstat与大多数其他文件操作一样,它也是一个不同的syscall。

简而言之,“此目录中有什么?” “访问此目录”和“访问此目录”是内核的完全独立的请求,因此可以对它们进行编程以使其工作不同。

因此,要创建一个不在其中的目录ls -a,您只需让内核从的结果中将其忽略readdir但是它仍然可以与chdir(etc.)一起使用,因为这是一个不同的syscall。

这与拥有您有权的目录没有什么不同+x,但不是 -r:您可以访问其中的文件和目录,cd进入其中的文件等,但是ls会失败。我相信其他事情也使用了这种安排,例如(这是从模糊内存中查找的,而没有查找它)AFS具有某种全局/afs名称空间,您可以在其中实质上通过cd“输入其名称”来连接到任何AFS服务器ls/afs不会显示世界上所有的服务器,虽然。我已经看到FUSE文件系统做了类似的事情(例如,cd连接到匿名FTP服务器)。

(我不确定zfs安排是否严格符合POSIX)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使ls显示隐藏文件,然后依次显示目录和常规文件

如何在ls模式匹配中包含隐藏文件?

用ls分组隐藏文件和目录

如何将*与目录中的隐藏文件进行匹配

如何隐藏。和..从ls

如何遍历包含文件和隐藏文件的目录

如何使用ls排除文件?

如何通过*将所有文件(包括隐藏文件)移动到父目录中

如何在 AmCharts 导出的 PDF 文件中隐藏文件目录?

如何在OS X中访问隐藏文件或系统文件

如何列出不带目录的文件并按名称过滤(ls选项)

有没有办法让ls仅显示某些目录的隐藏文件?

如何在单个调用中同时获取隐藏文件和非隐藏文件

“如何使用ls命令显示目录'/ sbin'中以'az'开头的所有文件/目录?”

如何从ls命令中排除目录

如何访问“系统卷信息”目录中的文件

如何从ls输出中动态排除文件?

当我使用“ ls -la”时如何在终端中隐藏链接文件夹的原始目录

是否可以忽略ls或文件中的特定文件或目录?

在仍然遵循目录符号链接的同时,如何使用长格式(-l)ls?

仅显示ls别名中的隐藏文件(点文件)

如何使用“ dir”显示“ ls”显示的隐藏文件就好了?

如何删除目录中除最新的 10 个隐藏文件夹之外的所有文件夹

如何对类似ls的文件列表进行排序?

ls -lh如何取整文件大小?

如何停止显示`ls`的长文件列表?

如何使“ ls”首先显示点文件?

如何获得ls文件类型的颜色?

ls如何排序文件名?