aboutsummaryrefslogtreecommitdiff
blob: a8870b96c625abca65b8ebbca0fe53ca1d4807a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
## <summary>libcg is a library that abstracts the control group file system in Linux.</summary>

########################################
## <summary>
##	Execute a domain transition to run
##	CG Clear.
## </summary>
## <param name="domain">
## <summary>
##	Domain allowed to transition.
## </summary>
## </param>
#
interface(`cgroup_domtrans_cgclear',`
	gen_require(`
		type cgclear_t, cgclear_exec_t;
	')

	domtrans_pattern($1, cgclear_exec_t, cgclear_t)
	corecmd_search_bin($1)
')

########################################
## <summary>
##	Execute a domain transition to run
##	CG config parser.
## </summary>
## <param name="domain">
## <summary>
##	Domain allowed to transition.
## </summary>
## </param>
#
interface(`cgroup_domtrans_cgconfig',`
	gen_require(`
		type cgconfig_t, cgconfig_exec_t;
	')

	domtrans_pattern($1, cgconfig_exec_t, cgconfig_t)
	corecmd_search_bin($1)
')

########################################
## <summary>
##	Execute CG config init scripts in
##	the init script domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`cgroup_initrc_domtrans_cgconfig',`
	gen_require(`
		type cgconfig_initrc_exec_t;
	')

	init_labeled_script_domtrans($1, cgconfig_initrc_exec_t)
')

########################################
## <summary>
##	Execute a domain transition to run
##	CG rules engine daemon.
## </summary>
## <param name="domain">
## <summary>
##	Domain allowed to transition.
## </summary>
## </param>
#
interface(`cgroup_domtrans_cgred',`
	gen_require(`
		type cgred_t, cgred_exec_t;
	')

	domtrans_pattern($1, cgred_exec_t, cgred_t)
	corecmd_search_bin($1)
')

########################################
## <summary>
##	Execute a domain transition to run
## 	CG rules engine daemon.
##	domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`cgroup_initrc_domtrans_cgred',`
	gen_require(`
		type cgred_initrc_exec_t;
	')

	init_labeled_script_domtrans($1, cgred_initrc_exec_t)
')

########################################
## <summary>
##	Execute a domain transition to
##	run CG Clear and allow the
##	specified role the CG Clear
##	domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`cgroup_run_cgclear',`
	gen_require(`
		type cgclear_t;
	')

	cgroup_domtrans_cgclear($1)
	role $2 types cgclear_t;
')

########################################
## <summary>
##	Connect to CG rules engine daemon
##	over unix stream sockets.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`cgroup_stream_connect_cgred', `
	gen_require(`
		type cgred_var_run_t, cgred_t;
	')

	stream_connect_pattern($1, cgred_var_run_t, cgred_var_run_t, cgred_t)
	files_search_pids($1)
')

########################################
## <summary>
##	All of the rules required to administrate
##	an cgroup environment.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`cgroup_admin',`
	gen_require(`
		type cgred_t, cgconfig_t, cgred_var_run_t;
		type cgconfig_etc_t, cgconfig_initrc_exec_t, cgred_initrc_exec_t;
		type cgrules_etc_t, cgclear_t;
	')

	allow $1 { cgclear_t cgconfig_t cgred_t }:process { ptrace signal_perms };
	ps_process_pattern($1, { cgclear_t cgconfig_t cgred_t })

	admin_pattern($1, { cgconfig_etc_t cgrules_etc_t })
	files_list_etc($1)

	admin_pattern($1, cgred_var_run_t)
	files_list_pids($1)

	init_startstop_service($1, $2, cgred_t, cgred_initrc_exec_t)
	init_startstop_service($1, $2, cgconfig_t, cgconfig_initrc_exec_t)

	cgroup_run_cgclear($1, $2)
')