LINUX.ORG.RU

Как породить процесс с правами определенного пользователя?


0

0

Всем привет.

Возникла необходимость написать маленький демон...

Почитав по следующим ссылкам:
http://linuxportal.ru/print.php/2361_0_3_0_M/
http://symmetrica.net/unix-linux
http://ergeal.ru/txt/archive/cs/unix/index.htm
отпали практически все вопросы.

Но никак не могу понять, как создать процесс-потомок с правами заданного позователя (UID/GID)?

Заранее благодарен.

★★

что-то-там = fork();
if (что-то-там == что-то-там-child (0 чтоли))
....setuid(..);

?

dissident ★★
()

1. нужно быть запущеным от рута
2. код:
if(fork() == 0)
{
// находимся в потомке
setreuid(<uid>, <uid>);
setregid(<gid>, <gid>);
setgroups(0, NULL);

// теперь идет работа от юзера
...
exit(0); // не забываем сделать выход!!!
}
3. соответственно:
man fork
man setreuid
man setregid
man setgroups

generatorglukoff ★★
()
Ответ на: комментарий от generatorglukoff

спасибо огромное.

не мог найти упоминание про setreuid() и setreguid()...

samson ★★
() автор топика
Ответ на: комментарий от generatorglukoff

> setreuid(<uid>, <uid>);
> setregid(<gid>, <gid>);
> setgroups(0, NULL);

проверяйте эти функции на возврат, а то такой простотой можно эскалацию привелегий допустить

Chubaka
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.