LINUX.ORG.RU

Как правильно использовать setuid()/seteuid()


0

0

Здравствуйте ! Возникла проблема. Не могу сменить uid во время работы процесса. --------- фрагмент кода start------------ // change my euid to root and delete file if( setuid( 0) == -1) { perror( "test ERROR 1:"); } // rubbish.asc - результат работа MySQL с владельцем и группой mysql gid=235 if( unlink( "/tmp/rubbish.asc") == -1) { perror( "test ERROR 2:"); } --- end code -------------------------------------------- Код собран и запускается регулярным пользователем с uid=gid=501. Перед запуском, root установил биты S_ISUID и S_ISGID. Результат: На этапе выполнения ----------------- test ERROR 1: Operation not permitted test ERROR 2: Operation not permitted ----------------- Хотелось - бы узнать рекомендации и метод лечения. А то вдруг у меня ошибка в ДНК ;-)))(не хотелось-бы)

anonymous

1) Ты из-под рута установил бит SUID, но не поменял владельца файла, значит, во время выполнения проги, она будет иметь права юзера 501. 2) Код setuid(0) тебе в программе вообще не нужен. 3) Бит SGID на файл тебе тоже не нужен. Решение твоей задачи: убери setuid(0), сделай владельцем файла проги того юзера, из-под которого работает MySQL и поставь на файл бит SUID.

nobody ★★
()

Thanks! Но, файл создает сам MySQL при SELECT в файл (выше в коде). Владелец проги принадлежит группе mysql и прописан в самой базе как пользователь. И тогда я вооюще не понял назначение setuid()/seteuid() ;-{(((((

anonymous
()

setuid может вызывать только рут для переключения на другого юзера в целях обеспечения security

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