]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - policy/modules/admin/dpkg.te
Remove module for apt.
[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
0c54fcf8 172# TODO: allow?
bb7170f6 173#optional_policy(`
0c54fcf8
CP
174# cron_system_entry(dpkg_t,dpkg_exec_t)
175#')
176
bb7170f6 177optional_policy(`
0c54fcf8
CP
178 nis_use_ypbind(dpkg_t)
179')
180
350b6ab7
CP
181optional_policy(`
182 unconfined_domain(dpkg_t)
183')
184
0c54fcf8
CP
185# TODO: the following was copied from dpkg_script_t, and could probably
186# be removed again when dpkg_script_t is actually used...
187domain_signal_all_domains(dpkg_t)
188domain_signull_all_domains(dpkg_t)
189files_read_etc_runtime_files(dpkg_t)
190files_exec_usr_files(dpkg_t)
191miscfiles_read_localization(dpkg_t)
0c54fcf8 192seutil_domtrans_loadpolicy(dpkg_t)
762d2cb9 193seutil_domtrans_setfiles(dpkg_t)
0c54fcf8 194userdom_use_all_users_fds(dpkg_t)
2371d8d8 195
bb7170f6 196optional_policy(`
0c54fcf8
CP
197 mta_send_mail(dpkg_t)
198')
2371d8d8
MG
199
200optional_policy(`
201 modutils_domtrans_depmod(dpkg_t)
202 modutils_domtrans_insmod(dpkg_t)
203')
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
af2d8802 286term_use_all_inherited_terms(dpkg_script_t)
0c54fcf8
CP
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
0c54fcf8 303seutil_domtrans_loadpolicy(dpkg_script_t)
762d2cb9 304seutil_domtrans_setfiles(dpkg_script_t)
0c54fcf8
CP
305
306userdom_use_all_users_fds(dpkg_script_t)
307
0c54fcf8
CP
308tunable_policy(`allow_execmem',`
309 allow dpkg_script_t self:process execmem;
310')
311
350b6ab7
CP
312optional_policy(`
313 bootloader_domtrans(dpkg_script_t)
314')
315
2371d8d8
MG
316optional_policy(`
317 modutils_domtrans_depmod(dpkg_script_t)
318 modutils_domtrans_insmod(dpkg_script_t)
319')
320
bb7170f6 321optional_policy(`
0c54fcf8
CP
322 mta_send_mail(dpkg_script_t)
323')
324
bb7170f6 325optional_policy(`
0c54fcf8
CP
326 nis_use_ypbind(dpkg_script_t)
327')
328
350b6ab7
CP
329optional_policy(`
330 unconfined_domain(dpkg_script_t)
331')
332
bb7170f6 333optional_policy(`
0c54fcf8
CP
334 usermanage_domtrans_groupadd(dpkg_script_t)
335 usermanage_domtrans_useradd(dpkg_script_t)
336')