In realtà dipende dal ldd
implementazione. ldd
di solito è uno script, puoi modificarlo per vedere dove e perché ottieni quell'errore.
Su Ubuntu 10.04, ldd
verifica la presenza di read
solo permesso. Potrebbe dare l'errore non è un eseguibile dinamico se il file non è un ELF (Executable and Linkable Format ). Le librerie qui sono tutte -rw-r--r--
, ad esempio
$ 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
Non è scioccante desiderare un x
accesso per una libreria condivisa. Il executable
mode è una convenzione che offre al sistema operativo un altro livello di controllo dei diritti di accesso. Il caricatore eseguibile controlla tale accesso, per garantire che l'utente possa eseguirlo, ma anche per prevenire errori (alcuni script o programmi non dovrebbero essere eseguiti da alcune persone).
Questo potrebbe essere esteso alle librerie condivise per lo stesso motivo, ma le librerie condivise non possono funzionare da soli e sono meno soggetti a errori per essere utilizzati accidentalmente ). Quindi la necessità è meno ovvia (il r
l'accesso è sufficiente).
Puoi effettivamente eseguire molte librerie, vedi ad esempio cosa succede quando digiti /lib/libc.so.6
nella tua shell su un sistema GNU/Linux recente.