На самом деле это зависит от lddреализации. lddобычно это скрипт, вы можете отредактировать его, чтобы увидеть, где и почему вы получаете эту ошибку.
В Ubuntu 10.04 lddпроверяет readтолько разрешение. Это может дать ошибку не динамический исполняемый файл, если файл не является ELF ( Исполняемый и связываемый формат ). -rw-r--r--Например, все это - libs
$ 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
Не шокирует желание получить xдоступ к общей библиотеке. executableРежим представляет собой соглашение , что дает OS другой уровень контроля прав доступа. Исполняемый загрузчик контролирует этот доступ, чтобы гарантировать, что пользователь может выполнить его, но также и для предотвращения ошибок (некоторые сценарии или программы не должны выполняться некоторыми людьми).
Это может быть распространено на разделяемые библиотеки по той же причине - но разделяемые библиотеки не могут запускаться сами по себе и менее подвержены ошибкам, которые могут быть использованы случайно ). Таким образом, необходимость менее очевидна ( rдоступ достаточен).