пытаясь понять LD_PRELOAD и SUID/SGID с помощью checkinstall или porg

Я хочу использовать porg в моем дистрибутив LFS. Он похож на checkinstall, но использует LD_PRELOAD.

1. Если вы прочитали README:

CheckInstall в настоящее время не может отслеживать какие-либо изменения файловой системы, сделанные статически связанными программами.

Я думаю, что это относится к таким командам, как mkdir, mv, ln и т. д. Так что у меня не должно быть с этим проблем. Я прав?

2. Тогда основная проблема:

ПРИМЕЧАНИЕ О ПРОГРАММАХ SUID/SGID: CheckInstall не может отслеживать их действия из-за некоторых ограничений в системе LD_PRELOAD, которую использует installwatch. Это хорошо по соображениям безопасности, но может привести к неожиданным результатам, если в процессе установки используются двоичные файлы SUID/SGID.

Что это значит? Меня не волнует, если я потеряю некоторые файлы. Мне не все равно, будут ли неожиданные результаты или я не смогу правильно установить пакет.

Кроме того, сколько пакетов имеют эту проблему?


person Giorgio Napolitano    schedule 01.10.2018    source источник


Ответы (1)


  1. В случае, если coreutils (mkdir, mv и т. д.) в вашей системе статически связаны (т. е. запуск file на них сообщает о "статической привязке"), porg не сможет отслеживать их операции, и, таким образом, некоторые установленные файлы могут остаться неотслеживаемыми. Статически связанные исполняемые файлы являются второсортными в Linux, и LD_PRELOAD их не поддерживает.

  2. Исполняемые файлы setuid действительно дезинфицируют LD_PRELOAD перед использованием - они игнорируют все файлы, в имени которых есть косая черта (так что могут быть загружены только файлы со стандартными системными путями), а также требуют, чтобы в самой общей библиотеке был установлен бит setuid. Итак, в вашем случае вам нужно найти предварительно загруженную библиотеку porg и установить для нее бит setuid (через chmod a+s libxyz.so). Кстати, может иметь смысл попросить porg авторов внести это изменение в свой дистрибутив. Я не думаю, что это вызовет какие-либо проблемы в типичном пакете, поскольку установщикам обычно не нужно запускать программы setuid (например, mount, passwd, sudo).

person yugr    schedule 02.10.2018