SUSE 中 CIFS 上的 ENOEXEC

SUSE 中 CIFS 上的 ENOEXEC

我正在尝试在 SUSE 11.1 中 CIFS 挂载分区上执行一个程序。每当我尝试执行它时,我都会收到“无法执行二进制文件”错误。使用 strace,我能够确定 shell 在 execve() 上收到 ENOEXEC 错误。我已经验证了二进制文件确实具有正确的 ELF 魔数。每个分区上都有足够的磁盘空间,所以这也不是问题。

我可以将文件从共享复制到我的主目录并运行可执行文件,也可以从 RHEL 6.2 远程运行它,但由于某种原因,它无法在 SUSE 上运行。我还验证了新编译的 hello world 不会在远程分区上运行。

我已经验证了文件在传输到远程分区时没有被损坏,并且我对共享具有执行权限。该分区未以 noexec 方式挂载,因此这也不是问题所在。我甚至尝试使用 RHEL 环境在 SUSE 上运行该程序。

我没有远程机器的 shell 访问权限。

我完全被难住了,所以非常感激任何帮助。

编辑

我还尝试在远程分区上的可执行文件上运行 ldd,但它会返回“不是动态可执行文件”。同样,这在本地分区上运行良好,并列出了有效的共享库。

编辑2

显然,这是使用 directio 选项安装共享时出现的问题。终于可以摆弄这些了,所以现在我可能可以找出原因了。

答案1

听起来确实像是共享已安装禁止执行,即使没有列出。共享是否已安装用户或者用户选项?这些选项隐含地包括禁止执行

答案2

文件实用程序对可执行文件说了什么?换句话说,file PATH打印了什么,其中 PATH 是可执行文件的路径?

相关内容