O que é / o ld.so.preload faz?

6

Eu deparei com um arquivo chamado ld.so.preload e não consigo encontrar nenhum uso real para ele. Tem algo a ver com a variável de env LD_PRELOAD ?

    
por Teee 26.02.2017 / 20:20

1 resposta

7

Boa pergunta! Na verdade, /etc/ld.so.preload substitui, de certa forma, LD_PRELOAD .

LD_PRELOAD está sujeito a severas restrições devido a um problema de segurança: ele não pode executar binários arbitrários setuid porque, se pudesse, você poderia substituir rotinas de bibliotecas por seus próprios código, veja por exemplo aqui para um boa discussão. Na verdade, você pode ler o manual do ld.so'user :

LD_PRELOAD

A list of additional, user-specified, ELF shared libraries to be loaded before all others. The items of the list can be separated by spaces or colons. This can be used to selectively override functions in other shared libraries. The libraries are searched for using the rules given under DESCRIPTION. For set-user-ID/set-group-ID ELF binaries, preload pathnames containing slashes are ignored, and libraries in the standard search directories are loaded only if the set-user-ID permission bit is enabled on the library file.

Em vez disso, o arquivo /etc/ld.so.preload não sofre tal limitação, a idéia é que, se você puder ler / escrever no diretório / etc pode usar /etc/ld.so.preload mesmo que não pareça ter um no início: não é nada além de um recurso de < em> glibc , portanto, de todas as distros do Linux (mas não, até onde sei, dos sabores Unix), assim você pode criá-lo e colocar nele o nome de qualquer biblioteca setuid em any distro Linux, e vai funcionar.

    
por 27.02.2017 / 14:07