commit: b0cfc980dcefdffcdcf2929394278e3ea983a88c Author: Jason Zaman <jason <AT> perfinion <DOT> com> AuthorDate: Thu Dec 17 18:38:24 2015 +0000 Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org> CommitDate: Fri Dec 18 04:12:51 2015 +0000 URL: https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=b0cfc980
Add permissions for ZFS list and send/recv zfs list uses a pipe to get info from the kernel avc: granted { write } for pid=31602 comm="dump_list_strat" path="pipe:[4471132]" dev="pipefs" ino=4471132 scontext=system_u:system_r:kernel_t:s0 tcontext=staff_u:sysadm_r:mount_t:s0-s0:c0.c511 tclass=fifo_file avc: granted { read } for pid=31601 comm="zfs" path="pipe:[4471132]" dev="pipefs" ino=4471132 scontext=staff_u:sysadm_r:mount_t:s0-s0:c0.c511 tcontext=staff_u:sysadm_r:mount_t:s0-s0:c0.c511 tclass=fifo_file zfs send / recv is usually piped somewhere by sysadm zfs send tank@snap | ssh foo tank@snap policy/modules/kernel/kernel.te | 9 +++++++++ policy/modules/system/mount.te | 3 +++ 2 files changed, 12 insertions(+) diff --git a/policy/modules/kernel/kernel.te b/policy/modules/kernel/kernel.te index 4ac22e0..f1016a3 100644 --- a/policy/modules/kernel/kernel.te +++ b/policy/modules/kernel/kernel.te @@ -461,4 +461,13 @@ ifdef(`distro_gentoo',` # See also bug 535992 #dev_manage_all_dev_nodes(kernel_t) dev_setattr_generic_chr_files(kernel_t) + + # ZFS send/recv writes to an fd + optional_policy(` + sysadm_use_fds(kernel_t) + ') + # zfs list writes to a pipe + optional_policy(` + mount_rw_pipes(kernel_t) + ') ') diff --git a/policy/modules/system/mount.te b/policy/modules/system/mount.te index 497fa59..920abc7 100644 --- a/policy/modules/system/mount.te +++ b/policy/modules/system/mount.te @@ -42,6 +42,9 @@ application_domain(unconfined_mount_t, mount_exec_t) # setuid/setgid needed to mount cifs allow mount_t self:capability { ipc_lock sys_rawio sys_admin dac_override chown sys_tty_config setuid setgid }; +allow mount_t self:process signal; +# zfs list uses pipes +allow mount_t self:fifo_file rw_fifo_file_perms; mount_read_loopback_files(mount_t)