Existe uma maneira de executar um arquivo binário executável no Linux que não tenha o bit de execução definido? chmod +x
não é uma opção.
Por exemplo, suas permissões podem ser r--r--r--
apenas.
A execução de scripts é possível sem definir o bit de execução e colocar um shebang passando a fonte para o intérprete, por exemplo, bash script.sh
ou python script.py
.
Então, existe algo assim execute abinaryfile
que carrega o código do objeto na memória e o executa?
Respostas:
Você pode usar /lib/ld*.so como intérprete ELF, da seguinte maneira:
O nome real difere de arquitetura para arquitetura. Alguns nomes incluem
/lib/ld-linux.so.2
,/lib/ld-linux-x86-64.so.2
e/lib/ld-2.7.so
. Você provavelmente pode encontrá-lo singularmente como/lib/ld*
.fonte
ld
é o vinculador / carregador do programa. Ele localiza e carrega as bibliotecas compartilhadas usadas pelo programa e depois as executa.ld-linux
lida com binários ELF./lib/ld-linux.so.2
não é executável (que é mesmo possível?).so
s executáveis podem ser carregados e issold-linux
é importante./lib64/ld-linux-x86-64.so.2
Não. Pelo menos, não da mesma maneira. Você ainda está executando um binário quando faz a coisa python. Python é + x. Você precisaria compilar algo que possa carregar um arquivo e executá-lo.
O TiCL deve fazer da sua resposta uma resposta, porque é o melhor caminho a percorrer.
fonte
O
exec
syscall do kernel do Linux falhaEACCES
se o arquivo não for executávelEnquanto você pode fazer
sh myprog.sh
, tentar executar o programa como./myprog.sh
não pode funcionar, desde quando você faz isso:./myprog.sh
exec
chamada do sistema do kernel do Linux, conforme explicado em: /programming/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on -a-primeira-linha-de-um-pyt / 40938801 # 40938801Isso pode ser verificado com
main.c
:e
myprog.sh
:Se
myprog.sh
não for executável,main
falha com:Testado no Ubuntu 17.10
gcc -std=c99
,.O POSIX 7 menciona que em:
Uma justificativa adicional pode ser encontrada em: /security/66550/unix-execute-permission-can-be-easily-bypassed-is-it-superfluous-or-whats-the
fonte