module my_module 1.0;
require {
bool allow_ypbind, secure_mode, allow_execstack;
type system_t, sysadm_t;
class file {read write};
attribute attr_check_base_2, attr_check_base_3;
attribute attr_check_base_optional_2;
}
bool module_1_bool true;
if (module_1_bool && allow_ypbind && secure_mode && allow_execstack) {
allow system_t sysadm_t : file { read write };
}
optional {
bool module_1_bool_2 false;
require {
bool optional_bool_1, optional_bool_2;
class file { execute ioctl };
}
if (optional_bool_1 && optional_bool_2 || module_1_bool_2) {
allow system_t sysadm_t : file {execute ioctl};
}
}
# Type - attribute mapping test
type module_t;
attribute attr_check_mod_1;
attribute attr_check_mod_2;
attribute attr_check_mod_3;
attribute attr_check_mod_4;
attribute attr_check_mod_5;
attribute attr_check_mod_6;
attribute attr_check_mod_7;
attribute attr_check_mod_8;
attribute attr_check_mod_9;
attribute attr_check_mod_10;
attribute attr_check_mod_11;
optional {
require {
type base_t;
}
attribute attr_check_mod_optional_1;
attribute attr_check_mod_optional_2;
attribute attr_check_mod_optional_3;
attribute attr_check_mod_optional_4;
attribute attr_check_mod_optional_5;
attribute attr_check_mod_optional_6;
attribute attr_check_mod_optional_7;
}
optional {
require {
type does_not_exist_t;
}
attribute attr_check_mod_optional_disabled_4;
attribute attr_check_mod_optional_disabled_7;
}
type attr_check_base_2_1_t, attr_check_base_2;
type attr_check_base_2_2_t;
typeattribute attr_check_base_2_2_t attr_check_base_2;
type attr_check_base_3_3_t, attr_check_base_3;
type attr_check_base_3_4_t;
typeattribute attr_check_base_3_4_t attr_check_base_3;
optional {
require {
attribute attr_check_base_5;
}
type attr_check_base_5_1_t, attr_check_base_5;
type attr_check_base_5_2_t;
typeattribute attr_check_base_5_2_t attr_check_base_5;
}
optional {
require {
attribute attr_check_base_6;
}
type attr_check_base_6_3_t, attr_check_base_6;
type attr_check_base_6_4_t;
typeattribute attr_check_base_6_4_t attr_check_base_6;
}
optional {
require {
type does_not_exist_t;
attribute attr_check_base_8;
}
type attr_check_base_8_1_t, attr_check_base_8;
type attr_check_base_8_2_t;
typeattribute attr_check_base_8_2_t attr_check_base_8;
}
optional {
require {
type does_not_exist_t;
attribute attr_check_base_9;
}
type attr_check_base_9_3_t, attr_check_base_9;
type attr_check_base_9_4_t;
typeattribute attr_check_base_9_4_t attr_check_base_9;
}
optional {
require {
type does_not_exist_t;
attribute attr_check_base_10;
}
type attr_check_base_10_3_t, attr_check_base_10;
type attr_check_base_10_4_t;
typeattribute attr_check_base_10_4_t attr_check_base_10;
}
optional {
require {
attribute attr_check_base_11;
}
type attr_check_base_11_3_t, attr_check_base_11;
type attr_check_base_11_4_t;
typeattribute attr_check_base_11_4_t attr_check_base_11;
}
type attr_check_base_optional_2_1_t, attr_check_base_optional_2;
type attr_check_base_optional_2_2_t;
typeattribute attr_check_base_optional_2_2_t attr_check_base_optional_2;
optional {
require {
attribute attr_check_base_optional_5;
}
type attr_check_base_optional_5_1_t, attr_check_base_optional_5;
type attr_check_base_optional_5_2_t;
typeattribute attr_check_base_optional_5_2_t attr_check_base_optional_5;
}
#optional {
# require {
# attribute attr_check_base_optional_6;
# }
# type attr_check_base_optional_6_3_t, attr_check_base_optional_6;
# type attr_check_base_optional_6_4_t;
# typeattribute attr_check_base_optional_6_4_t attr_check_base_optional_6;
#}
optional {
require {
type does_not_exist_t;
attribute attr_check_base_optional_8;
}
type attr_check_base_optional_8_1_t, attr_check_base_optional_8;
type attr_check_base_optional_8_2_t;
typeattribute attr_check_base_optional_8_2_t attr_check_base_optional_8;
}
type attr_check_mod_2_1_t, attr_check_mod_2;
type attr_check_mod_2_2_t;
typeattribute attr_check_mod_2_2_t attr_check_mod_2;
optional {
require {
attribute attr_check_mod_5;
}
type attr_check_mod_5_1_t, attr_check_mod_5;
type attr_check_mod_5_2_t;
typeattribute attr_check_mod_5_2_t attr_check_mod_5;
}
optional {
require {
attribute attr_check_mod_6;
}
type attr_check_mod_6_3_t, attr_check_mod_6;
type attr_check_mod_6_4_t;
typeattribute attr_check_mod_6_4_t attr_check_mod_6;
}
optional {
require {
type does_not_exist_t;
}
type attr_check_mod_8_1_t, attr_check_mod_8;
type attr_check_mod_8_2_t;
typeattribute attr_check_mod_8_2_t attr_check_mod_8;
}
optional {
require {
type does_not_exist_t;
}
type attr_check_mod_9_3_t, attr_check_mod_9;
type attr_check_mod_9_4_t;
typeattribute attr_check_mod_9_4_t attr_check_mod_9;
}
optional {
require {
type does_not_exist_t;
}
type attr_check_mod_10_3_t, attr_check_mod_10;
type attr_check_mod_10_4_t;
typeattribute attr_check_mod_10_4_t attr_check_mod_10;
}
optional {
require {
type base_t;
}
type attr_check_mod_11_3_t, attr_check_mod_11;
type attr_check_mod_11_4_t;
typeattribute attr_check_mod_11_4_t attr_check_mod_11;
}
#optional {
# require {
# attribute attr_check_mod_optional_5;
# }
# type attr_check_mod_optional_5_1_t, attr_check_mod_optional_5;
# type attr_check_mod_optional_5_2_t;
# typeattribute attr_check_mod_optional_5_2_t attr_check_mod_optional_5;
#}
#optional {
# require {
# attribute attr_check_mod_optional_6;
# }
# type attr_check_mod_optional_6_3_t, attr_check_mod_optional_6;
# type attr_check_mod_optional_6_4_t;
# typeattribute attr_check_mod_optional_6_4_t attr_check_mod_optional_6;
#}
optional {
require {
attribute attr_check_base_optional_disabled_5;
}
type attr_check_base_optional_disabled_5_1_t, attr_check_base_optional_disabled_5;
type attr_check_base_optional_disabled_5_2_t;
typeattribute attr_check_base_optional_disabled_5_2_t attr_check_base_optional_disabled_5;
}
optional {
require {
type does_not_exist_t;
attribute attr_check_base_optional_disabled_8;
}
type attr_check_base_optional_disabled_8_1_t, attr_check_base_optional_disabled_8;
type attr_check_base_optional_disabled_8_2_t;
typeattribute attr_check_base_optional_disabled_8_2_t attr_check_base_optional_disabled_8;
}