Próbuję użyć LD_PRELOAD
do wstępnego wczytania biblioteki z aplikacją, która ma uprawnienia setuid. Próbowaliśmy LD_PRELOAD
w pierwszym, i wydawało się, że jest ono ignorowane z setuid binarny, choć działał kiedy próbowałem go z innymi, jak ls
, dir
itpLD_PRELOAD z setuidem binarnym
Z dokumentacji LD_PRELOAD:
LD_PRELOAD
A whitespace-separated list of additional, user-specified, ELF shared
libraries to be loaded before all others. This can be used to
selectively override functions in other shared libraries. For set-
user-ID/set-group-ID ELF binaries, only libraries in the standard
search directories that are also set-user-ID will be loaded.
Próbowałem umieścić biblioteki w /usr/lib
, /usr/local/lib
i /usr/lib64
z uprawnieniami setuid zgodnie z powyższą dokumentacją, ale nadal nie działa. Jeśli nie podam LD_PRELOAD
ścieżki w przypadku, gdy mam bibliotekę w standardowych katalogach z opcją setuid, to nie mogę znaleźć biblioteki. Jeśli dam mu ścieżkę, nic nie robi.
Binarny setuid to plik binarny uprawnień root, który działa w powłoce użytkownika innego niż root. jakieś pomysły? Nie jestem pewien, czy brakuje mi ścieżki, zmiennej środowiskowej, czy też nie rozumiem powyższej dokumentacji.
Edit: uprawnienia wnioskowane są:
Biblioteka:
-rwsr-sr-x 1 root root 72580 2012-02-10 07:51
App:
-rwsr-xr-x 1 root root 137517601 2012-02-10
env | grep LD
LD_LIBRARY_PATH=/usr/lib (I added this manually myself, usually LD_LIBRARY_PATH is empty)
Czy używasz SELinux? –
Tak, Suse enterprise 11.1 jest tym, co aktualnie uruchomię. –
W końcu zadziałało. W całym zbiorze testów musiałem coś zepsuć. Umieszczono go w lib64 z odpowiednimi uprawnieniami (setuid) i NIE zapewniając ścieżki do LD_PRELOAD. Dzięki za twoją pomoc faceci! –