Python Glossary English

все Python 3Linux · macOSosфункция

os.initgroups

os — идентификаторы пользователя/группы

Инициализирует дополнительные группы процесса по имени пользователя и базовому GID. Доступно на Unix.

Синтаксис

os.initgroups(...)

Задаёт дополнительные группы так, как их получил бы пользователь при входе: initgroups('alice', gid) читает базу групп. Это правильный шаг перед setgid и setuid, когда сервис переходит от root к обычному пользователю. Требует прав root.

Примеры

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: менять список групп процесса может только суперпользователь

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности