Ich habe ein gerootetes Telefon und habe mit Terminal Emulator herumgespielt. Ich habe versucht, ein einfaches Shell-Skript (test.sh) zu schreiben:
#!/bin/sh
echo "Hello, World!"
Dann öffnete ich den Terminal-Emulator, cd in das Verzeichnis, in dem sich mein Skript befand, und tippte:
./test.sh
und ich habe eine Fehlermeldung "Zugriff verweigert". Also habe ich versucht:
su
./test.sh
Irgendwie immer noch die Erlaubnis verweigert. Also habe ich versucht (noch als root):
chmod 775 test.sh
busybox chmod 775 test.sh
busybox chmod +X test.sh
Keiner der 3 gab Fehler, aber ./test.sh gab immer noch die Erlaubnis verweigert! Als letzten Ausweg habe ich es versucht
sh test.sh
Das hat am Ende funktioniert. Endlich.
Ich bin neugierig, warum die Berechtigung für mein eigenes Shell-Skript, das auf 775 geändert wurde, verweigert wurde, wenn es als Root ausgeführt wurde. Wie kann die Berechtigung für irgendetwas als root verweigert werden? Wie kann ich das beheben und ./test.sh zum Laufen bringen?
Ausführungsberechtigungen auf der SDCard sind aus diesem Grund gesperrt.
Sieh dir das an:
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,**noexec**,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
Der mit zwei Sternchen hervorgehobene noexec- Teil dieser Zeile ist der Schlüssel, um die Ausführung von Skripten/Binärdateien von der SD-Karte zu verhindern.
Habe ein komisches Gefühl, dass dies schon einmal beantwortet wurde ... deja-vu
Eldarerathis
noexec
standardmäßig mit dem Flag mountet.Dank Memes
mirabilos
busybox chmod +X test.sh
falsch ist, möchten Sie+x
(Kleinbuchstaben) verwenden. Wie auch immer,775
am Ende ist es dasselbe, also ist es dasnoexec
Problem.