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.