[devel] suid binaries and ELF Auxiliary Vectors
Kirill A. Shutemov
kirill at shutemov.name
Fri Sep 25 07:38:50 UTC 2009
Может кто-нибудь подскажет, почему suid'ый бинарник получает пустой
auxv?
Маленький testcase:
#include <elf.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv, char **envp)
{
Elf32_auxv_t *auxv;
while(*envp++ != NULL);
for (auxv = (Elf32_auxv_t *)envp; auxv->a_type != AT_NULL; auxv++)
printf("%d: 0x%08x\n", auxv->a_type, auxv->a_un.a_val);
printf("uid: %d\n", geteuid());
return 0;
}
Для x86_64, его нужно немного поправить.
Если у исполняемого файла нет suid-бита(или owner == uid), то auxv
печатается нормально иначе получаем только uid. Есть идеи почему?
И где код кторый это делает?
Немного о себе:
$ uname -r
2.6.30-lks-wks-alt1
$ rpm -q glibc-core
glibc-core-2.10.1-alt6
More information about the Devel
mailing list