This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Empty file without "x" permission is successfully executable on Cygwin
On Mon, 5 Aug 2019 18:18:52, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin" wrote:
> Hi,
>
> Please consider the following shell session:
>
> $ cat dummy.c
> #include <stdio.h>
>
> int main()
> {
> return 0;
> }
> $ gcc -o dummy dummy.c
> $ mv dummy.exe dummy
> $ ./dummy
> $ echo $?
> 0
> $ chmod a-x dummy
> $ ./dummy
> -bash: ./dummy: Permission denied
> $ rm dummy
> $ touch dummy
> $ ./dummy
> $ echo $?
> 0
>
> So Cygwin lets the shell to execute a zero-sized file regardless of
> the "x" perm ...
zero-sized? Irrelevant.
[snip]
> Is that expected? On Unix, an empty file can only be executed (exit
> code 0) if there's the "x" permission granted.
Yes, Cygwin != Linux.
64-@@ echo date > dummy
64-@@ ls -l dummy
-rw-r--r-- 1 Henri None 5 Aug 6 08:01 dummy
64-@@ ./dummy
Tue Aug 6 08:01:19 CEST 2019
64-@@ dash
$ ./dummy
Tue Aug 6 08:01:38 CEST 2019 <==== (execution by /bin/sh)
$ mv /bin/sh /bin/OOS
$ ls -l /bin/sh.exe
ls: cannot access '/bin/sh.exe': No such file or directory
$ ./dummy
dash: 4: ./dummy: not found <==== attempted to execute "script" using /bin/sh
Also study:
https://stackoverflow.com/questions/7268437/bash-script-execution-with-and-without-shebang-in-linux-and-bsd
( Bash script execution with and without shebang in Linux and BSD )
and
http://www.faqs.org/faqs/unix-faq/faq/part3/section-16.html
Henri
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple