Por que os arquivos .so são executáveis? [duplicado]

5

Por que os arquivos .so em /lib têm permissão 755 e não 644 no Linux? Isso parece estranho

De acordo com link , parece que o glibc antigo. No meu sistema embutido /lib/libc.so.6, até a permissão é de 644.

    
por Daniel YC Lin 17.01.2013 / 17:00

2 respostas

7

Eu suspeito que seja provavelmente apenas por razões históricas.

A resposta do BlueBomber provavelmente está historicamente correta, mas na verdade não é necessária para que objetos compartilhados sejam executáveis.

No meu sistema Ubuntu, eles não são; dos 30% dos arquivos/lib/*.so* e 600 /usr/lib/*.so* , apenas um tem permissões de execução, e isso provavelmente é apenas uma falha.

A permissão de execução permite que um arquivo seja executado por meio de uma das funções exec*() ; arquivos de objetos compartilhados contêm código executável, mas eles não são executados dessa maneira.

Por outro lado, em um sistema CentOS 5.7 que eu tenho acesso, esses arquivos são executáveis; o mesmo é verdade em um sistema SPARC Solaris 9. (Seria interessante tentar desativar as permissões executáveis em alguns desses arquivos para ver se ele quebra alguma coisa, mas não consigo fazer isso.)

(Qual distribuição Linux você está usando?)

ATUALIZAÇÃO:

Esta resposta para esta questão mostra um exemplo (HP-UX) de um sistema onde o bit de execução é realmente necessário. Isso não parece ser o caso do Linux, onde algumas distribuições definem o bit de execução (provavelmente fora da inércia histórica) e outras não. Ou talvez alguns Linuxes realmente precisem disso.

Outro ponto de dados: No meu sistema Ubuntu, eu tentei criar meu próprio arquivo de objeto compartilhado. O arquivo "libfoo.so" gerado foi criado com permissões de execução, mas se eu manualmente chmod -x , o programa que o usa ainda funciona.

Em qualquer caso, a configuração da permissão de execução em *.so files é Mostly Harmless (e certamente menos irritante que, digamos, definir permissão de execução em arquivos de origem).

    
por 17.01.2013 / 17:33
1

Se eu entendi sua pergunta, você está perguntando por que arquivos de objetos compartilhados têm permissões de execução, e isso é porque esses são arquivos de biblioteca que devem ser vinculados, e o código que eles contêm deve ser executado.

Referência:

  1. link
por 17.01.2013 / 17:28

Tags