当目录权限为 r 时,为什么 ls 不带 -l 返回 1 -

当目录权限为 r 时,为什么 ls 不带 -l 返回 1 -

我读过了,发现我的问题不同而且更具体。

我的理解有以下几点。

  • 目录上的 +x 授予通过此特定目录访问文件 inode 的权限
  • 所使用的文件的元信息ls -l存储在其 i 节点中,但文件名不属于该文件

从上面2点来看,由于lswithout-l不需要访问目录中文件的i节点,所以应该成功列出文件名并返回0。

但是,当我在我的机器上尝试时,列出了文件名,但出现了一些警告,例如permission denied,并且返回码为1。

b03705028@linux7 [~/test] chmod 500 permission/
b03705028@linux7 [~/test] ls --color=no permission/
f1*
b03705028@linux7 [~/test] chmod 400 permission/
b03705028@linux7 [~/test] ls --color=no permission/
ls: 無法存取 'permission/f1': 拒絕不符權限的操作
f1
b03705028@linux7 [~/test] echo $0
bash

汉字基本上讲的是permission denied

我的 Unix 发行版是Linux 4.17.11-arch1

答案1

我怀疑ls在你的情况下是类似的别名ls --color=auto;在这种情况下,ls尝试查找有关目录中包含的文件的信息以确定要使用的颜色。

ls --color=no

应该列出目录而不抱怨。

如果它仍然抱怨,那么您可能正在使用另一个选项,例如-F--classify,它需要访问文件元数据(例如-F/查看文件类型)。--classify

为了确保您ls在不通过别名的情况下运行,请使用以下任一方法

command ls

或者

\ls

要删除 的别名ls,请使用

unalias ls

相关内容