http://www.perlmonks.org?node_id=1061922

Don Coyote has asked for the wisdom of the Perl Monks concerning the following question:

This may not be a perl specific thing. But I was not sure and thought best to mention in case. I call a chmod 0 script by itself and by perl in my user shell (bash). And fails as expected. I set-uid and still fails which I think is right as mode is 4000.

Now I set mode back to 0 and pass the script in as an argument to perl, in my user environment this fails, but under sudo the script executes.

I am not sure but is this working properly? being mode 0 I would have thought the script would not be executable whether or not set-uid. I have included most of my dabbling for reference, the interesting calls are closer to the bottom of the script.

$ login Ubuntu LTS 10.04.4 263 updates avaliable 238 are security updates hilarious@hilarious-desktop:~/Documents$ perl -v This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi hilarious@hilarious-desktop:~/Documents$ mkdir ./messin $ cd ./messin $ touch ./hmm $ ls hmm $ ls -l ./hmm -rw------- 1 hilarious hilarious 0 2013-11-10 17:36 ./hmm $ chmod 0200 ./hmm $ ls -l ./hmm --w------- 1 hilarious hilarious 0 2013-11-10 17:36 ./hmm $ emacs ./hmm $ emacs -nw ./hmm $ emacs -nw ./hmm $ chmod 0000 ./hmm $ ls -l ./hmm ---------- 1 hilarious hilarious 0 2013-11-10 17:36 ./hmm $ emacs -nw ./hmm $ chmod 0200 ./hmm $ chmod 0400 ./hmm $ emacs -nw ./hmm $ chmod 0600 ./hmm $ emacs -nw ./hmm $ ls -l ./hmm -rw------- 1 hilarious hilarious 92 2013-11-10 17:57 ./hmm $ ./hmm bash: ./hmm: Permission denied $ sudo ./hmm [sudo] password for hilarious: sudo: ./hmm: command not found $ su hilarious Password: Warning: your password will expire in 4 days $ who am i hilarious pts/1 2013-11-10 17:35 (:0.0) $ ./hmm Can't open perl script "./hmm": Permission denied $ chmod 5 ./hmm $ ./hmm bash: ./hmm: Permission denied $ ls -l ./hmm -------r-x 1 hilarious hilarious 92 2013-11-10 17:57 ./hmm $ chmod 500 ./hmm $ ./hmm hello world! $ chmod 005 ./hmm $ ./hmm bash: ./hmm: Permission denied $ sudo ./hmm hello world! $ who am i hilarious pts/1 2013-11-10 17:35 (:0.0) $ sudo who am i hilarious pts/1 2013-11-10 17:35 (:0.0) $ cmod 007 ./hmm No command 'cmod' found, did you mean: Command 'qmod' from package 'gridengine-client' (universe) Command 'chmod' from package 'coreutils' (main) Command 'mod' from package 'monodoc-base' (main) cmod: command not found $ chmod 007 ./hmm $ emacs -nw ./hmm $ ./hmm bash: ./hmm: Permission denied $ sudo ./hmm hello world! $ chmod 0 ./hmm $ sudo ./hmm sudo: ./hmm: command not found $ sudo perl ./hmm hello world! $ perl ./hmm Can't open perl script "./hmm": Permission denied $ ls -l ./hmm ---------- 1 hilarious hilarious 92 2013-11-10 17:57 ./hmm $ chmod 4000 ./hmm $ ./hmm bash: ./hmm: Permission denied $ perl ./hmm Can't open perl script "./hmm": Permission denied $ sudo perl ./hmm Args must match #! line at ./hmm line 1. $ sudo perl -l ./hmm Effective UID cannot exec script $ sudo chmod 0 ./hmm $ sudo perl ./hmm hello world!