class process class blk_file class chr_file class dir class fifo_file class file class lnk_file class sock_file sid kernel sid security sid unlabeled sid file sid port sid netif sid netmsg sid node sid devnull class process { dyntransition transition } class file { getattr ioctl open read write } ifdef(`enable_mls',` sensitivity s0; dominance { s0 } category c0; category c1; category c2; category c3; category c4; category c5; category c6; category c7; category c8; category c9; category c10; category c11; category c12; category c13; category c14; category c15; category c16; category c17; category c18; category c19; category c20; category c21; category c22; category c23; level s0:c0.c23; mlsconstrain file { write } ( h1 dom h2 ); ') ######################################## # # Test start # ######################################## ## Test 1 (basic) type test1_t; allow test1_t test1_t : file { read write }; neverallow test1_t test1_t : file read; ## Test 2 (wildcard permission) type test2_t; allow test2_t test2_t : file { read write }; neverallow test2_t test2_t : file *; ## Test 3 (complement permission) type test3_t; allow test3_t test3_t : file { read write }; neverallow test3_t test3_t : file ~{ write }; ## Test 4 (wildcard source) type test4_t; allow test4_t test4_t : file { read write }; neverallow * test4_t : file read; ## Test 5 (wildcard target) type test5_t; allow test5_t test5_t : file { read write }; neverallow test5_t * : file read; ## Test 6 (complement source) type test6_1_t; type test6_2_t; allow { test6_1_t test6_2_t } { test6_1_t test6_2_t } : file { read write }; neverallow ~{ test6_2_t } test6_1_t : file read; ## Test 7 (complement target) type test7_1_t; type test7_2_t; allow { test7_1_t test7_2_t } { test7_1_t test7_2_t } : file { read write }; neverallow test7_1_t ~{ test7_2_t } : file read; ## Test 8 (source attribute) attribute test8_a; type test8_t, test8_a; allow test8_a test8_a : file read; allow test8_t test8_t : file write; neverallow test8_a test8_t : file { read write }; ## Test 9 (target attribute) attribute test9_a; type test9_t, test9_a; allow test9_a test9_a : file read; allow test9_t test9_t : file write; neverallow test9_t test9_a : file { read write }; ## Test 10 (self) attribute test10_a; type test10_1_t, test10_a; type test10_2_t; allow { test10_1_t test10_2_t } { test10_1_t test10_2_t } : file read; neverallow test10_a self : file *; ## Test 11 (wildcard) type test11_t; allow test11_t self : process *; neverallow * * : process *; ## Test 12 (complement attributes) attribute test12_1_a; attribute test12_2_a; attribute test12_3_a; type test12_1_t, test12_1_a; type test12_2_t, test12_2_a; type test12_3_t, test12_3_a; allow { test12_1_a test12_2_a test12_3_a } { test12_1_a test12_2_a test12_3_a } : file *; neverallow ~{ test12_1_a test12_2_t } ~{ test12_3_a } : file getattr; neverallow ~{ test12_1_a } ~{ test12_2_a test12_3_t } : file open; ## Test 13 (excludes) attribute test13_1_a; attribute test13_2_a; attribute test13_3_a; type test13_1_t, test13_1_a; type test13_2_t, test13_2_a; type test13_3_t, test13_3_a; allow { test13_1_a test13_2_a test13_3_a } { test13_1_a test13_2_a test13_3_a } : file { read write }; neverallow { test13_1_a test13_2_a test13_3_a -test13_2_a -test13_3_t } { test13_1_a test13_2_a test13_3_a -test13_2_t -test13_3_a } : file read; ## Test 14 (misc avrules) type test14_t; auditallow test14_t test14_t : file read; dontaudit test14_t test14_t : file write; neverallow test14_t test14_t : file { read write }; type_transition test14_t test14_t : file test14_t; type_transition test14_t test14_t : file test14_t "objname"; neverallow test14_t test14_t : file *; # nofail ## Test 15 (extended permissions - standard allow) type test15_t; allow test15_t self : file ioctl; neverallowxperm test15_t self : file ioctl 0x1111; ## Test 16 (extended permissions - allowxperm) type test16_t; allow test16_t self : file ioctl; allowxperm test16_t self : file ioctl 0x1111; neverallowxperm test16_t self : file ioctl 0x1111; ## Test 17 (extended permissions - allowxperm mismatch) type test17_t; allow test17_t self : file ioctl; allowxperm test17_t self : file ioctl 0x1111; neverallowxperm test17_t self : file ioctl 0x2222; # nofail ## Test 18 (extended permissions - allowxperm range I) type test18_t; allow test18_t self : file ioctl; allowxperm test18_t self : file ioctl { 0x1100-0x1300 }; neverallowxperm test18_t self : file ioctl 0x1111; ## Test 19 (extended permissions - allowxperm range II) type test19_t; allow test19_t self : file ioctl; allowxperm test19_t self : file ioctl 0x1111; neverallowxperm test19_t self : file ioctl { 0x1100-0x1300 }; ## Test 20 (extended permissions - misc targets I) attribute test20_a; type test20_t, test20_a; allow test20_a test20_a : file ioctl; allowxperm test20_a test20_a : file ioctl 0x1111; neverallowxperm test20_a self : file ioctl 0x1111; ## Test 21 (extended permissions - misc targets II) attribute test21_1_a; attribute test21_2_a; type test21_t, test21_1_a, test21_2_a; allow test21_1_a test21_1_a : file ioctl; allowxperm test21_1_a test21_2_a : file ioctl 0x1111; neverallowxperm test21_1_a self : file ioctl 0x1111; ## Test 22 (extended permissions - misc targets III) attribute test22_a; type test22_t, test22_a; allow test22_a test22_a : file ioctl; allowxperm test22_t self : file ioctl 0x1111; neverallowxperm test22_a self : file ioctl 0x1111; ## Test 23 (extended permissions - misc targets IV) attribute test23_a; type test23_t, test23_a; allow test23_a test23_a : file ioctl; allowxperm test23_t test23_t : file ioctl 0x1111; neverallowxperm test23_a self : file ioctl 0x1111; ## Test 24 (extended permissions - misc targets V) attribute test24_a; type test24_t, test24_a; allow test24_a test24_a : file ioctl; allowxperm test24_t test24_a : file ioctl 0x1111; neverallowxperm test24_a self : file ioctl 0x1111; ## Test 25 (extended permissions - misc targets VI) attribute test25_a; type test25_t, test25_a; allow test25_a test25_a : file ioctl; allowxperm test25_a self : file ioctl 0x1111; neverallowxperm test25_a self : file ioctl 0x1111; ## Test 26 (extended permissions - assert twice) attribute test26_a; type test26_1_t, test26_a; type test26_2_t, test26_a; allow test26_a test26_a : file ioctl; allowxperm test26_a test26_a : file ioctl 0x1111; neverallowxperm test26_1_t test26_a : file ioctl 0x1111; ######################################## # # Test End # ######################################## type sys_isid; role sys_role; role sys_role types sys_isid; gen_user(sys_user,, sys_role, s0, s0 - s0:c0.c23) sid kernel gen_context(sys_user:sys_role:sys_isid, s0) sid security gen_context(sys_user:sys_role:sys_isid, s0) sid unlabeled gen_context(sys_user:sys_role:sys_isid, s0) sid file gen_context(sys_user:sys_role:sys_isid, s0) sid port gen_context(sys_user:sys_role:sys_isid, s0) sid netif gen_context(sys_user:sys_role:sys_isid, s0) sid netmsg gen_context(sys_user:sys_role:sys_isid, s0) sid node gen_context(sys_user:sys_role:sys_isid, s0) sid devnull gen_context(sys_user:sys_role:sys_isid, s0) fs_use_trans devpts gen_context(sys_user:sys_role:sys_isid, s0); fs_use_trans devtmpfs gen_context(sys_user:sys_role:sys_isid, s0);