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