Неисполняемые общие объекты работают нормально, но библиотеки, помеченные как исполняемые, также могут быть запущены как автономные программы.
Итак, какой смысл устанавливать этот х?
Нет, если вы не хотите, чтобы они испускали версию или другую информацию
Должны ли все библиотечные упаковщики делать это?
нет
Что произойдет, если я буду использовать dlopen () совместно используемую библиотеку с разрешениями 0644?
Вы получите новый дескриптор общего объекта (при условии, что файл доступен для чтения и т. Д.) ... бит exec не влияет на это
Относительно того, почему библиотеки, которые нельзя использовать в качестве автономных исполняемых файлов, по-прежнему имеют установленный бит exec: это, вероятно, просто артефакт используемой системы сборки или сценария ссылки.
Пример вывода, просто для справки:
$ /lib/i386-linux-gnu/libc.so.6
GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al.
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.6.3.
Compiled on a Linux 3.2.14 system on 2012-04-19.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.
/lib
и/usr/lib
являются libc и libpthread, и обе они печатают уведомление об авторских правах при выполнении.