Czy istnieje sposób na uruchomienie wykonywalnego pliku binarnego pod Linuksem, który nie ma ustawionego bitu wykonania? chmod +x
nie jest opcją.
Np. Uprawnienia mogą być r--r--r--
tylko.
Wykonywanie skryptów jest możliwe bez ustawiania bitu wykonania i wstawiania shebang poprzez przekazanie źródła do tłumacza, np . bash script.sh
Lub python script.py
.
Czy jest coś takiego execute abinaryfile
, który załaduje kod obiektu do pamięci i uruchomi go?
Odpowiedzi:
Możesz użyć /lib/ld*.so jako interpretera ELF, np .:
Rzeczywista nazwa różni się w zależności od architektury. Niektóre nazwy należą
/lib/ld-linux.so.2
,/lib/ld-linux-x86-64.so.2
i/lib/ld-2.7.so
. Prawdopodobnie można go znaleźć osobno jako/lib/ld*
.źródło
ld
to program do łączenia / ładowania programów. Wyszukuje i ładuje biblioteki współdzielone używane przez program, a następnie wykonuje je.ld-linux
obsługuje pliki binarne ELF./lib/ld-linux.so.2
nie jest wykonywalny (czy to w ogóle możliwe?).so
można załadować tylko pliki wykonywalne ild-linux
jest to trochę ważne./lib64/ld-linux-x86-64.so.2
Nie. Przynajmniej nie w ten sam sposób. Nadal wykonujesz plik binarny, kiedy wykonujesz zadanie w Pythonie. Python to + x. Musisz skompilować coś, co może załadować plik i wykonać go.
TiCL powinien udzielić odpowiedzi, ponieważ jest to najlepsza droga.
źródło
exec
Syscall jądra Linux nie zeEACCES
jeśli plik nie jest wykonywalnyChociaż możesz to zrobić
sh myprog.sh
, próba uruchomienia programu, ponieważ./myprog.sh
nie może działać, ponieważ kiedy to zrobisz:./myprog.sh
exec
wywołanie systemowe jądra systemu Linux, jak wyjaśniono na stronie : /programming/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on -the-first-line-of-a-pyt / 40938801 # 40938801Można to zweryfikować za pomocą
main.c
:i
myprog.sh
:Jeśli
myprog.sh
nie jest wykonywalny,main
kończy się niepowodzeniem z:Testowane w Ubuntu 17.10,
gcc -std=c99
.POSIX 7 wspomina, że w:
Dalsze uzasadnienie można znaleźć na stronie : /security/66550/unix-execute-permission-can-be-easily-bypassed-is-it-superfluous-or-whats-the
źródło