执行目录时权限被拒绝

执行目录时权限被拒绝

我一直在 Linux 文件系统中使用 Docker 和 Kubernetes,并尝试执行可执行文件(结果是一个目录)。
我会收到“权限被拒绝”错误,这让我认为我搞乱了权限,但当我检查时,一切都是正确的。
后来我注意到这是我试图执行的目录。

我的问题是,在这种情况下出现“权限被拒绝”错误而不是“无法执行目录”或类似的错误有多合理?

我对 Linux 的经验不是很丰富,因此这个问题对你来说似乎很新手,但预先感谢你的回答。

发行版:Debian 10。FS:ext4

答案1

“权限被拒绝”是 EACCES 错误代码,如果文件权限位未授予您所请求的访问权限,您通常会收到该错误代码。

你是对的,像 EISDIR(“是一个目录”)这样的东西可能更有意义。对于更一般的情况,例如使用 FIFO,您需要其他东西,也许 ENOEXEC 可以做,即使它的错误消息现在引用文件格式(Linux 中的“Exec 格式错误”)。这是您获得的常规文件,您有足够的权限,但操作系统无法识别该文件。

我不认为“不是常规文件”有标准错误。

无论如何它是在 POSIX 中指定为 EACCES:

[EACCES]。
新的过程映像文件不是常规文件,并且该实现不支持执行该类型的文件。

在不知道选择背后是否有真正的逻辑原因的情况下,我建议在这种情况下的一个常见原因是,第一次就是这样做的,复制到所有其他系统,然后保留以实现兼容性。它不可能是唯一不完全 100% 匹配的错误代码。

相关内容