GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué las bibliotecas compartidas en Linux son ejecutables?

En realidad depende del ldd implementación. ldd suele ser un script, puede editarlo para ver dónde y por qué obtiene ese error.

En Ubuntu 10.04, ldd comprueba el read permiso solamente. Puede dar el error no es un ejecutable dinámico si el archivo no es un ELF (formato ejecutable y enlazable ). Las librerías aquí son todas -rw-r--r-- , por ejemplo

$ find /usr/lib -type f -name "libm*.so*" -ls
(...)
-rw-r--r--   1 root     root       216800 Feb 26 22:20 /usr/lib/libmp.so.3.1.16
-rw-r--r--   1 root     root        76728 Mar 14 04:23 /usr/lib/libmjpegutils-1.9.so.0.0.0
-rw-r--r--   1 root     root       134464 Jan 29  2010 /usr/lib/libm17n-core.so.0.3.0
-rw-r--r--   1 root     root       290480 Feb 17  2010 /usr/lib/libmtp.so.8.3.2

No es sorprendente querer un x acceso a una biblioteca compartida. El executable El modo es una convención que le da al sistema operativo otro nivel de control de derechos de acceso. El cargador de ejecutables controla ese acceso, para garantizar que el usuario pueda ejecutarlo, pero también para evitar errores (algunos scripts o programas no deberían ser ejecutados por algunas personas).

Esto podría extenderse a las bibliotecas compartidas por la misma razón, pero las bibliotecas compartidas no pueden ejecutarse por sí mismos, y son menos propensos a errores para ser usados ​​por accidente ). Por lo tanto, la necesidad es menos obvia (el r el acceso es suficiente).


De hecho, puede ejecutar muchas bibliotecas, vea, por ejemplo, qué sucede cuando escribe /lib/libc.so.6 en su shell en un sistema GNU/Linux reciente.


Linux
  1. Linux:¿por qué no funciona Setuid?

  2. ¿Bibliotecas gráficas 3d de Linux?

  3. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

  4. ¿Cómo mostrar todas las bibliotecas compartidas utilizadas por los ejecutables en Linux?

  5. Eliminando las bibliotecas compartidas de Linux

Permisos de Linux 101

Cómo solucionar el error "pacman:error al cargar bibliotecas compartidas" en Arch Linux

Cómo personalizar los entornos de usuario de Linux

Cómo enumerar las bibliotecas compartidas utilizadas por los ejecutables en Linux

Linux:¿por qué son tan grandes los verdaderos y los falsos?

¿Por qué la mayoría de los programas de Linux están escritos en C?