include/parsec/parsec_mac.h#
Документация по структурам и типам#
struct _parsec_mac_label_t#
Мандатные атрибуты безопасности объекта (файл, дескриптор)
Variables:
parsec_mac_t mac Уровень и категория
uint32_t type Тип метки
struct _parsec_mac_t#
Мандатные атрибуты безопасности субъекта (процесс)
Variables:
parsec_cat_t cat Категория
parsec_lev_t lev Уровень
typedef mic_t#
typedef uint32_t mic_t;
typedef parsec_cat_t#
typedef uint64_t parsec_cat_t;
typedef parsec_lev_t#
typedef uint8_t parsec_lev_t;
typedef parsec_mac_label_t#
typedef struct _parsec_mac_label_t parsec_mac_label_t;
Мандатные атрибуты безопасности объекта (файл, дескриптор)
typedef parsec_mac_t#
typedef struct _parsec_mac_t parsec_mac_t;
Мандатные атрибуты безопасности субъекта (процесс)
Документация по функциям#
function mac_t_to_parsec_mac_label_t#
Получение мандатной метки объекта parsec_mac_label_t из мандатной метки mac_t.
void mac_t_to_parsec_mac_label_t (
const mac_t mact,
parsec_mac_label_t *pmact
)
Parameters:
mactуказатель на структуру мандатных атрибутов безопасности mac_tpmactуказатель на структуру мандатных атрибутов безопасности объекта
function mac_t_to_parsec_mac_t#
Получение мандатной метки субъекта parsec_mac_t из мандатной метки mac_t.
void mac_t_to_parsec_mac_t (
const mac_t mact,
parsec_mac_t *pmact
)
Parameters:
mactуказатель на структуру мандатных атрибутов безопасности mac_tpmactуказатель на структуру мандатных атрибутов безопасности субъекта
function parsec_chmac#
Установка мандатной метки файловому объекту
int parsec_chmac (
const char *filename,
const parsec_mac_label_t *mac
)
Parameters:
filenameпуть к файловому объектуmacуказатель на структуру мандатных атрибутов безопасности объекта
Returns:
0 в случае успеха
function parsec_fchmac#
Установка мандатной метки файловому дескриптору
int parsec_fchmac (
int fd,
const parsec_mac_label_t *mac
)
Parameters:
fdфайловый дескрипторmacуказатель на структуру мандатных атрибутов безопасности объекта
Returns:
0 в случае успеха
function parsec_fstatmac#
Получение мандатной метки файлового дескриптора
int parsec_fstatmac (
int fd,
parsec_mac_label_t *mac
)
Parameters:
fdфайловый дескрипторmacуказатель на структуру мандатных атрибутов безопасности объекта
Returns:
0 в случае успеха
function parsec_getmac#
Получение мандатной метки процесса
int parsec_getmac (
pid_t pid,
parsec_mac_t *mac
)
Parameters:
pidидентификатор процессаmacуказатель на структуру мандатных атрибутов безопасности субъекта
Returns:
0 в случае успеха
function parsec_mac_enabled#
Проверка на включенность mac системы parsec.
int parsec_mac_enabled (
void
)
Returns:
1, если mac включен; 0 в противном случае
function parsec_mac_label_t_from_text#
Заполняет мандатную метку объекта на основе строки
int parsec_mac_label_t_from_text (
parsec_mac_label_t *mac,
const char *mac_txt
)
Parameters:
macуказатель на структуру мандатных атрибутов безопасности объектаmac_txtуказатель на строку, описывающую мандатную метку: <Уровень>:<Категории>[:<Тип>]
Returns:
0 в случае успеха
function parsec_mac_label_t_to_mac_t#
Получение мандатной метки mac_t из мандатной метки объекта parsec_mac_label_t.
mac_t parsec_mac_label_t_to_mac_t (
const parsec_mac_label_t *pmaclt
)
Parameters:
pmactуказатель на структуру мандатных атрибутов безопасности объекта
Returns:
указатель на структуру мандатных атрибутов безопасности mac_t в случае успеха, иначе NULL
function parsec_mac_label_t_to_text#
Получение текстового представления мандатной метки объекта
char * parsec_mac_label_t_to_text (
const parsec_mac_label_t *mac,
int flags
)
Parameters:
macуказатель на структуру мандатных атрибутов безопасности объектаflagsфлаги, которые указывают на особенности формирования строки
Returns:
указатель на строку, описывающую мандатную метку объекта, иначе NULL
function parsec_mac_t_from_text#
Заполняет мандатную метку субъекта на основе строки
int parsec_mac_t_from_text (
parsec_mac_t *mac,
const char *mac_txt
)
Parameters:
macуказатель на структуру мандатных атрибутов безопасности субъектаmac_txtуказатель на строку, описывающую мандатную метку mac_t: <Уровень>:<Категории>[:<Тип>]
Returns:
0 в случае успеха
function parsec_mac_t_to_mac_t#
Получение мандатной метки mac_t из мандатной метки субъекта parsec_mac_t.
mac_t parsec_mac_t_to_mac_t (
const parsec_mac_t *pmact,
mac_type_t type
)
Parameters:
pmactуказатель на структуру мандатных атрибутов безопасности субъектаtypeтип метки
Returns:
указатель на структуру мандатных атрибутов безопасности mac_t в случае успеха, иначе NULL
function parsec_mac_t_to_text#
Получение текстового представления мандатной метки субъекта
char * parsec_mac_t_to_text (
const parsec_mac_t *mac,
mac_type_t type,
int flags
)
Parameters:
macуказатель на структуру мандатных атрибутов безопасности субъектаtypeтип меткиflagsфлаги, которые указывают на особенности формирования строки
Returns:
указатель на строку, описывающую мандатную метку объекта, иначе NULL
function parsec_setmac#
Установка мандатной метки процессу
int parsec_setmac (
pid_t pid,
const parsec_mac_t *mac
)
Parameters:
pidидентификатор процессаmacуказатель на структуру мандатных атрибутов безопасности субъекта
Returns:
0 в случае успеха
function parsec_statmac#
Получение мандатной метки файлового объекта
int parsec_statmac (
const char *filename,
parsec_mac_label_t *mac
)
Parameters:
filenameпуть к файловому объектуmacуказатель на структуру мандатных атрибутов безопасности объекта
Returns:
0 в случае успеха
function parsec_strict_mode#
Проверка на включенность МКЦ
int parsec_strict_mode (
void
)
Returns:
1, если МКЦ включен; 0 в противном случае
Документация по макросам#
define MAC_ATTR_IGNORE#
#define MAC_ATTR_IGNORE ((MAC_ATTR_IGNORER) | (MAC_ATTR_IGNOREW) | (MAC_ATTR_IGNOREX))
Тип метки, позволяющий игнорировать мандатную политику для всех операций
define MAC_ATTR_IGNORER#
#define MAC_ATTR_IGNORER ((MAC_ATTR_IGNORER_CAT) | (MAC_ATTR_IGNORER_LVL))
Тип метки, позволяющий игнорировать мандатную политику для операции чтение
define MAC_ATTR_IGNORER_CAT#
#define MAC_ATTR_IGNORER_CAT 0x01
Тип метки, позволяющий игнорировать мандатную политику по категориям для операции чтение
define MAC_ATTR_IGNORER_LVL#
#define MAC_ATTR_IGNORER_LVL 0x08
Тип метки, позволяющий игнорировать мандатную политику по уровню конфиденциальности для операции чтение
define MAC_ATTR_IGNOREW#
#define MAC_ATTR_IGNOREW ((MAC_ATTR_IGNOREW_CAT) | (MAC_ATTR_IGNOREW_LVL))
Тип метки, позволяющий игнорировать мандатную политику для операции записи
define MAC_ATTR_IGNOREW_CAT#
#define MAC_ATTR_IGNOREW_CAT 0x02
Тип метки, позволяющий игнорировать мандатную политику по категориям для операции записи
define MAC_ATTR_IGNOREW_LVL#
#define MAC_ATTR_IGNOREW_LVL 0x10
Тип метки, позволяющий игнорировать мандатную политику по уровню конфиденциальности для операции записи
define MAC_ATTR_IGNOREX#
#define MAC_ATTR_IGNOREX ((MAC_ATTR_IGNOREX_CAT) | (MAC_ATTR_IGNOREX_LVL))
Тип метки, позволяющий игнорировать мандатную политику для операции исполнения
define MAC_ATTR_IGNOREX_CAT#
#define MAC_ATTR_IGNOREX_CAT 0x04
Тип метки, позволяющий игнорировать мандатную политику по категориям для операции исполнения
define MAC_ATTR_IGNOREX_LVL#
#define MAC_ATTR_IGNOREX_LVL 0x20
Тип метки, позволяющий игнорировать мандатную политику по уровню конфиденциальности для операции исполнения
define MAC_EMPTY#
#define MAC_EMPTY (
m
) (((m)->lev == 0) && ((m)->cat == 0))
Проверка на нулевую мандатную метку для субъекта
define MAC_LABEL_EMPTY#
#define MAC_LABEL_EMPTY (
m
) (MAC_EMPTY(&m->mac) && (!(m)->type))
Проверка на нулевую мандатную метку для объекта
define MAC_MAX_CATEGORY#
#define MAC_MAX_CATEGORY ((uint64_t)(-1))
Максимально возможная категория
define MAC_MAX_LEVEL#
#define MAC_MAX_LEVEL 255
Максимальный уровень конфиденциальности
define MAC_TYPE_ATTR#
#define MAC_TYPE_ATTR (
v
) (v&0xff)
Получение типа метки