LINUX.ORG.RU

Смена эффективного идентификатора


0

0

Хочу в программе изменить эффективный идентификатор выполнения на root.

Делаю так:

int main(...){

...

seteuid(0); setuid(0); setgid(0); setegid(0); //дальше создается главная форма и т.д. }

но все идентификаторы остаются без изменения.:(

Может быть, еще чего-нибудь надо?


Если ты не root, то никак!

Если бы такое было возможно, то и root не был бы нужен.

Die-Hard ★★★★★
()

Ой! Мама!

Сейчас вас будут критиковать местные темпераментные гуру!

>seteuid(0); setuid(0); setgid(0); setegid(0); //дальше создается главная форма и т.д. }

>но все идентификаторы остаются без изменения.:(

Вот результат мысленной компиляции: все указанные функции (точнее, системные вызовы) вернули -1, а errno установили в EACCESS. Вызвав perror(3) после любого из них, увидите на экране (точнее, в stderr) сообщение "Permission denied". Дело в том, что менять UID/GID можно только root-у.

В man 2 setuid это написано точно и скрупулезно, а почему оно так -- лучше всего можно узнать из здешнего же топика security.

Чтобы выдать программе права root, нужно:

1. Скомпилить программу без всех этих вызовов.

2. Стать рутом и сменить владельца/группу файла на рута.

3. Установить на получившемся исполняемом файле SUID/SGID.

2 и 3 можно записать как

su chown root a.out chgrp root a.out chmod ug+s a.out exit

а еще лучше это делать через sudo.

И, конечно, делать это стОит уже после отладки программы. Удачи!

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

>1. Скомпилить программу без всех этих вызовов.

???

>2. Стать рутом и сменить владельца/группу файла на рута.

написала вызовы в коде, скомпилила, установила владельца бинарника на root, установила бит SUID - все работает.

Почему надо прогу компилить без этих вызовов? Спасибо.

Helena
() автор топика
Ответ на: комментарий от CKulT

Единственное разумное применение этих функций - отказ от
привелегий суперпользователя в программе(процессе), запущенной из под рута после выполнения действий, которые этих привелегий требуют. Это уменьшает последствия возможного взлома через данную программу.


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