Python Glossary Русский

all Python 3Linux · macOSosfunction

os.setuid

os — user/group IDs

Set the process's real user id (needs privilege). Availability: Unix.

Syntax

os.setuid(...)

For a root process it changes all three UIDs at once, so dropping privileges is irreversible. Order matters: setgroups and setgid first, then setuid — once the UID changes there is no right to change groups any more. A failure raises an exception; ignoring it is a vulnerability, leaving the process root.

Examples

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 уже нельзя

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy