bash: ./a.out: Permission denied

Bryn M. Reeves bmr at redhat.com
Wed Oct 19 17:20:06 UTC 2011


On 10/19/2011 06:08 PM, Joe Zeff wrote:
> On 10/19/2011 09:50 AM, shailesh wrote:
>> when i try to run compiled c program ("./a.out") get error
>> bash: ./a.out: Permission denied
>
> Files aren't automatically executable under Linux.
>
> chmod u+x a.out
> ./a.out
>
> will get you what you want.

gcc (well, strictly speaking it's ld but called by gcc) normally gives 
executable output files exec permissions when compiling regardless of umask:

$ umask 0002; echo -ne '#include <stdio.h>\nint main(int argc, char 
**argv)\n{\n\tprintf("%s\\n", "Hello World!");\n}' > x.c; strace -f gcc 
x.c 2>&1 | grep chmod
[pid 11229] chmod("a.out", 0775)        = 0

Getting EACCESS on a freshly compiled binary often implies that the file 
system doesn't allow executable permissions - either it's mounted with 
noexec, SELinux is preventing the exec or the file system does not 
support executable permissions.

Are you using removable/network storage? What's does mount say?

Regards,
Bryn.


More information about the users mailing list