Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Видимость глобальной зоны и доступ к ней

Глобальная зона одновременно является зоной по умолчанию для системы и зоной, которая используется для общесистемного административного управления. Эта двойная роль вызывает ряд административных проблем. Поскольку приложения внутри зоны имеют доступ к процессам и другим системным объектам в других зонах, действия по администрированию могут повлечь за собой неожиданно далеко идущие последствия. Например, в сценариях закрытия системы часто используется команда pkill, передающая процессам с определенным именем сигнал на завершение работы. При запуске такого сценария из глобальной зоны сигнал передается всем соответствующим процессам в системе независимо от их зоны.

Нередко приходится использовать системную область действия. Например, для наблюдения за общесистемным использованием ресурсов необходимо наблюдать за статистикой процессов по всей системе. Просмотр работы процессов только в глобальной зоне не позволил бы учитывать актуальную информацию из других зон системы, которые могут совместно использовать некоторые или все системные ресурсы. Такой ракурс особенно важен в отсутствие строгого разделения системных ресурсов, например ЦП, средствами управления ресурсами.

Таким образом, процессам в глобальной зоне видны процессы и другие объекты в неглобальных зонах. В результате наблюдение за такими процессами может проводиться по всей системе. Возможность контроля процессов в других зонах или отправки им сигналов ограничивается полномочиями PRIV_PROC_ZONE. Эти полномочия аналогичны полномочиям PRIV_PROC_OWNER, поскольку они обеспечивают для процессов возможность переопределения ограничений, наложенных на непривилегированные процессы. В этом случае ограничение состоит в неспособности непривилегированных процессов глобальной зоны передавать сигналы или выполнять управление процессами в других зонах. Это верно даже в случаях, когда идентификаторы пользователей процессов совпадают или действующий процесс имеет полномочия PRIV_PROC_OWNER. Полномочия PRIV_PROC_ZONE можно отозвать для проектов, наделенных другими полномочиями, что позволяет ограничить действия глобальной зоной.

Информацию о сопоставлении процессов с помощью zoneidlist см. на справочных страницах pgrep(1) и pkill(1).