ls是否尝试访问子目录?

时间:2019-03-09 17:31:55

标签: linux bash ubuntu unix

我正在尝试了解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中得到。

有人可以向像我这样的新手解释为什么会这样吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您拥有r的{​​{1}}权限,因此可以阅读其中的内容。 (目录只是一个列出其内容的文件,就像现实世界中的目录一样。)因此,列出test1是完全正常的。

但是,您没有test2的输入(x)权限,因此无法进入目录查看其内容。因此,您仅知道存在名为test1的文件,但不知道它是什么。

在许多操作系统上,test2的默认设置是在交互使用时使用不同的颜色来区分不同类型的文件,因此ls将尝试访问ls,以便它可以使用正确的颜色打印它,但是由于您没有test1/test2的输入权限,因此将失败。

在我的操作系统上,默认情况下将test1设置为不打印任何颜色或其他指示符,因此,我得到的ls完全没有错误。相反,如果我添加任何需要输入test2的选项,我的test1实际上将根本不打印任何内容!