Existe-t-il un moyen d'exécuter un fichier binaire exécutable sous Linux qui n'a pas le bit d'exécution défini? chmod +x
n'est pas une option.
Par exemple, ses autorisations peuvent être r--r--r--
uniquement.
L'exécution de scripts est possible sans définir le bit d'exécution et mettre un shebang en passant la source à l'interpréteur, par exemple bash script.sh
ou python script.py
.
Y a-t-il quelque chose comme execute abinaryfile
ça qui chargera le code objet en mémoire et l'exécutera?
Réponses:
Vous pouvez utiliser /lib/ld*.so comme interpréteur ELF, comme ceci:
Le nom réel diffère d'une architecture à l'autre. Certains noms incluent
/lib/ld-linux.so.2
,/lib/ld-linux-x86-64.so.2
et/lib/ld-2.7.so
. Vous pouvez probablement le trouver au singulier/lib/ld*
.la source
ld
est l'éditeur de liens / chargeur de programme. Il recherche et charge les bibliothèques partagées utilisées par le programme, puis l'exécute.ld-linux
gère les fichiers binaires ELF./lib/ld-linux.so.2
n'est pas exécutable (est-ce même possible?).so
peuvent être chargés, etld-linux
c'est assez important./lib64/ld-linux-x86-64.so.2
Non, du moins, pas de la même manière. Vous exécutez toujours un binaire lorsque vous faites la chose python. Python est + x. Vous auriez besoin de compiler quelque chose qui puisse charger un fichier et l'exécuter.
TiCL devrait faire de sa réponse une réponse car c'est la meilleure façon de procéder.
la source
L'
exec
appel système du noyau Linux échoueEACCES
si le fichier n'est pas exécutableBien que vous puissiez le faire
sh myprog.sh
, essayer d'exécuter le programme./myprog.sh
ne peut pas fonctionner, car lorsque vous faites cela:./myprog.sh
exec
appel système du noyau Linux comme expliqué sur: /programming/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on -la-première-ligne-d'un-pyt / 40938801 # 40938801Cela peut être vérifié avec
main.c
:et
myprog.sh
:Si
myprog.sh
n'est pas exécutable,main
échoue avec:Testé dans Ubuntu 17.10,
gcc -std=c99
.POSIX 7 mentionne que:
Des explications supplémentaires peuvent être trouvées sur: /security/66550/unix-execute-permission-can-be-easily-bypassed-is-it-superfluous-or-whats-the
la source