Этот пример SUID программыsetuid() Функция C также меняет значение euid?
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
void main() {
int ret;
printf("uid=%d, euid=%d\n", getuid(), geteuid());
ret = setuid(1000);
printf("uid=%d, euid=%d\n", getuid(), geteuid());
}
имеет 'Ноэми' (ID = 1001) в качестве владельца:
sarah-$ logname
sarah
sarah-$ ls -l p.bin
-rwsr-xr-x 1 noemi noemi 7028 17 dic 10.30 p.bin
При запуске от пользователя 'Sarah' (ID = 1000) EUID изменения 1000
Зачем? изменения p.bin только UID (это не должны иметь никакого эффекта, так как UID был 1000, когда p.b была начата 'Sarah'):
sarah-$ ./p.bin
uid=1000, euid=1001
uid=1000, euid=1000
sarah-$
Я использую Debian 6 64 бит.
Пожалуйста, помогите мне понять. Спасибо
Я думаю, что p.bin меняет только euid, а не uid. – Medinoc
Право, спасибо – user2431763