O Debian mudou isso em 1997, na versão 2.2 da Política (veja # 7129 , embora isso não dê muitos detalhes e eu não tenha encontrado nenhuma outra discussão); a razão é dada assim nas versões atuais da Política :
Shared libraries should not be installed executable, since the dynamic linker does not require this and trying to execute a shared library usually results in a core dump.
Por isso, trata-se de gerenciar as expectativas e o princípio da menor surpresa: não marque algo como executável se a execução não for útil. No Debian e suas derivadas, as únicas bibliotecas que deveriam ser executáveis são aquelas que fazem algo sensato quando executadas (como a biblioteca C, libpthread
e, é claro, o vinculador dinâmico).
No FreeBSD e no OpenBSD, pelo menos, as bibliotecas compartilhadas do sistema operacional não são executáveis. No OpenBSD isto também é verdade para bibliotecas compartilhadas em /usr/local
. No FreeBSD, bibliotecas compartilhadas em /usr/local
de portas e pacotes são geralmente executáveis. (Agradecimentos a JdeBP pelo informações relacionadas ao BSD .)
No Linux, não creio que haja alguma consideração de segurança em particular (pelo menos, não em um sistema Linux básico), porque executar uma biblioteca não requer que seu bit executável seja definido (você pode executá-la usando o linker dinâmico).