我正在尝试了解 unix/linux 中的文件和目录权限。
我想我已经有了大概的想法,如果我愿意的话
cat ~/foo/bar/text.txt
我需要、、x+r
的许可,以及的许可。~
~/foo
~/foo/bar
r
~/foo/bar/text.txt
但假设我没有x
权限~/foo/bar
,并且不知何故我当前的目录是~/foo/bar
(可能是root
用户su user
在那里创建的),假设我在那里输入
cat text.txt
rwx
从我的测试来看,即使我有权限,它也说我没有权限text.txt
。
所以我的问题是:当我打字时
cat text.txt
系统是否真的解释cat ./text.txt
并检查当前目录权限? (我认为我在路径中没有提到的目录不会被检查权限,但也许当前的目录也不会被检查?)
因此,在这种情况下(我当前的目录是~/foo/bar
并且我想做cat text.txt
),权限~/foo
并不重要,但权限却~/foo/bar
重要吗?
答案1
文件打开操作确实需要读取其目录条目的属性和物理位置,这些属性和物理位置存储在当前目录(文件)中。
这就是您遇到许可问题的原因。
否则,您的假设是正确的,系统仅访问指定的路径。sudo
如果您只是授予x
对本地目录的访问权限,这将使该文件在您的示例中可访问。
r
请注意,检索目录条目不需要该权限,但列出其内容需要该权限。