为什么无法读取目录内容?

-1 permissions

这里提到的所有文件名都是目录。

的权限/media/disk0744( drwxr--r--)。的权限/media/disk/directory0755( drwxr-xr-x)。无论如何,我不拥有这些目录。

为什么我可以ls /media/disk,但不可以ls /media/disk/directory?我的猜测是ls需要运行访问/media/disk,但这很愚蠢,因为如果我对文件具有读取访问权限(即如果r设置了),那么我应该能够读取该文件。

除了上面的问题之外,如果我正确地说问题是由于缺乏运行访问权限造成的,那么我想问为什么我说的很愚蠢,不是。

系统信息:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
Run Code Online (Sandbox Code Playgroud)

我认为提议的重复项并不能解释为什么这个功能并不愚蠢。

Mr *_*unz 5

您的/media/disk目录缺少组和“其他”的 执行位。

这意味着(恕我直言,以一种有点令人困惑的方式)您可以成功地从目录中读取(当设置了读取位时)并列出其内容,而您无法对其进行操作或输入它(通过cd),这包括列出其子目录只要权限掩码为 的内容744

如果您想访问某些特定的子目录而不授予对整个树的访问权限,那么只需删除读取访问权限但设置执行位即可:

$ su
# mkdir -p /tmp/parent/child
# chmod 711 /tmp/parent/
# chmod 755 /tmp/parent/child/
# touch /tmp/parent/child/test
# exit
$ ls /tmp/parent/
ls: cannot open directory '/tmp/parent/': Permission denied
$ cd /tmp/parent/
$ pwd
/tmp/parent
$ ls
ls: cannot open directory '.': Permission denied
$ ls child/
test
Run Code Online (Sandbox Code Playgroud)