Run downloaded shell command without root? My phone is a Galaxy S3, not rooted.  I have "ES File Explorer" and "Terminal Emulator" installed.

I downloaded an Android build of 'wget', intending to execute it from the Terminal Emulator app.  The file currently exists in
/storage/sdcard0/Download (which is an internal partition, not a physical SD card) as:

-rw-rw-r-- root sdcard_rw 241974 2016-03-11 wget


./wget gives Permission denied.  chmod o+x wget gives "Bad mode"; this is apparently because Android's chmod only accepts octal digits; chmod 665 wget gives "Operation not permitted".  I can copy the file with "cp", so the filesystem is writable.

Other Q&amp;A's here give several possible reasons for chmod failing on Android.  One is SD cards formatted with FAT which do not support permission bits; but as I say this is not actually an SD card. Another is the filesystem being mounted with "noexec".  My Android/Linux knowledge is way too lacking to check such things.

Is Android blocking me from executing wget by design? Is there a way to execute it without rooting my phone?
Yes, this is by design.  You can't execute binaries from the SD card without system or superuser privileges (and remounting it without the noexec option) because otherwise apps could just download and execute malicious code at will.  In older versions of Android the SD card also did not have emulated permissions so chmod would naturally fail.

Some devices/older versions of Android might allow execution from /data/local/tmp/, so you could try putting it there.  Otherwise, you'll probably need root.