Как изменить реальный идентификатор пользователя процесса из root

Я пытался поменять идентификаторы процесса, чтобы протестировать свою программу, я мог легко установить эффективное UID/UGID этого процесса, просто вызвав

if (setegid(gid)==0)
    {
        if (seteuid(uid)==0)
        {
        }
    }

И тогда я хочу переключить свой realUID с указанным скажем 7052 и EffectiveUID на root(0)

if (setregid(egid,rgid)== 0) //egid(7052),rgid(0)
    {
        if (setreuid(euid,ruid) == 0)
        {
        }
     }

setregid не работает, возвращает сообщение об ошибке "операции запрещены", я нахожусь на FreeBSD, работает нормально для Debian и других дистрибутивов Linux, могу ли я получить некоторую помощь здесь?

1 ответ

Изменение учетных данных - включая GID - требует привилегий. И вы отбрасываете эту привилегию всего несколькими строками выше с помощью seteuid().

Другие вопросы по тегам