ENOEXEC on CIFS in SUSE

I am trying to execute a program on a CIFS mounted partition in SUSE 11.1. Whenever I try executing it, I get a “could not execute binary file” error. Using strace, I was able to determine that the shell was getting a ENOEXEC error on execve(). I have verified that the binary does have the proper ELF magic number. There’s also plenty of disk space on every partition, so that’s not the problem either.

I can copy the file from the share to my home directory and run the executable, and I can run it remotely from RHEL 6.2, but for some reason it isn’t working on SUSE. I have also verified that a newly compiled hello world will not run on the remote partition.

I’ve verified that the files are not being corrupted when they are transferred to the remote partition, and that I have execute permissions on the share. The partition is not mounted as noexec, so that’s not the problem either. I’ve even tried running the program on SUSE using RHEL’s evironment.

I do not have shell access to the remote machine.

I’m pretty thoroughly stumped, so any help would be greatly appreciated.

Edit

I’ve also tried running ldd on the executable on the remote partition, and it kicks back with “not a dynamic executable.” Again, this works fine on the local partition and lists valid shared libraries.

Edit 2

Apparently it’s an issue with the share being mounted with the directio option. Finally got access to fiddle with these, so maybe now I can figure out why.

Answer

It certainly sounds like the share is mounted noexec, even if it’s not listed. Is the share mounted with the user or users option? These options implicitly include noexec.

Attribution
Source : Link , Question Author : Dan Albert , Answer Author : NathanG

Leave a Comment