s1l*_*v3r 12 filesystems zfs posix dot-files
例如,在 FreeBSD 和 ZoL 下的 ZFS 中.zfs
,每个 zpool 挂载点内部都有一个魔法目录,您可以使用zfs set snapdir=visible
该.zfs
目录使该目录可见。
让我好奇的是:如果该设置设置为“隐藏”,那么.zfs
目录实际上如何从ls -a
或 shell 路径自动完成的输出中隐藏,同时仍然可以访问(您仍然可以访问cd
它或调用stat
它)?
我无法真正理解这个事实,因为我不知何故认为如果某些东西存在并且可以访问它应该被列出ls -a
- 即使它本质上只是魔法/虚拟。
任何人都可以解释这是如何工作的吗?是否有符合 POSIX 标准的方式来拥有一个隐藏ls -a
但仍可访问的目录?你怎么做呢?
der*_*ert 10
嗯,如何做很简单:ls
从名为readdir
. 更改为目录是通过单独的系统调用完成的,chdir
. stat
也是一个不同的系统调用,大多数其他文件操作也是如此。
简而言之,“这个目录中有什么?” 和“访问这个目录”是内核的完全独立的请求——因此它们可以被编程为以不同的方式工作。
因此,为了不出现在目录中ls -a
,你只需要在内核从结果忽略它readdir
。但它仍然适用于chdir
(等),因为这是一个不同的系统调用。
这与拥有您拥有+x
权限的目录并没有太大不同,但不是 -r
:您可以访问其中的文件和目录,cd
进入其中等,但ls
会失败。我相信其他东西也使用了这种安排——例如(这是从模糊记忆中获得的,无需查找)AFS 有一种全局/afs
命名空间,您可以在其中基本上通过cd
输入它的名称来连接到任何 AFS 服务器;但是,ls
on/afs
不会显示世界上所有的服务器。我见过 FUSE 文件系统做类似的事情(例如,cd
连接到匿名 FTP 服务器)。
(我不确定zfs的安排是否严格遵守POSIX)。
归档时间: |
|
查看次数: |
1526 次 |
最近记录: |