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