Python Glossary English

все 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Сообщить о неточности