LINUX.ORG.RU

setuid, или временно перестать быть рутом и обратно


0

0

Доброго времени суток.

Столкнулся с такой проблемой. Есть программа, которой требуется иметь доступ на запись в sysfs. В качестве временной меры решил поставить на неё +s.

Естественно ради безопасности, всю большую работу можно выполнять под простым пользователем, но когда потребуется доступ к sysfs, вернуть себе на время права рута. Когда доступ завершён, нужно вновь стать пользователем.

Как этого добиться? Читал man setuid, seteuid, но об этом там упоминается лишь вскользь.

Спасибо.

// Капча sencks (!)

anonymous

вернуть не получится. Можешь форкнуть процесс, в одном сделать setuid на простого пользователя, и когда нужно сделать что-то от рута скомандовать второму процессу.

dilmah ★★★★★
()

>Естественно ради безопасности, всю большую работу можно выполнять под простым пользователем, но когда потребуется доступ к sysfs, вернуть себе на время права рута. Когда доступ завершён, нужно вновь стать пользователем.

Нельзя сделать две программы ? Одна c SUID а вторая пусть делает всю работу от пользователя и когда нужно запускает SUID-ую

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

В смысле весь код работы с sysfs вынести в отдельную программу и на нее поставить suid.

koTuk
()

установить CAP_DAC_OVERRIDE
(man 7 capabilities)

rei3er
()

socketpair, потом fork.

Потом какая-нибудь ветка теряет UID и они общаются через сокет.

ttnl ★★★★★
()

Обычно открывают нужные файлы рутом, а потом делают setuid, но это если заранее известно куда писать.

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

> уже проверил, спасибо тогда, это в принципе лучший вариант

запуститься от рута, открыть файл и сбросить права скажем до демона? оно конечно вариант, но AFAIU автор хочет что-то делать с sysfs -> не факт, что подойдёт бо скорее всего, доступ к sysfs нужен будет не в начале исполнения программы но где-то там, далеко и глубоко -> всё время сидеть под рутом и ждать, когда же он понадобиться не есть гут. впрочем, это лишь моё предположение. нужна конкретика.

// wbr

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