Python Glossary Русский

all Python 3Linux · macOSosfunction

os.initgroups

os — user/group IDs

Initialize the supplemental groups from a username and base GID. Availability: Unix.

Syntax

os.initgroups(...)

It sets supplementary groups as the user would get them at login: initgroups('alice', gid) reads the group database. It is the right step before setgid and setuid when a service switches from root to an ordinary user. It requires root.

Examples

import os
import pwd
os.initgroups('www-data', 33)  # → ? только Unix: None; процесс получает все дополнительные группы пользователя www-data плюс группу с GID 33
print(os.getgroups())  # → ? список GID процесса после вызова, например [33, 4, 27]
entry = pwd.getpwnam('www-data')
os.initgroups(entry.pw_name, entry.pw_gid)  # → None: базовый GID берут из записи пользователя, а не подставляют числом вручную
os.setuid(entry.pw_uid)  # → None: штатный порядок сброса привилегий демона — initgroups(), затем setgid(), и только в конце setuid(); после него вернуть права root уже нельзя
os.initgroups('www-data', 33)  # → PermissionError, если скрипт запущен не от root: менять список групп процесса может только суперпользователь

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy