]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - policy/modules/admin/dpkg.te
trunk: change network interface access from all to generic network interfaces.
[people/stevee/selinux-policy.git] / policy / modules / admin / dpkg.te
CommitLineData
0c54fcf8 1
668b3093 2policy_module(dpkg, 1.6.1)
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)
668b3093
CP
95corenet_tcp_sendrecv_generic_if(dpkg_t)
96corenet_raw_sendrecv_generic_if(dpkg_t)
97corenet_udp_sendrecv_generic_if(dpkg_t)
0c54fcf8
CP
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
0c54fcf8
CP
144auth_relabel_all_files_except_shadow(dpkg_t)
145auth_manage_all_files_except_shadow(dpkg_t)
146auth_dontaudit_read_shadow(dpkg_t)
147
148files_exec_etc_files(dpkg_t)
149
150init_domtrans_script(dpkg_t)
e065ac8a 151init_use_script_ptys(dpkg_t)
0c54fcf8 152
0c54fcf8
CP
153libs_exec_ld_so(dpkg_t)
154libs_exec_lib_files(dpkg_t)
155libs_domtrans_ldconfig(dpkg_t)
156
157logging_send_syslog_msg(dpkg_t)
158
159# allow compiling and loading new policy
160seutil_manage_src_policy(dpkg_t)
161seutil_manage_bin_policy(dpkg_t)
162
163sysnet_read_config(dpkg_t)
164
296273a7 165userdom_use_user_terminals(dpkg_t)
0c54fcf8
CP
166userdom_use_unpriv_users_fds(dpkg_t)
167
168# transition to dpkg script:
169dpkg_domtrans_script(dpkg_t)
170# since the scripts aren't labeled correctly yet...
0b36a214 171allow dpkg_t dpkg_var_lib_t:file mmap_file_perms;
0c54fcf8 172
e065ac8a
CP
173optional_policy(`
174 apt_use_ptys(dpkg_t)
175')
176
0c54fcf8 177# TODO: allow?
bb7170f6 178#optional_policy(`
0c54fcf8
CP
179# cron_system_entry(dpkg_t,dpkg_exec_t)
180#')
181
bb7170f6 182optional_policy(`
0c54fcf8
CP
183 nis_use_ypbind(dpkg_t)
184')
185
350b6ab7
CP
186optional_policy(`
187 unconfined_domain(dpkg_t)
188')
189
0c54fcf8
CP
190# TODO: the following was copied from dpkg_script_t, and could probably
191# be removed again when dpkg_script_t is actually used...
192domain_signal_all_domains(dpkg_t)
193domain_signull_all_domains(dpkg_t)
194files_read_etc_runtime_files(dpkg_t)
195files_exec_usr_files(dpkg_t)
196miscfiles_read_localization(dpkg_t)
197modutils_domtrans_depmod(dpkg_t)
198modutils_domtrans_insmod(dpkg_t)
199seutil_domtrans_loadpolicy(dpkg_t)
762d2cb9 200seutil_domtrans_setfiles(dpkg_t)
0c54fcf8 201userdom_use_all_users_fds(dpkg_t)
bb7170f6 202optional_policy(`
0c54fcf8
CP
203 mta_send_mail(dpkg_t)
204')
bb7170f6 205optional_policy(`
0c54fcf8
CP
206 usermanage_domtrans_groupadd(dpkg_t)
207 usermanage_domtrans_useradd(dpkg_t)
208')
209
210########################################
211#
212# dpkg-script Local policy
213#
214# TODO: actually use dpkg_script_t
215
216allow dpkg_script_t self:capability { chown dac_override dac_read_search fowner fsetid setgid setuid ipc_lock sys_chroot sys_nice mknod kill };
217allow dpkg_script_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
218allow dpkg_script_t self:fd use;
ef659a47 219allow dpkg_script_t self:fifo_file rw_fifo_file_perms;
0c54fcf8
CP
220allow dpkg_script_t self:unix_dgram_socket create_socket_perms;
221allow dpkg_script_t self:unix_stream_socket rw_stream_socket_perms;
222allow dpkg_script_t self:unix_dgram_socket sendto;
223allow dpkg_script_t self:unix_stream_socket connectto;
224allow dpkg_script_t self:shm create_shm_perms;
225allow dpkg_script_t self:sem create_sem_perms;
226allow dpkg_script_t self:msgq create_msgq_perms;
227allow dpkg_script_t self:msg { send receive };
228
ef659a47 229allow dpkg_script_t dpkg_tmp_t:file read_file_perms;
0c54fcf8
CP
230
231allow dpkg_script_t dpkg_script_tmp_t:dir { manage_dir_perms mounton };
232allow dpkg_script_t dpkg_script_tmp_t:file manage_file_perms;
233files_tmp_filetrans(dpkg_script_t, dpkg_script_tmp_t, { file dir })
234
235allow dpkg_script_t dpkg_script_tmpfs_t:dir manage_dir_perms;
236allow dpkg_script_t dpkg_script_tmpfs_t:file manage_file_perms;
ef659a47
CP
237allow dpkg_script_t dpkg_script_tmpfs_t:lnk_file manage_lnk_file_perms;
238allow dpkg_script_t dpkg_script_tmpfs_t:sock_file manage_sock_file_perms;
239allow dpkg_script_t dpkg_script_tmpfs_t:fifo_file manage_fifo_file_perms;
0bfccda4 240fs_tmpfs_filetrans(dpkg_script_t, dpkg_script_tmpfs_t, { dir file lnk_file sock_file fifo_file })
0c54fcf8
CP
241
242kernel_read_kernel_sysctls(dpkg_script_t)
243kernel_read_system_state(dpkg_script_t)
244
fb63d0b5 245corecmd_exec_all_executables(dpkg_script_t)
0c54fcf8
CP
246
247dev_list_sysfs(dpkg_script_t)
248# ideally we would not need this
249dev_manage_generic_blk_files(dpkg_script_t)
250dev_manage_generic_chr_files(dpkg_script_t)
251dev_manage_all_blk_files(dpkg_script_t)
252dev_manage_all_chr_files(dpkg_script_t)
253
254domain_read_all_domains_state(dpkg_script_t)
255domain_getattr_all_domains(dpkg_script_t)
256domain_dontaudit_ptrace_all_domains(dpkg_script_t)
257domain_use_interactive_fds(dpkg_script_t)
0c54fcf8
CP
258domain_signal_all_domains(dpkg_script_t)
259domain_signull_all_domains(dpkg_script_t)
260
261files_exec_etc_files(dpkg_script_t)
262files_read_etc_runtime_files(dpkg_script_t)
263files_exec_usr_files(dpkg_script_t)
264
265fs_manage_nfs_files(dpkg_script_t)
266fs_getattr_nfs(dpkg_script_t)
267# why is this not using mount?
268fs_getattr_xattr_fs(dpkg_script_t)
269fs_mount_xattr_fs(dpkg_script_t)
270fs_unmount_xattr_fs(dpkg_script_t)
271fs_search_auto_mountpoints(dpkg_script_t)
272
f8233ab7
CP
273mls_file_read_all_levels(dpkg_script_t)
274mls_file_write_all_levels(dpkg_script_t)
0c54fcf8
CP
275
276selinux_get_fs_mount(dpkg_script_t)
277selinux_validate_context(dpkg_script_t)
278selinux_compute_access_vector(dpkg_script_t)
279selinux_compute_create_context(dpkg_script_t)
280selinux_compute_relabel_context(dpkg_script_t)
281selinux_compute_user_contexts(dpkg_script_t)
282
283storage_raw_read_fixed_disk(dpkg_script_t)
284storage_raw_write_fixed_disk(dpkg_script_t)
285
0c54fcf8
CP
286term_use_all_terms(dpkg_script_t)
287
288auth_dontaudit_getattr_shadow(dpkg_script_t)
289# ideally we would not need this
290auth_manage_all_files_except_shadow(dpkg_script_t)
291
292init_domtrans_script(dpkg_script_t)
e065ac8a 293init_use_script_fds(dpkg_script_t)
0c54fcf8 294
0c54fcf8
CP
295libs_exec_ld_so(dpkg_script_t)
296libs_exec_lib_files(dpkg_script_t)
297libs_domtrans_ldconfig(dpkg_script_t)
298
299logging_send_syslog_msg(dpkg_script_t)
300
301miscfiles_read_localization(dpkg_script_t)
302
303modutils_domtrans_depmod(dpkg_script_t)
304modutils_domtrans_insmod(dpkg_script_t)
305
306seutil_domtrans_loadpolicy(dpkg_script_t)
762d2cb9 307seutil_domtrans_setfiles(dpkg_script_t)
0c54fcf8
CP
308
309userdom_use_all_users_fds(dpkg_script_t)
310
0c54fcf8
CP
311tunable_policy(`allow_execmem',`
312 allow dpkg_script_t self:process execmem;
313')
314
e065ac8a
CP
315optional_policy(`
316 apt_rw_pipes(dpkg_script_t)
317 apt_use_fds(dpkg_script_t)
318')
319
350b6ab7
CP
320optional_policy(`
321 bootloader_domtrans(dpkg_script_t)
322')
323
bb7170f6 324optional_policy(`
0c54fcf8
CP
325 mta_send_mail(dpkg_script_t)
326')
327
bb7170f6 328optional_policy(`
0c54fcf8
CP
329 nis_use_ypbind(dpkg_script_t)
330')
331
350b6ab7
CP
332optional_policy(`
333 unconfined_domain(dpkg_script_t)
334')
335
bb7170f6 336optional_policy(`
0c54fcf8
CP
337 usermanage_domtrans_groupadd(dpkg_script_t)
338 usermanage_domtrans_useradd(dpkg_script_t)
339')