GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué los archivos .so son ejecutables?

Sospecho que probablemente sea solo por razones históricas.

La respuesta de BlueBomber probablemente sea históricamente correcta, pero en realidad no es necesaria para que los objetos compartidos sean ejecutables.

En mi sistema Ubuntu, no lo son. De los 30 /lib/*.so* y 600 /usr/lib/*.so* archivos, solo uno tiene permisos de ejecución, y eso probablemente sea solo un problema técnico.

El permiso de ejecución permite ejecutar un archivo a través de uno de los exec*() funciones; los archivos de objetos compartidos contienen código ejecutable, pero no se ejecutan de esa manera.

Por otro lado, en un sistema CentOS 5.7 al que tengo acceso, esos archivos son ejecutable; lo mismo es cierto en un sistema SPARC Solaris 9. (Sería interesante intentar desactivar los permisos ejecutables en algunos de esos archivos para ver si se rompe algo, pero no puedo hacerlo).

(¿Qué distribución de Linux estás usando?)

ACTUALIZACIÓN:

Esta respuesta a esta pregunta muestra un ejemplo (HP-UX) de un sistema donde realmente se requiere el bit de ejecución. Ese no parece ser el caso en Linux, donde algunas distribuciones configuran el bit de ejecución (probablemente por inercia histórica) y otras no. O tal vez algunos Linux realmente lo requieran.

Otro punto de datos:en mi sistema Ubuntu, intenté crear mi propio archivo de objeto compartido. El archivo "libfoo.so" generado se creó con permisos de ejecución, pero si manualmente chmod -x él, el programa que lo usa todavía funciona.

En cualquier caso, configurar el permiso de ejecución en *.so Los archivos son en su mayoría inofensivos (y ciertamente menos molestos que, por ejemplo, configurar el permiso de ejecución en los archivos de origen).

ACTUALIZACIÓN 2:

Como señala fwyzard en un comentario, algunos *.so los archivos realmente se pueden ejecutar. Por ejemplo, en mi sistema actual, ejecutando /lib/x86_64-linux-gnu/libc-2.27.so imprime información de versión para la biblioteca GNU C. /lib/x86_64-linux-gnu/libpthread-2.27.so se comporta de manera similar.


Linux
  1. ¿Probar si hay archivos que coincidan con un patrón para ejecutar un script?

  2. ¿Por qué Rm puede eliminar archivos de solo lectura?

  3. ¿Script para determinar si los archivos son imágenes?

  4. ¿Cuándo no lo son los archivos ejecutables?

  5. ¿Qué son los archivos .run?

Ejecutar archivos binarios en Linux

¿Por qué el encabezado del programa es ejecutable?

Encontrar archivos ejecutables usando ls y grep

¿Por qué los archivos EXE de Windows no funcionan en Linux?

¿Dónde se encuentran los archivos de configuración en WSL?

¿Por qué chmod -R 777 / es destructivo?