Python Glossary Русский

Python 3.12+Linuxosfunction

os.unshare

os — namespaces

Disassociate parts of the process's execution context into new namespaces (3.12+). Availability: Linux.

Syntax

os.unshare(...)

It moves the process into new namespaces — mount, network, user — the foundation of containers. It usually needs CAP_SYS_ADMIN, except for a user namespace (CLONE_NEWUSER) where the system allows it. It is a low-level tool that teaching code does not need.

Examples

import os
os.unshare(os.CLONE_NEWUTS)   # → ? только Linux: процесс получает собственное UTS-пространство имён (нужны права CAP_SYS_ADMIN)
os.unshare(os.CLONE_NEWNS | os.CLONE_NEWUTS)   # → ? только Linux: флаги комбинируются побитовым ИЛИ, всё отделяется одним вызовом
os.unshare(os.CLONE_NEWNET)   # → ? у обычного пользователя без CAP_SYS_ADMIN: PermissionError: [Errno 1] Operation not permitted
os.unshare(os.CLONE_NEWUSER)   # → ? только Linux: единственный флаг, доступный непривилегированному процессу; внутри нового user namespace становятся доступны и остальные
os.unshare(os.CLONE_NEWPID)   # → ? ловушка: сам процесс остаётся в прежнем PID-namespace, в новый попадут только его потомки

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy