]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - refpolicy/policy/modules/admin/dpkg.te
enable optionals in base/monolithic
[people/stevee/selinux-policy.git] / refpolicy / policy / modules / admin / dpkg.te
CommitLineData
0c54fcf8
CP
1
2policy_module(dpkg,1.0.0)
3
4########################################
5#
6# Declarations
7#
8
9type dpkg_t;
10type dpkg_exec_t;
11# dpkg can start/stop services
12init_system_domain(dpkg_t,dpkg_exec_t)
13# dpkg can change file labels, roles, IO
14domain_obj_id_change_exemption(dpkg_t)
15domain_role_change_exemption(dpkg_t)
16domain_system_change_exemption(dpkg_t)
17domain_interactive_fd(dpkg_t)
18role system_r types dpkg_t;
19
20# lockfile
21type dpkg_lock_t;
22files_type(dpkg_lock_t)
23
24type dpkg_tmp_t;
25files_tmp_file(dpkg_tmp_t)
26
27type dpkg_tmpfs_t;
28files_tmpfs_file(dpkg_tmpfs_t)
29
30# status files
31type dpkg_var_lib_t alias var_lib_dpkg_t;
32files_type(dpkg_var_lib_t)
33
34# package scripts
35type dpkg_script_t;
36domain_type(dpkg_script_t)
37domain_entry_file(dpkg_t, dpkg_var_lib_t)
38corecmd_shell_entry_type(dpkg_script_t)
39domain_obj_id_change_exemption(dpkg_script_t)
40domain_system_change_exemption(dpkg_script_t)
41domain_interactive_fd(dpkg_script_t)
42role system_r types dpkg_script_t;
43
44type dpkg_script_tmp_t;
45files_tmp_file(dpkg_script_tmp_t)
46
47type dpkg_script_tmpfs_t;
48files_tmpfs_file(dpkg_script_tmpfs_t)
49
50########################################
51#
52# dpkg Local policy
53#
54
55allow dpkg_t self:capability { chown dac_override fowner fsetid setgid setuid kill sys_tty_config sys_nice sys_resource mknod linux_immutable };
56allow dpkg_t self:process { setpgid fork getsched setfscreate };
57allow dpkg_t self:fd use;
58allow dpkg_t self:fifo_file rw_file_perms;
59allow dpkg_t self:unix_dgram_socket create_socket_perms;
60allow dpkg_t self:unix_stream_socket rw_stream_socket_perms;
61allow dpkg_t self:unix_dgram_socket sendto;
62allow dpkg_t self:unix_stream_socket connectto;
63allow dpkg_t self:udp_socket { connect create_socket_perms };
64allow dpkg_t self:tcp_socket create_stream_socket_perms;
65allow dpkg_t self:shm create_shm_perms;
66allow dpkg_t self:sem create_sem_perms;
67allow dpkg_t self:msgq create_msgq_perms;
68allow dpkg_t self:msg { send receive };
69
70allow dpkg_t dpkg_lock_t:file manage_file_perms;
71
72allow dpkg_t dpkg_tmp_t:dir manage_dir_perms;
73allow dpkg_t dpkg_tmp_t:file manage_file_perms;
74files_tmp_filetrans(dpkg_t, dpkg_tmp_t, { file dir })
75
76allow dpkg_t dpkg_tmpfs_t:dir manage_dir_perms;
77allow dpkg_t dpkg_tmpfs_t:file manage_file_perms;
78allow dpkg_t dpkg_tmpfs_t:lnk_file manage_file_perms;
79allow dpkg_t dpkg_tmpfs_t:sock_file manage_file_perms;
80allow dpkg_t dpkg_tmpfs_t:fifo_file manage_file_perms;
81fs_tmpfs_filetrans(dpkg_t,dpkg_tmpfs_t,{ dir file lnk_file sock_file fifo_file })
82
83# Access /var/lib/dpkg files
84allow dpkg_t dpkg_var_lib_t:file manage_file_perms;
85allow dpkg_t dpkg_var_lib_t:dir rw_dir_perms;
86files_var_lib_filetrans(dpkg_t,dpkg_var_lib_t,dir)
87
88kernel_read_system_state(dpkg_t)
89kernel_read_kernel_sysctls(dpkg_t)
90
91corecmd_exec_bin(dpkg_t)
92corecmd_exec_sbin(dpkg_t)
93
94# TODO: do we really need all networking?
95corenet_tcp_sendrecv_all_if(dpkg_t)
96corenet_raw_sendrecv_all_if(dpkg_t)
97corenet_udp_sendrecv_all_if(dpkg_t)
98corenet_tcp_sendrecv_all_nodes(dpkg_t)
99corenet_raw_sendrecv_all_nodes(dpkg_t)
100corenet_udp_sendrecv_all_nodes(dpkg_t)
101corenet_tcp_sendrecv_all_ports(dpkg_t)
102corenet_udp_sendrecv_all_ports(dpkg_t)
103corenet_non_ipsec_sendrecv(dpkg_t)
104corenet_tcp_bind_all_nodes(dpkg_t)
105corenet_udp_bind_all_nodes(dpkg_t)
106corenet_tcp_connect_all_ports(dpkg_t)
107
108dev_list_sysfs(dpkg_t)
109dev_list_usbfs(dpkg_t)
110dev_read_urand(dpkg_t)
111#devices_manage_all_device_types(dpkg_t)
112
113domain_exec_all_entry_files(dpkg_t)
114domain_read_all_domains_state(dpkg_t)
115domain_getattr_all_domains(dpkg_t)
116domain_dontaudit_ptrace_all_domains(dpkg_t)
117domain_use_interactive_fds(dpkg_t)
118domain_dontaudit_getattr_all_pipes(dpkg_t)
119domain_dontaudit_getattr_all_tcp_sockets(dpkg_t)
120domain_dontaudit_getattr_all_udp_sockets(dpkg_t)
121domain_dontaudit_getattr_all_packet_sockets(dpkg_t)
122domain_dontaudit_getattr_all_raw_sockets(dpkg_t)
123domain_dontaudit_getattr_all_stream_sockets(dpkg_t)
124domain_dontaudit_getattr_all_dgram_sockets(dpkg_t)
125
126fs_manage_nfs_dirs(dpkg_t)
127fs_manage_nfs_files(dpkg_t)
128fs_manage_nfs_symlinks(dpkg_t)
129fs_getattr_all_fs(dpkg_t)
130fs_search_auto_mountpoints(dpkg_t)
131
132mls_file_read_up(dpkg_t)
133mls_file_write_down(dpkg_t)
134mls_file_upgrade(dpkg_t)
135
136selinux_get_fs_mount(dpkg_t)
137selinux_validate_context(dpkg_t)
138selinux_compute_access_vector(dpkg_t)
139selinux_compute_create_context(dpkg_t)
140selinux_compute_relabel_context(dpkg_t)
141selinux_compute_user_contexts(dpkg_t)
142
143storage_raw_write_fixed_disk(dpkg_t)
144# for installing kernel packages
145storage_raw_read_fixed_disk(dpkg_t)
146
147term_list_ptys(dpkg_t)
148
149auth_relabel_all_files_except_shadow(dpkg_t)
150auth_manage_all_files_except_shadow(dpkg_t)
151auth_dontaudit_read_shadow(dpkg_t)
152
153files_exec_etc_files(dpkg_t)
154
155init_domtrans_script(dpkg_t)
156
157libs_use_ld_so(dpkg_t)
158libs_use_shared_libs(dpkg_t)
159libs_exec_ld_so(dpkg_t)
160libs_exec_lib_files(dpkg_t)
161libs_domtrans_ldconfig(dpkg_t)
162
163logging_send_syslog_msg(dpkg_t)
164
165# allow compiling and loading new policy
166seutil_manage_src_policy(dpkg_t)
167seutil_manage_bin_policy(dpkg_t)
168
169sysnet_read_config(dpkg_t)
170
171userdom_use_unpriv_users_fds(dpkg_t)
172
173# transition to dpkg script:
174dpkg_domtrans_script(dpkg_t)
175# since the scripts aren't labeled correctly yet...
176allow dpkg_t dpkg_var_lib_t:file execute;
177
178ifdef(`targeted_policy',`
179 unconfined_domain(dpkg_t)
180')
181
182# TODO: allow?
183#optional_policy(`cron',`
184# cron_system_entry(dpkg_t,dpkg_exec_t)
185#')
186
187optional_policy(`mount',`
188 mount_send_nfs_client_request(dpkg_t)
189')
190
191optional_policy(`nis',`
192 nis_use_ypbind(dpkg_t)
193')
194
195# TODO: the following was copied from dpkg_script_t, and could probably
196# be removed again when dpkg_script_t is actually used...
197domain_signal_all_domains(dpkg_t)
198domain_signull_all_domains(dpkg_t)
199files_read_etc_runtime_files(dpkg_t)
200files_exec_usr_files(dpkg_t)
201miscfiles_read_localization(dpkg_t)
202modutils_domtrans_depmod(dpkg_t)
203modutils_domtrans_insmod(dpkg_t)
204seutil_domtrans_loadpolicy(dpkg_t)
205seutil_domtrans_restorecon(dpkg_t)
206userdom_use_all_users_fds(dpkg_t)
207optional_policy(`mta',`
208 mta_send_mail(dpkg_t)
209')
210optional_policy(`usermanage',`
211 usermanage_domtrans_groupadd(dpkg_t)
212 usermanage_domtrans_useradd(dpkg_t)
213')
214
215########################################
216#
217# dpkg-script Local policy
218#
219# TODO: actually use dpkg_script_t
220
221allow dpkg_script_t self:capability { chown dac_override dac_read_search fowner fsetid setgid setuid ipc_lock sys_chroot sys_nice mknod kill };
222allow dpkg_script_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
223allow dpkg_script_t self:fd use;
224allow dpkg_script_t self:fifo_file rw_file_perms;
225allow dpkg_script_t self:unix_dgram_socket create_socket_perms;
226allow dpkg_script_t self:unix_stream_socket rw_stream_socket_perms;
227allow dpkg_script_t self:unix_dgram_socket sendto;
228allow dpkg_script_t self:unix_stream_socket connectto;
229allow dpkg_script_t self:shm create_shm_perms;
230allow dpkg_script_t self:sem create_sem_perms;
231allow dpkg_script_t self:msgq create_msgq_perms;
232allow dpkg_script_t self:msg { send receive };
233
234allow dpkg_script_t dpkg_tmp_t:file r_file_perms;
235
236allow dpkg_script_t dpkg_script_tmp_t:dir { manage_dir_perms mounton };
237allow dpkg_script_t dpkg_script_tmp_t:file manage_file_perms;
238files_tmp_filetrans(dpkg_script_t, dpkg_script_tmp_t, { file dir })
239
240allow dpkg_script_t dpkg_script_tmpfs_t:dir manage_dir_perms;
241allow dpkg_script_t dpkg_script_tmpfs_t:file manage_file_perms;
242allow dpkg_script_t dpkg_script_tmpfs_t:lnk_file create_lnk_perms;
243allow dpkg_script_t dpkg_script_tmpfs_t:sock_file manage_file_perms;
244allow dpkg_script_t dpkg_script_tmpfs_t:fifo_file manage_file_perms;
245fs_tmpfs_filetrans(dpkg_script_t,dpkg_script_tmpfs_t,{ dir file lnk_file sock_file fifo_file })
246
247kernel_read_kernel_sysctls(dpkg_script_t)
248kernel_read_system_state(dpkg_script_t)
249
250corecmd_exec_bin(dpkg_script_t)
251corecmd_exec_sbin(dpkg_script_t)
252
253dev_list_sysfs(dpkg_script_t)
254# ideally we would not need this
255dev_manage_generic_blk_files(dpkg_script_t)
256dev_manage_generic_chr_files(dpkg_script_t)
257dev_manage_all_blk_files(dpkg_script_t)
258dev_manage_all_chr_files(dpkg_script_t)
259
260domain_read_all_domains_state(dpkg_script_t)
261domain_getattr_all_domains(dpkg_script_t)
262domain_dontaudit_ptrace_all_domains(dpkg_script_t)
263domain_use_interactive_fds(dpkg_script_t)
264domain_exec_all_entry_files(dpkg_script_t)
265domain_signal_all_domains(dpkg_script_t)
266domain_signull_all_domains(dpkg_script_t)
267
268files_exec_etc_files(dpkg_script_t)
269files_read_etc_runtime_files(dpkg_script_t)
270files_exec_usr_files(dpkg_script_t)
271
272fs_manage_nfs_files(dpkg_script_t)
273fs_getattr_nfs(dpkg_script_t)
274# why is this not using mount?
275fs_getattr_xattr_fs(dpkg_script_t)
276fs_mount_xattr_fs(dpkg_script_t)
277fs_unmount_xattr_fs(dpkg_script_t)
278fs_search_auto_mountpoints(dpkg_script_t)
279
280mls_file_read_up(dpkg_script_t)
281mls_file_write_down(dpkg_script_t)
282
283selinux_get_fs_mount(dpkg_script_t)
284selinux_validate_context(dpkg_script_t)
285selinux_compute_access_vector(dpkg_script_t)
286selinux_compute_create_context(dpkg_script_t)
287selinux_compute_relabel_context(dpkg_script_t)
288selinux_compute_user_contexts(dpkg_script_t)
289
290storage_raw_read_fixed_disk(dpkg_script_t)
291storage_raw_write_fixed_disk(dpkg_script_t)
292
293term_getattr_unallocated_ttys(dpkg_script_t)
294term_list_ptys(dpkg_script_t)
295term_use_all_terms(dpkg_script_t)
296
297auth_dontaudit_getattr_shadow(dpkg_script_t)
298# ideally we would not need this
299auth_manage_all_files_except_shadow(dpkg_script_t)
300
301init_domtrans_script(dpkg_script_t)
302
303libs_use_ld_so(dpkg_script_t)
304libs_use_shared_libs(dpkg_script_t)
305libs_exec_ld_so(dpkg_script_t)
306libs_exec_lib_files(dpkg_script_t)
307libs_domtrans_ldconfig(dpkg_script_t)
308
309logging_send_syslog_msg(dpkg_script_t)
310
311miscfiles_read_localization(dpkg_script_t)
312
313modutils_domtrans_depmod(dpkg_script_t)
314modutils_domtrans_insmod(dpkg_script_t)
315
316seutil_domtrans_loadpolicy(dpkg_script_t)
317seutil_domtrans_restorecon(dpkg_script_t)
318
319userdom_use_all_users_fds(dpkg_script_t)
320
321ifdef(`distro_redhat',`
322 unconfined_domain(dpkg_script_t)
323')
324
325ifdef(`targeted_policy',`
326 unconfined_domain(dpkg_script_t)
327',`
328 optional_policy(`bootloader',`
329 bootloader_domtrans(dpkg_script_t)
330 ')
331')
332
333tunable_policy(`allow_execmem',`
334 allow dpkg_script_t self:process execmem;
335')
336
337optional_policy(`mta',`
338 mta_send_mail(dpkg_script_t)
339')
340
341optional_policy(`nis',`
342 nis_use_ypbind(dpkg_script_t)
343')
344
345optional_policy(`usermanage',`
346 usermanage_domtrans_groupadd(dpkg_script_t)
347 usermanage_domtrans_useradd(dpkg_script_t)
348')