权限 – 当目录权限为r–时,为什么没有-l的ls返回1

我已经阅读了thisthis,发现我的问题不同且更具体.

我理解以下几点.

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

从上面的2点开始,由于没有-l的ls不需要访问目录中文件的i节点,它应该成功列出文件名并返回0.

但是,当我在我的机器上尝试它时,列出了文件名,但是有一些警告,例如拒绝权限,返回代码为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

汉字基本上都谈到了被拒绝的许可

我的unix发行版是Linux 4.17.11-arch1

最佳答案
我怀疑在你的情况下,ls是ls –color = auto;在这种情况下,ls会尝试查找有关目录中包含的文件的信息,以确定要使用的颜色.

ls --color=no

应该列出目录而不抱怨.

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

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

command ls

要么

\ls

要删除ls的别名,请使用

unalias ls

转载注明原文:权限 – 当目录权限为r–时,为什么没有-l的ls返回1 - 代码日志