]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - policy/modules/admin/dpkg.te
trunk: Enable open permission checks policy capability.
[people/stevee/selinux-policy.git] / policy / modules / admin / dpkg.te
CommitLineData
0c54fcf8 1
0bfccda4 2policy_module(dpkg, 1.5.0)
0c54fcf8
CP
3
4########################################
5#
6# Declarations
7#
8
9type dpkg_t;
10type dpkg_exec_t;
11# dpkg can start/stop services
0bfccda4 12init_system_domain(dpkg_t, dpkg_exec_t)
0c54fcf8
CP
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;
c0868a7a 58allow dpkg_t self:fifo_file rw_fifo_file_perms;
0c54fcf8
CP
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
0bfccda4
CP
72manage_dirs_pattern(dpkg_t, dpkg_tmp_t, dpkg_tmp_t)
73manage_files_pattern(dpkg_t, dpkg_tmp_t, dpkg_tmp_t)
0c54fcf8
CP
74files_tmp_filetrans(dpkg_t, dpkg_tmp_t, { file dir })
75
0bfccda4
CP
76manage_dirs_pattern(dpkg_t, dpkg_tmpfs_t, dpkg_tmpfs_t)
77manage_files_pattern(dpkg_t, dpkg_tmpfs_t, dpkg_tmpfs_t)
78manage_lnk_files_pattern(dpkg_t, dpkg_tmpfs_t, dpkg_tmpfs_t)
79manage_sock_files_pattern(dpkg_t, dpkg_tmpfs_t, dpkg_tmpfs_t)
80manage_fifo_files_pattern(dpkg_t, dpkg_tmpfs_t, dpkg_tmpfs_t)
81fs_tmpfs_filetrans(dpkg_t, dpkg_tmpfs_t, { dir file lnk_file sock_file fifo_file })
0c54fcf8
CP
82
83# Access /var/lib/dpkg files
0bfccda4
CP
84manage_files_pattern(dpkg_t, dpkg_var_lib_t, dpkg_var_lib_t)
85files_var_lib_filetrans(dpkg_t, dpkg_var_lib_t, dir)
0c54fcf8
CP
86
87kernel_read_system_state(dpkg_t)
88kernel_read_kernel_sysctls(dpkg_t)
89
fb63d0b5 90corecmd_exec_all_executables(dpkg_t)
0c54fcf8
CP
91
92# TODO: do we really need all networking?
19006686
CP
93corenet_all_recvfrom_unlabeled(dpkg_t)
94corenet_all_recvfrom_netlabel(dpkg_t)
0c54fcf8
CP
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)
0c54fcf8 103corenet_tcp_connect_all_ports(dpkg_t)
9d0c9b3e 104corenet_sendrecv_all_client_packets(dpkg_t)
0c54fcf8
CP
105
106dev_list_sysfs(dpkg_t)
107dev_list_usbfs(dpkg_t)
108dev_read_urand(dpkg_t)
109#devices_manage_all_device_types(dpkg_t)
110
0c54fcf8
CP
111domain_read_all_domains_state(dpkg_t)
112domain_getattr_all_domains(dpkg_t)
113domain_dontaudit_ptrace_all_domains(dpkg_t)
114domain_use_interactive_fds(dpkg_t)
115domain_dontaudit_getattr_all_pipes(dpkg_t)
116domain_dontaudit_getattr_all_tcp_sockets(dpkg_t)
117domain_dontaudit_getattr_all_udp_sockets(dpkg_t)
118domain_dontaudit_getattr_all_packet_sockets(dpkg_t)
119domain_dontaudit_getattr_all_raw_sockets(dpkg_t)
120domain_dontaudit_getattr_all_stream_sockets(dpkg_t)
121domain_dontaudit_getattr_all_dgram_sockets(dpkg_t)
122
123fs_manage_nfs_dirs(dpkg_t)
124fs_manage_nfs_files(dpkg_t)
125fs_manage_nfs_symlinks(dpkg_t)
126fs_getattr_all_fs(dpkg_t)
127fs_search_auto_mountpoints(dpkg_t)
128
f8233ab7
CP
129mls_file_read_all_levels(dpkg_t)
130mls_file_write_all_levels(dpkg_t)
0c54fcf8
CP
131mls_file_upgrade(dpkg_t)
132
133selinux_get_fs_mount(dpkg_t)
134selinux_validate_context(dpkg_t)
135selinux_compute_access_vector(dpkg_t)
136selinux_compute_create_context(dpkg_t)
137selinux_compute_relabel_context(dpkg_t)
138selinux_compute_user_contexts(dpkg_t)
139
140storage_raw_write_fixed_disk(dpkg_t)
141# for installing kernel packages
142storage_raw_read_fixed_disk(dpkg_t)
143
144term_list_ptys(dpkg_t)
145
146auth_relabel_all_files_except_shadow(dpkg_t)
147auth_manage_all_files_except_shadow(dpkg_t)
148auth_dontaudit_read_shadow(dpkg_t)
149
150files_exec_etc_files(dpkg_t)
151
152init_domtrans_script(dpkg_t)
e065ac8a 153init_use_script_ptys(dpkg_t)
0c54fcf8
CP
154
155libs_use_ld_so(dpkg_t)
156libs_use_shared_libs(dpkg_t)
157libs_exec_ld_so(dpkg_t)
158libs_exec_lib_files(dpkg_t)
159libs_domtrans_ldconfig(dpkg_t)
160
161logging_send_syslog_msg(dpkg_t)
162
163# allow compiling and loading new policy
164seutil_manage_src_policy(dpkg_t)
165seutil_manage_bin_policy(dpkg_t)
166
167sysnet_read_config(dpkg_t)
168
169userdom_use_unpriv_users_fds(dpkg_t)
170
171# transition to dpkg script:
172dpkg_domtrans_script(dpkg_t)
173# since the scripts aren't labeled correctly yet...
0b36a214 174allow dpkg_t dpkg_var_lib_t:file mmap_file_perms;
0c54fcf8 175
e065ac8a
CP
176optional_policy(`
177 apt_use_ptys(dpkg_t)
178')
179
0c54fcf8 180# TODO: allow?
bb7170f6 181#optional_policy(`
0c54fcf8
CP
182# cron_system_entry(dpkg_t,dpkg_exec_t)
183#')
184
bb7170f6 185optional_policy(`
0c54fcf8
CP
186 nis_use_ypbind(dpkg_t)
187')
188
350b6ab7
CP
189optional_policy(`
190 unconfined_domain(dpkg_t)
191')
192
0c54fcf8
CP
193# TODO: the following was copied from dpkg_script_t, and could probably
194# be removed again when dpkg_script_t is actually used...
195domain_signal_all_domains(dpkg_t)
196domain_signull_all_domains(dpkg_t)
197files_read_etc_runtime_files(dpkg_t)
198files_exec_usr_files(dpkg_t)
199miscfiles_read_localization(dpkg_t)
200modutils_domtrans_depmod(dpkg_t)
201modutils_domtrans_insmod(dpkg_t)
202seutil_domtrans_loadpolicy(dpkg_t)
762d2cb9 203seutil_domtrans_setfiles(dpkg_t)
0c54fcf8 204userdom_use_all_users_fds(dpkg_t)
bb7170f6 205optional_policy(`
0c54fcf8
CP
206 mta_send_mail(dpkg_t)
207')
bb7170f6 208optional_policy(`
0c54fcf8
CP
209 usermanage_domtrans_groupadd(dpkg_t)
210 usermanage_domtrans_useradd(dpkg_t)
211')
212
213########################################
214#
215# dpkg-script Local policy
216#
217# TODO: actually use dpkg_script_t
218
219allow dpkg_script_t self:capability { chown dac_override dac_read_search fowner fsetid setgid setuid ipc_lock sys_chroot sys_nice mknod kill };
220allow dpkg_script_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
221allow dpkg_script_t self:fd use;
ef659a47 222allow dpkg_script_t self:fifo_file rw_fifo_file_perms;
0c54fcf8
CP
223allow dpkg_script_t self:unix_dgram_socket create_socket_perms;
224allow dpkg_script_t self:unix_stream_socket rw_stream_socket_perms;
225allow dpkg_script_t self:unix_dgram_socket sendto;
226allow dpkg_script_t self:unix_stream_socket connectto;
227allow dpkg_script_t self:shm create_shm_perms;
228allow dpkg_script_t self:sem create_sem_perms;
229allow dpkg_script_t self:msgq create_msgq_perms;
230allow dpkg_script_t self:msg { send receive };
231
ef659a47 232allow dpkg_script_t dpkg_tmp_t:file read_file_perms;
0c54fcf8
CP
233
234allow dpkg_script_t dpkg_script_tmp_t:dir { manage_dir_perms mounton };
235allow dpkg_script_t dpkg_script_tmp_t:file manage_file_perms;
236files_tmp_filetrans(dpkg_script_t, dpkg_script_tmp_t, { file dir })
237
238allow dpkg_script_t dpkg_script_tmpfs_t:dir manage_dir_perms;
239allow dpkg_script_t dpkg_script_tmpfs_t:file manage_file_perms;
ef659a47
CP
240allow dpkg_script_t dpkg_script_tmpfs_t:lnk_file manage_lnk_file_perms;
241allow dpkg_script_t dpkg_script_tmpfs_t:sock_file manage_sock_file_perms;
242allow dpkg_script_t dpkg_script_tmpfs_t:fifo_file manage_fifo_file_perms;
0bfccda4 243fs_tmpfs_filetrans(dpkg_script_t, dpkg_script_tmpfs_t, { dir file lnk_file sock_file fifo_file })
0c54fcf8
CP
244
245kernel_read_kernel_sysctls(dpkg_script_t)
246kernel_read_system_state(dpkg_script_t)
247
fb63d0b5 248corecmd_exec_all_executables(dpkg_script_t)
0c54fcf8
CP
249
250dev_list_sysfs(dpkg_script_t)
251# ideally we would not need this
252dev_manage_generic_blk_files(dpkg_script_t)
253dev_manage_generic_chr_files(dpkg_script_t)
254dev_manage_all_blk_files(dpkg_script_t)
255dev_manage_all_chr_files(dpkg_script_t)
256
257domain_read_all_domains_state(dpkg_script_t)
258domain_getattr_all_domains(dpkg_script_t)
259domain_dontaudit_ptrace_all_domains(dpkg_script_t)
260domain_use_interactive_fds(dpkg_script_t)
0c54fcf8
CP
261domain_signal_all_domains(dpkg_script_t)
262domain_signull_all_domains(dpkg_script_t)
263
264files_exec_etc_files(dpkg_script_t)
265files_read_etc_runtime_files(dpkg_script_t)
266files_exec_usr_files(dpkg_script_t)
267
268fs_manage_nfs_files(dpkg_script_t)
269fs_getattr_nfs(dpkg_script_t)
270# why is this not using mount?
271fs_getattr_xattr_fs(dpkg_script_t)
272fs_mount_xattr_fs(dpkg_script_t)
273fs_unmount_xattr_fs(dpkg_script_t)
274fs_search_auto_mountpoints(dpkg_script_t)
275
f8233ab7
CP
276mls_file_read_all_levels(dpkg_script_t)
277mls_file_write_all_levels(dpkg_script_t)
0c54fcf8
CP
278
279selinux_get_fs_mount(dpkg_script_t)
280selinux_validate_context(dpkg_script_t)
281selinux_compute_access_vector(dpkg_script_t)
282selinux_compute_create_context(dpkg_script_t)
283selinux_compute_relabel_context(dpkg_script_t)
284selinux_compute_user_contexts(dpkg_script_t)
285
286storage_raw_read_fixed_disk(dpkg_script_t)
287storage_raw_write_fixed_disk(dpkg_script_t)
288
289term_getattr_unallocated_ttys(dpkg_script_t)
290term_list_ptys(dpkg_script_t)
291term_use_all_terms(dpkg_script_t)
292
293auth_dontaudit_getattr_shadow(dpkg_script_t)
294# ideally we would not need this
295auth_manage_all_files_except_shadow(dpkg_script_t)
296
297init_domtrans_script(dpkg_script_t)
e065ac8a 298init_use_script_fds(dpkg_script_t)
0c54fcf8
CP
299
300libs_use_ld_so(dpkg_script_t)
301libs_use_shared_libs(dpkg_script_t)
302libs_exec_ld_so(dpkg_script_t)
303libs_exec_lib_files(dpkg_script_t)
304libs_domtrans_ldconfig(dpkg_script_t)
305
306logging_send_syslog_msg(dpkg_script_t)
307
308miscfiles_read_localization(dpkg_script_t)
309
310modutils_domtrans_depmod(dpkg_script_t)
311modutils_domtrans_insmod(dpkg_script_t)
312
313seutil_domtrans_loadpolicy(dpkg_script_t)
762d2cb9 314seutil_domtrans_setfiles(dpkg_script_t)
0c54fcf8
CP
315
316userdom_use_all_users_fds(dpkg_script_t)
317
0c54fcf8
CP
318tunable_policy(`allow_execmem',`
319 allow dpkg_script_t self:process execmem;
320')
321
e065ac8a
CP
322optional_policy(`
323 apt_rw_pipes(dpkg_script_t)
324 apt_use_fds(dpkg_script_t)
325')
326
350b6ab7
CP
327optional_policy(`
328 bootloader_domtrans(dpkg_script_t)
329')
330
bb7170f6 331optional_policy(`
0c54fcf8
CP
332 mta_send_mail(dpkg_script_t)
333')
334
bb7170f6 335optional_policy(`
0c54fcf8
CP
336 nis_use_ypbind(dpkg_script_t)
337')
338
350b6ab7
CP
339optional_policy(`
340 unconfined_domain(dpkg_script_t)
341')
342
bb7170f6 343optional_policy(`
0c54fcf8
CP
344 usermanage_domtrans_groupadd(dpkg_script_t)
345 usermanage_domtrans_useradd(dpkg_script_t)
346')