GNU/Linux >> Znalost Linux >  >> Linux

Proč jsou sdílené knihovny v Linuxu spustitelné?

Ve skutečnosti to závisí na ldd implementace. ldd je obvykle skript, můžete jej upravit, abyste viděli, kde a proč se tato chyba zobrazuje.

Na Ubuntu 10.04, ldd zkontroluje read pouze povolení. Může způsobit, že chyba není dynamický spustitelný soubor pokud soubor není ELF (Spustitelný a propojitelný formát ). Všechny knihovny zde jsou -rw-r--r-- , například

$ 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

Není šokující chtít x přístup ke sdílené knihovně. executable režim je konvence, která dává OS další úroveň řízení přístupových práv. Spustitelný zavaděč řídí tento přístup, aby se zajistilo, že jej uživatel může spustit, ale také aby se zabránilo chybám (některé skripty nebo programy by někteří lidé neměli spouštět).

Ze stejného důvodu by to mohlo být rozšířeno na sdílené knihovny – ale sdílené knihovny nelze spustit samy o sobě a jsou méně náchylné k chybám, aby byly náhodně použity ). Potřeba je tedy méně zřejmá (r přístup stačí).


Ve skutečnosti můžete spustit spoustu knihoven, podívejte se například, co se stane, když zadáte /lib/libc.so.6 ve vašem shellu na nejnovějším systému GNU/Linux.


Linux
  1. Linux – Proč Setuid nefunguje?

  2. Linuxové 3D grafické knihovny?

  3. Úvod do sdílených knihoven Linuxu (Jak vytvořit sdílené knihovny)

  1. Jak zobrazit všechny sdílené knihovny používané spustitelnými soubory v Linuxu?

  2. Odstraňování sdílených linuxových knihoven

  3. Jaké jsou nevýhody linuxových front zpráv?

  1. Jak přizpůsobit uživatelská prostředí Linuxu

  2. Proč chránit linuxové jádro před uživatelem root?

  3. Proč jsou soubory .so spustitelné?