Fla*_*ien 6 linux filesystems acl file-permissions
在 Linux/Unix 文件系统上,我理解为什么您需要父文件夹的执行权限来读取或写入文件:执行权限使您可以访问文件上的 inode,没有它,您将永远无法访问文件的内容。
但是,对于重命名文件(实际上,甚至是删除),您只需要更改列表中文件的名称,这不需要访问 inode。那么为什么重命名文件需要执行位,写权限就足够了?
这似乎与读取访问不对称:使用r--
权限,您可以ls
在目录上执行操作并访问该目录中的文件名列表。您不需要执行,因为您没有访问 inode。同样,使用-w-
,您应该能够更改文件名列表(您也不需要访问 inode),但您不能,为什么?
目录执行权限的含义是能够在该目录中查找文件名。当然,成功查找文件名会产生对 inode 编号的引用,但执行权限与 inode 本身无关。
没有目录的执行权限,您不能统计、打开、重命名、删除或下降到该目录内的子目录。您唯一能做的就是查看存在哪些文件名的列表,然后仅当您具有读取权限(读取但不执行是目录的一组奇怪权限)。
考虑您是否rw-
在目录上。您知道foo
该目录中存在文件名。为了删除它,您需要查找它,您甚至需要访问 inode(以减少其链接数)。就此而言,您需要访问 inode 以判断它是否是目录(因为如果它是目录,则unlink
应该失败并rmdir
应该成功,如果它不是目录,则相反)。但是你查不出来。
归档时间: |
|
查看次数: |
9998 次 |
最近记录: |