Чтение и запись правил Selinux¶
Данный API позволяет выполнять базовые операции чтения и стандартной записи правил Selinux, что дает возможность настраивать или обходить некоторые системные ограничения. Соответствующие вызовы API могут повлиять на функциональность системы, поэтому используйте их с осторожностью. Предполагается, что вы знакомы с принципами работы Selinux.
Получение экземпляра для работы¶
Прежде чем начать, вам необходимо получить экземпляр selinux.
selinux = d.stub("SelinuxPolicy")
Получение статуса Selinux¶
Используйте следующий вызов API, чтобы определить, включены ли правила Selinux.
selinux.enabled()
>>> selinux.is_enabled( )
True
Используйте следующий вызов API, чтобы определить, находится ли система в режиме enforce.
selinux.get_enforce()
>>> selinux.get_enforce()
1
Установка статуса Selinux¶
Используйте следующий вызов API, чтобы установить для Selinux режим enforce или permissive.
selinux.set_enforce(enable)
Используйте следующий вызов API, чтобы установить режим enforce.
>>> selinux.set_enforce(True)
1
Используйте следующий вызов API, чтобы установить режим permissive.
>>> selinux.set_enforce( False)
0
Создание нового домена¶
Используйте следующий вызов API, чтобы создать новый домен в Selinux.
selinux.create_domain(domain_name)
>>> selinux.create_domain("hello_selinux")
True
Установка домена в режим permissive¶
Используйте следующий вызов API, чтобы установить для домена Selinux режим permissive.
selinux.permissive(domain_name)
>>> selinux.permissive("untrusted_app")
True
Установка домена в режим enforce¶
Используйте следующий вызов API, чтобы установить для домена Selinux режим enforce.
selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True
Детальная настройка правил контроля¶
Используйте следующие вызовы API для более детальной записи правил allow и disallow.
selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)
Здесь source и target представляют исходный и целевой контексты соответственно, tclass представляет класс цели, а action — конкретное действие. action поддерживает только * (означает все) или конкретное действие. Все параметры не поддерживают множественные контексты или действия, как в стандартном синтаксисе правил, например {binder system_app}. Здесь вы можете указать только одно имя. Ниже приведен пример операции.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")
Приведенное выше правило означает предоставление hal_camera_default всех прав на операции с каталогом (dir) camera_vendor_data_file. Аналогично, замена на метод disallow будет означать запрет этих прав.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")
Вы также можете указать более конкретное действие, такое как search, как показано выше.