Динамические библиотеки и атрибут исполняемости.
Коллеги, тут обнаружил странную вещь.
Вот сколько существовали в Linux динамические библиотеки (shared
objects) столько на их файлах стоял атрибут исполняемости
rwxr-xr-x обычно.
Тут недавно я обнаружил что в stretch это уже не так.
Более того в policy
https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-runtime
написано, что
Shared libraries should not be installed executable, since the dynamic
linker does not require this and trying to execute a shared library
usually results in a core dump.
Интересно, когда эта идея возникла, кто придумал и где еще применяется.
И как моя кросс-платформная система сборки (пусть, например,
использующая autoconf или cmake) узнает, что в данной системе есть такое
требование policy (а в другой, соседней, нет).
Я, конечно, могу взять и попытаться проверить права у realpath libc.so
(что, кстати, тоже нетривиально - сначала придется распарсить вывод ldd
и выяснить, где у нас сегодня libc.so, и тут выяснится, что как раз
libc.so и libpthread.so это требование полиси-то и нарушают, а значит
придется опираться на какие-то еще библиотеки, которые запросто в
целевой системе могут отсутствовать).
--
Victor Wagner <vitus@wagner.pp.ru>
Reply to: