Python 3.12+Linuxosфункция
os.unshare
os — пространства имён
Отсоединяет части исполнительного контекста процесса в новые пространства имён (Python 3.12+). Доступно на Linux.
Синтаксис
os.unshare(...)
Отделяет процесс в новые пространства имён — монтирования, сети, пользователей — на этом построены контейнеры. Обычно требует прав CAP_SYS_ADMIN, кроме пользовательского пространства имён (CLONE_NEWUSER), если система его разрешает. Это низкоуровневый инструмент: в учебном коде он не нужен.
Примеры
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, в новый попадут только его потомки
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности