我在Linux文件系统中使用了Docker和Kubernetes,并试图执行一个可执行文件(原来是一个目录)。
我会得到一个“权限拒绝”错误,这使我认为我搞砸了权限,但当我检查它时,一切都是正确的。
后来,我注意到这是我试图执行的目录。
我的问题是,在这种情况下出现“拒绝权限”错误,而不是“无法执行目录”或类似的错误,有多合理?
我在Linux方面不是很有经验,所以这个问题对你来说可能是个新手,但是事先谢谢你的回答。
发行版: Debian 10. FS: ext4
发布于 2023-01-17 13:58:22
“权限拒绝”是EACCES错误代码,如果文件权限位不授予您所请求的访问权限,则通常会得到该错误代码。
您说得对,在这里,像EISDIR (“是一个目录”)这样的东西可能更有意义。对于更一般的情况,例如使用FIFO,您可能需要一些其他的东西,也许ENOEXEC可以这样做,尽管它的错误消息现在引用的是文件格式(Linux中的“Exec格式错误”)。它是您获得的一个常规文件,您有足够的权限,但操作系统不认识。
我不认为“非常规文件”有标准错误。
不管怎么说,是在POSIX中指定为EACCES:
EACCES。新进程映像文件不是常规文件,并且实现不支持其类型文件的执行。
在不知道选择背后是否有真正的逻辑原因的情况下,我建议在这种情况下的一个通常的原因是,它是第一次这样做的,复制到所有其他系统,然后保持兼容性。它不太可能是唯一不完全匹配的错误代码。
https://unix.stackexchange.com/questions/732099
复制相似问题