在Linux上工作了多年之后,我发现自己有一些空闲时间,因此我决定重温一些基础知识。因此,我重新阅读了有关权限的内容(无需检查源代码),以及有关文件夹的特殊情况,并提出了一种新的(至少对我来说...)考虑文件夹权限的方法(针对特定用户/组/其他):我想象一个文件夹有两个表,就像这样:
filename | inode
foo | 111
bar | 222
在读权限意味着可以阅读(列表)表的左栏中,写入权限对应于添加和删除条目表,和执行权限对应于能够从文件名到inode的转换; 即,您可以访问文件夹的内容。
我做了一些实验,结果都与我的“世界观”保持一致,但似乎无法避免一个结论:拥有权限的文件夹d-w-------
完全没有用。详细说明:您无法列出其内容,无法读取其中存在的任何文件(因为无法将名称转换为inode),不能删除或重命名或添加文件,因为这又意味着翻译,甚至不能添加硬链接(因为我想这是指添加名称和索引节点号,这意味着您将知道两者,这又又使您怀疑,这违反了取消执行权限的目的) 。当然,如果有是内部的一个这样的文件夹的文件,那么你就不能删除该文件夹或者,因为你不能删除其内容。
所以...我想问两个问题:
- 我的这个比喻是正确的,还是大错了?
- 不管以前的答案,有没有任何地方具有权限的文件夹描述是合适的情况呢?
mkdir foo ; chmod 200 foo ; touch foo/bar
我得到touch: cannot touch ‘foo/bar’: Permission denied
。即使foo / bar已经存在,也会发生这种情况。我正在bash(Arch Linux)中进行测试。