Каждый процесс UNIX имеет 3 UID, связанных с ним. Привилегия суперпользователя - UID = 0.
Реальный UID
Это UID пользователя / процесса, который создал ЭТОТ процесс. Его можно изменить, только если запущенный процесс имеет EUID = 0.
Эффективный UID
Этот UID используется для оценки привилегий процесса для выполнения определенного действия. EUID может быть изменен либо на RUID, либо на SUID, если EUID! = 0. Если EUID = 0, его можно изменить на что угодно.
Сохраненный UID
Если вы запустите исполняемый файл с установленным битом set-UID, то итоговый процесс запуска начнется с реального UID реального пользователя, который его запускает, и с эффективным и сохраненным UID владельца исполняемого файла. Если процесс затем вызывает setuid () или seteuid (), чтобы изменить свой эффективный UID, они все равно могут снова получить свои первоначальные привилегии благодаря сохраненному UID. Если бит set-UID не установлен, SUID будет RUID.