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

Я хочу использовать porg в моем дистрибутиве LFS. Это похоже на http://checkinstall.izto.org/, он использует LD_PRELOAD,

1 Если вы читаете README:

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

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

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

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

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

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

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).

Другие вопросы по тегам