Большая просьба очень сильно не пинать, си практически не знаю ( Ага, а лезу) Нужен был суидный враппер для шелл скрипта, но под другого пользователя, не рута. Из экспериментов выяснилось, что просто с euid, без дополнительного setresuid новый exec уже идет с saved uid, а не euid.
Нужно еще, чтоб при этом передавал информации о старом юид. Накарябал такое, подскажите, пожалуйста, насколько все плохо с этим кодом в плане безопасности. То, что код сам по себе кривой, я предполагаю :-)
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#define _GNU_SOURCE
uid_t uid;
uid_t euid;
static char olduid[256];
void getolduid() {
uid = getuid();
euid = geteuid();
}
int main(int argc, char** argv) {
getolduid();
sprintf(olduid,"OLDUID=%d",uid);
putenv(olduid);
setresuid(geteuid(), geteuid(), geteuid());
execv("/bin/prog.real", argv);
return 0;
}
Ответ на:
комментарий
от vasily_pupkin
Ответ на:
комментарий
от true_admin
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от vasily_pupkin
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум execve (2005)
- Форум fcloseall не работает (2015)
- Форум Работа с функциями семейства exec (2017)
- Форум Помогите, пожалуйста, с fork() (2012)
- Форум очистка экрана на C (2005)
- Форум Системный вызов sendfile ??? (2008)
- Форум stat() неправильно работает с cifs (2009)
- Форум Почему при использовании -std=c99выводит, что S_IFDIR не описан? (2010)
- Форум Как изменить максимальное число открытых файлов ? (2006)
- Форум Не работает IFS suid exploit (2013)