все Python 3Linux · macOSosфункция
os.setuid
os — идентификаторы пользователя/группы
Устанавливает реальный UID процесса (требует привилегий). Доступно на Unix.
Синтаксис
os.setuid(...)
Для процесса root меняет все три UID разом, поэтому сброс привилегий необратим. Порядок важен: сначала setgroups и setgid, потом setuid — после смены UID права менять группы уже нет. Ошибка смены поднимает исключение; не проверять её — уязвимость, процесс останется root.
Примеры
import os
print(os.getuid(), os.geteuid()) # → ? только Unix: реальный и эффективный UID, например 0 0 под root
os.setgid(1000) # → ? только Unix: при сбросе привилегий группу меняют ПЕРВОЙ — после setuid прав на setgid уже не будет
os.setuid(1000) # → ? только Unix: у root меняет разом реальный, эффективный и сохранённый UID на 1000
print(os.getuid(), os.geteuid()) # → ? только Unix: теперь 1000 1000 — типовой сброс привилегий демона завершён
os.setuid(0) # → PermissionError — в отличие от os.seteuid, вернуть root после setuid уже нельзя
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности