in /usr/lib/ there's a _SETUID_ libfakeroot.
in /usr/lib/ there's a _SETUID_ libfakeroot.
However, it's a *fake* fakeroot -- it doesn't wrap any `interesing'
functions (check wiht `nm -D /usr/lib/libfakeroot.so').
It was needed, because we need the LD_LIBRARY_PATH viriable set.
But, with it set, $LD_PRELOAD cannot any more start with a /.
And, if $LD_PRELOAD doesn't start with a slash, then for
some strange reason (BUG, if you ask me), ld.so starts looking
for $LD_PRELOAD, even if the binary is has the suid bit set.
OK, that would be *REALY* bad (anyone starting `fakeroot su' would
gain root). But, fortunately, ld.so *does* ignore LD_LIBRARY_PATH.
However, now ld.so cannot find the $LD_PRELOAD library any more,
and it refuses to load the binary.
Apparently, the *only* way to fix this, was to put a fake libfakeroot
in /usr/lib/libfakeroot.so, and set it's suid bit.
So, that's why.
Annoyed is,
joostje.