1 policy_module(lvm, 1.12.0)
3 ########################################
10 init_daemon_domain(clvmd_t, clvmd_exec_t)
12 type clvmd_initrc_exec_t;
13 init_script_file(clvmd_initrc_exec_t)
16 files_pid_file(clvmd_var_run_t)
20 init_system_domain(lvm_t, lvm_exec_t)
21 # needs privowner because it assigns the identity system_u to device nodes
22 # but runs as the identity of the sysadmin
23 domain_obj_id_change_exemption(lvm_t)
24 role system_r types lvm_t;
30 files_lock_file(lvm_lock_t)
33 files_type(lvm_metadata_t)
36 files_type(lvm_var_lib_t)
39 files_pid_file(lvm_var_run_t)
42 files_tmp_file(lvm_tmp_t)
44 ########################################
46 # Cluster LVM daemon local policy
49 allow clvmd_t self:capability { sys_nice chown ipc_lock sys_admin mknod };
50 dontaudit clvmd_t self:capability sys_tty_config;
51 allow clvmd_t self:process { signal_perms setsched };
52 dontaudit clvmd_t self:process ptrace;
53 allow clvmd_t self:socket create_socket_perms;
54 allow clvmd_t self:fifo_file rw_fifo_file_perms;
55 allow clvmd_t self:unix_stream_socket { connectto create_stream_socket_perms };
56 allow clvmd_t self:tcp_socket create_stream_socket_perms;
57 allow clvmd_t self:udp_socket create_socket_perms;
59 manage_files_pattern(clvmd_t, clvmd_var_run_t, clvmd_var_run_t)
60 files_pid_filetrans(clvmd_t, clvmd_var_run_t, file)
62 read_files_pattern(clvmd_t, lvm_metadata_t, lvm_metadata_t)
64 kernel_read_kernel_sysctls(clvmd_t)
65 kernel_read_system_state(clvmd_t)
66 kernel_list_proc(clvmd_t)
67 kernel_read_proc_symlinks(clvmd_t)
68 kernel_search_debugfs(clvmd_t)
69 kernel_dontaudit_getattr_core_if(clvmd_t)
71 corecmd_exec_shell(clvmd_t)
72 corecmd_getattr_bin_files(clvmd_t)
74 corenet_all_recvfrom_unlabeled(clvmd_t)
75 corenet_all_recvfrom_netlabel(clvmd_t)
76 corenet_tcp_sendrecv_generic_if(clvmd_t)
77 corenet_udp_sendrecv_generic_if(clvmd_t)
78 corenet_raw_sendrecv_generic_if(clvmd_t)
79 corenet_tcp_sendrecv_generic_node(clvmd_t)
80 corenet_udp_sendrecv_generic_node(clvmd_t)
81 corenet_raw_sendrecv_generic_node(clvmd_t)
82 corenet_tcp_sendrecv_all_ports(clvmd_t)
83 corenet_udp_sendrecv_all_ports(clvmd_t)
84 corenet_tcp_bind_generic_node(clvmd_t)
85 corenet_tcp_bind_reserved_port(clvmd_t)
86 corenet_dontaudit_tcp_bind_all_reserved_ports(clvmd_t)
87 corenet_sendrecv_generic_server_packets(clvmd_t)
89 dev_read_sysfs(clvmd_t)
90 dev_manage_generic_symlinks(clvmd_t)
91 dev_relabel_generic_dev_dirs(clvmd_t)
92 dev_manage_generic_blk_files(clvmd_t)
93 dev_manage_generic_chr_files(clvmd_t)
94 dev_rw_lvm_control(clvmd_t)
95 dev_dontaudit_getattr_all_blk_files(clvmd_t)
96 dev_dontaudit_getattr_all_chr_files(clvmd_t)
97 dev_create_generic_dirs(clvmd_t)
98 dev_delete_generic_dirs(clvmd_t)
100 files_read_etc_files(clvmd_t)
101 files_list_usr(clvmd_t)
103 fs_getattr_all_fs(clvmd_t)
104 fs_search_auto_mountpoints(clvmd_t)
105 fs_dontaudit_list_tmpfs(clvmd_t)
106 fs_dontaudit_read_removable_files(clvmd_t)
107 fs_rw_anon_inodefs_files(clvmd_t)
109 storage_dontaudit_getattr_removable_dev(clvmd_t)
110 storage_manage_fixed_disk(clvmd_t)
111 storage_dev_filetrans_fixed_disk(clvmd_t)
112 storage_relabel_fixed_disk(clvmd_t)
113 storage_raw_read_fixed_disk(clvmd_t)
115 domain_use_interactive_fds(clvmd_t)
117 auth_use_nsswitch(clvmd_t)
119 init_dontaudit_getattr_initctl(clvmd_t)
121 logging_send_syslog_msg(clvmd_t)
123 miscfiles_read_localization(clvmd_t)
125 seutil_dontaudit_search_config(clvmd_t)
126 seutil_sigchld_newrole(clvmd_t)
127 seutil_read_config(clvmd_t)
128 seutil_read_file_contexts(clvmd_t)
129 seutil_search_default_contexts(clvmd_t)
131 userdom_dontaudit_use_unpriv_user_fds(clvmd_t)
132 userdom_dontaudit_search_user_home_dirs(clvmd_t)
134 lvm_domtrans(clvmd_t)
135 lvm_read_config(clvmd_t)
137 ifdef(`distro_redhat',`
139 unconfined_domain(clvmd_t)
144 ccs_stream_connect(clvmd_t)
148 gpm_dontaudit_getattr_gpmctl(clvmd_t)
152 ricci_dontaudit_rw_modcluster_pipes(clvmd_t)
153 ricci_dontaudit_use_modcluster_fds(clvmd_t)
157 udev_read_db(clvmd_t)
160 ########################################
165 # DAC overrides and mknod for modifying /dev entries (vgmknodes)
166 # rawio needed for dmraid
167 # net_admin for multipath
168 allow lvm_t self:capability { dac_override fowner ipc_lock sys_admin sys_nice mknod chown sys_resource sys_rawio net_admin };
169 dontaudit lvm_t self:capability sys_tty_config;
170 allow lvm_t self:process { sigchld sigkill sigstop signull signal };
171 # LVM will complain a lot if it cannot set its priority.
172 allow lvm_t self:process setsched;
173 allow lvm_t self:file rw_file_perms;
174 allow lvm_t self:fifo_file manage_fifo_file_perms;
175 allow lvm_t self:unix_dgram_socket create_socket_perms;
176 allow lvm_t self:netlink_kobject_uevent_socket create_socket_perms;
178 allow lvm_t self:unix_stream_socket { connectto create_stream_socket_perms };
179 allow lvm_t clvmd_t:unix_stream_socket { connectto rw_socket_perms };
181 manage_dirs_pattern(lvm_t, lvm_tmp_t, lvm_tmp_t)
182 manage_files_pattern(lvm_t, lvm_tmp_t, lvm_tmp_t)
183 files_tmp_filetrans(lvm_t, lvm_tmp_t, { file dir })
185 # /lib/lvm-<version> holds the actual LVM binaries (and symlinks)
186 read_files_pattern(lvm_t, lvm_exec_t, lvm_exec_t)
187 read_lnk_files_pattern(lvm_t, lvm_exec_t, lvm_exec_t)
189 # LVM is split into many individual binaries
190 can_exec(lvm_t, lvm_exec_t)
192 # Creating lock files
193 manage_files_pattern(lvm_t, lvm_lock_t, lvm_lock_t)
194 files_lock_filetrans(lvm_t, lvm_lock_t, file)
196 manage_dirs_pattern(lvm_t, lvm_var_lib_t, lvm_var_lib_t)
197 manage_files_pattern(lvm_t, lvm_var_lib_t, lvm_var_lib_t)
198 files_var_lib_filetrans(lvm_t, lvm_var_lib_t, { dir file })
200 manage_dirs_pattern(lvm_t, lvm_var_run_t, lvm_var_run_t)
201 manage_files_pattern(lvm_t, lvm_var_run_t, lvm_var_run_t)
202 manage_sock_files_pattern(lvm_t, lvm_var_run_t, lvm_var_run_t)
203 files_pid_filetrans(lvm_t, lvm_var_run_t, { file sock_file })
205 read_files_pattern(lvm_t, lvm_etc_t, lvm_etc_t)
206 read_lnk_files_pattern(lvm_t, lvm_etc_t, lvm_etc_t)
207 # Write to /etc/lvm, /etc/lvmtab, /etc/lvmtab.d
208 manage_files_pattern(lvm_t, lvm_metadata_t, lvm_metadata_t)
209 filetrans_pattern(lvm_t, lvm_etc_t, lvm_metadata_t, file)
210 files_etc_filetrans(lvm_t, lvm_metadata_t, file)
211 files_search_mnt(lvm_t)
213 kernel_read_system_state(lvm_t)
214 # Read system variables in /proc/sys
215 kernel_read_kernel_sysctls(lvm_t)
216 # it has no reason to need this
217 kernel_dontaudit_getattr_core_if(lvm_t)
218 kernel_use_fds(lvm_t)
219 kernel_search_debugfs(lvm_t)
221 corecmd_exec_bin(lvm_t)
222 corecmd_exec_shell(lvm_t)
224 dev_create_generic_chr_files(lvm_t)
225 dev_delete_generic_dirs(lvm_t)
227 dev_read_urand(lvm_t)
228 dev_rw_lvm_control(lvm_t)
229 dev_manage_generic_symlinks(lvm_t)
230 dev_relabel_generic_dev_dirs(lvm_t)
231 dev_manage_generic_blk_files(lvm_t)
232 # Read /sys/block. Device mapper metadata is kept there.
233 dev_read_sysfs(lvm_t)
234 # cjp: this has no effect since LVM does not
235 # have lnk_file relabelto for anything else.
236 # perhaps this should be blk_files?
237 dev_relabel_generic_symlinks(lvm_t)
238 # LVM (vgscan) scans for devices by stating every file in /dev and applying a regex...
239 dev_dontaudit_read_all_chr_files(lvm_t)
240 dev_dontaudit_read_all_blk_files(lvm_t)
241 dev_dontaudit_getattr_generic_chr_files(lvm_t)
242 dev_dontaudit_getattr_generic_blk_files(lvm_t)
243 dev_dontaudit_getattr_generic_pipes(lvm_t)
244 dev_create_generic_dirs(lvm_t)
246 domain_use_interactive_fds(lvm_t)
247 domain_read_all_domains_state(lvm_t)
249 files_read_usr_files(lvm_t)
250 files_read_etc_files(lvm_t)
251 files_read_etc_runtime_files(lvm_t)
252 # for when /usr is not mounted:
253 files_dontaudit_search_isid_type_dirs(lvm_t)
255 fs_getattr_xattr_fs(lvm_t)
256 fs_search_auto_mountpoints(lvm_t)
258 fs_read_tmpfs_symlinks(lvm_t)
259 fs_dontaudit_read_removable_files(lvm_t)
260 fs_dontaudit_getattr_tmpfs_files(lvm_t)
261 fs_rw_anon_inodefs_files(lvm_t)
263 mls_file_read_all_levels(lvm_t)
264 mls_file_write_to_clearance(lvm_t)
266 selinux_get_fs_mount(lvm_t)
267 selinux_validate_context(lvm_t)
268 selinux_compute_access_vector(lvm_t)
269 selinux_compute_create_context(lvm_t)
270 selinux_compute_relabel_context(lvm_t)
271 selinux_compute_user_contexts(lvm_t)
273 storage_relabel_fixed_disk(lvm_t)
274 storage_dontaudit_read_removable_device(lvm_t)
275 # LVM creates block devices in /dev/mapper or /dev/<vg>
276 # depending on its version
277 # LVM(2) needs to create directores (/dev/mapper, /dev/<vg>)
278 # and links from /dev/<vg> to /dev/mapper/<vg>-<lv>
279 # cjp: need create interface here for fixed disk create
280 storage_dev_filetrans_fixed_disk(lvm_t)
281 # Access raw devices and old /dev/lvm (c 109,0). Is this needed?
282 storage_manage_fixed_disk(lvm_t)
284 term_use_all_terms(lvm_t)
287 init_dontaudit_getattr_initctl(lvm_t)
288 init_use_script_ptys(lvm_t)
289 init_read_script_state(lvm_t)
291 logging_send_syslog_msg(lvm_t)
293 miscfiles_read_localization(lvm_t)
295 seutil_read_config(lvm_t)
296 seutil_read_file_contexts(lvm_t)
297 seutil_search_default_contexts(lvm_t)
298 seutil_sigchld_newrole(lvm_t)
300 userdom_use_user_terminals(lvm_t)
302 ifdef(`distro_redhat',`
303 # this is from the initrd:
304 files_rw_isid_type_dirs(lvm_t)
307 unconfined_domain(lvm_t)
312 bootloader_rw_tmp_files(lvm_t)
316 ccs_stream_connect(lvm_t)
320 gpm_dontaudit_getattr_gpmctl(lvm_t)
324 dbus_system_bus_client(lvm_t)
332 modutils_domtrans_insmod(lvm_t)
336 rpm_manage_script_tmp_files(lvm_t)
344 virt_manage_images(lvm_t)
348 xen_append_log(lvm_t)
349 xen_dontaudit_rw_unix_stream_sockets(lvm_t)