我正在尝试了解UNIX中的文件权限。我在Ubuntu 18.10上使用终端。假设我的主目录包含test/test1/test2
。
我cd test
,然后键入chmod a=r *
。然后,当我输入cd test1
时得到bash: cd: test1: Permission denied
。很好,这就是应该发生的事情。
但是,当我输入ls test1
时,我得到ls: cannot access 'test1/test2': Permission denied
并在下一行test2
中得到。
有人可以向像我这样的新手解释为什么会这样吗?谢谢!
答案 0 :(得分:2)
您拥有r
的{{1}}权限,因此可以阅读其中的内容。 (目录只是一个列出其内容的文件,就像现实世界中的目录一样。)因此,列出test1
是完全正常的。
但是,您没有test2
的输入(x
)权限,因此无法进入目录查看其内容。因此,您仅知道存在名为test1
的文件,但不知道它是什么。
在许多操作系统上,test2
的默认设置是在交互使用时使用不同的颜色来区分不同类型的文件,因此ls
将尝试访问ls
,以便它可以使用正确的颜色打印它,但是由于您没有test1/test2
的输入权限,因此将失败。
在我的操作系统上,默认情况下将test1
设置为不打印任何颜色或其他指示符,因此,我得到的ls
完全没有错误。相反,如果我添加任何需要输入test2
的选项,我的test1
实际上将根本不打印任何内容!