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