Author: KaiGai Kohei <kaigai@ak.jp.nec.com> 2009
"const char *" object_name ", int " object_type ");" "int selabel_lookup_raw(struct selabel_handle *" hnd , "char **" context ,
"const char *" object_name ", int " object_type ");" .
selabel_lookup(3) описывает функцию с её возвращаемыми значениями и кодами ошибок. object_name должно быть полным именем, которое использует иерархию объектов базы данных. Например, таблица pg_class в базе данных postgres и схема pg_catalog должны быть указаны следующим образом:
postgres.pg_catalog.pg_class
SELABEL_DB_DATABASE Аргумент object_name определяет имя самой базы данных, например, "postgres".
SELABEL_DB_SCHEMA Аргумент object_name определяет имя объекта схемы, например, "postgres.public".
SELABEL_DB_TABLE Аргумент object_name определяет имя объекта таблицы, например, "postgres.public.my_table"
SELABEL_DB_COLUMN Аргумент object_name определяет имя объекта столбца, например, "postgres.public.my_table.user_id"
SELABEL_DB_TUPLE Аргумент object_name определяет имя объекта таблицы, содержащей кортежи, для которых требуется повторно проставить метки, например, "postgresql.public.my_table". Следует учитывать, что нет способа идентифицировать отдельные объекты кортежа (за исключением условия WHERE для инструкций DML), потому что у них нет имён.
SELABEL_DB_PROCEDURE Аргумент object_name определяет имя объекта процедуры, например, "postgres.public.my_func". Следует учитывать, что поиск отдельных контекстов безопасности для процедур с одинаковыми именами, но разными аргументами не поддерживается.
SELABEL_DB_SEQUENCE Аргумент object_name определяет имя объекта последовательности, например, "postgres.public.my_seq".
SELABEL_DB_BLOB Аргумент object_name определяет имя большого объекта, например, "postgres.16308". Следует учитывать, что у большого объекта нет имени, поэтому он идентифицируется по значению соответствующего идентификатора.
SELABEL_DB_VIEW Аргумент object_name определяет имя объекта просмотра, например, "postgres.public.my_view".
SELABEL_DB_LANGUAGE Аргумент object_name определяет имя объекта языка, например, "postgres.public.tcl".
SELABEL_DB_EXCEPTION Аргумент object_name определяет имя объекта исключения.
SELABEL_DB_DATATYPE Аргумент object_name определяет имя объекта типа или домена, например, postgres.public.my_type.
SELABEL_OPT_PATH Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекста базы данных. По умолчанию параметр пытается открыть файл спецификации, предназначенный для SE-PostgreSQL; если этот интерфейс используется другой реляционной СУБД, параметр должен явно объявить файл спецификации, предназначенный для такой реляционной СУБД (подробные сведения см. в разделе ФАЙЛЫ).
/etc/selinux/{SELINUXTYPE}/contexts/sepgsql_context
object_type@Текстовое имя |
SELABEL_DB_DATABASE@db_database |
SELABEL_DB_SCHEMA@db_schema |
SELABEL_DB_VIEW@db_view |
SELABEL_DB_LANGUAGE@db_language |
SELABEL_DB_TABLE@db_table |
SELABEL_DB_COLUMN@db_column |
SELABEL_DB_TUPLE@db_tuple |
SELABEL_DB_PROCEDURE@db_procedure |
SELABEL_DB_SEQUENCE@db_sequence |
SELABEL_DB_BLOB@db_blob |
SELABEL_DB_EXCEPTION@db_exception |
SELABEL_DB_DATATYPE@db_datatype |
object_type object_name context
object_type
Строковое представление типа объекта, показанное в разделе Значения строки имени объекта.
Ключ, который используется для получения контекста на основе object_type. Запись может содержать подстановочные знаки '*' или '?' для выполнения сопоставления с дополнением или подстановкой. Следует учитывать, что при использовании '*' важен порядок записей в файле. '*' в отдельном виде используется для того, чтобы обеспечить назначение резервного контекста по умолчанию, это должна быть последняя запись в блоке object_type.
К объекту будет применён этот контекст безопасности.
# object_type object_name context
db_database my_database system_u:object_r:sepgsql_db_t:s0
db_database * system_u:object_r:sepgsql_db_t:s0
db_schema *.* system_u:object_r:sepgsql_schema_t:s0
db_tuple row_low system_u:object_r:sepgsql_table_t:s0
db_tuple row_high system_u:object_r:sepgsql_table_t:s0:c1023
db_tuple *.*.* system_u:object_r:sepgsql_table_t:s0 .
Если для таблицы "my_table" в схеме "public" внутри базы данных "postgres" требуется контекст безопасности, то параметрами selabel_lookup(3) для object_type будет SELABEL_DB_TABLE, для object_name - "postgres.public.my_table", контекст безопасности (если доступно) будет возвращён в context.