From 4235c61a2fc3e5e3d0cdf6705bbdc29894c9c791 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Thu, 31 Oct 2024 07:25:26 +0100 Subject: [PATCH] WIP: se: allow rules --- internal/pkg/selinux/policy/file_contexts | 20 ++ internal/pkg/selinux/policy/policy.33 | Bin 28139 -> 36108 bytes .../selinux/policy/selinux/common/files.cil | 97 +++++++++ .../policy/selinux/common/processes.cil | 191 ++++++++++++++++++ .../selinux/policy/selinux/services/cri.cil | 56 +++++ .../policy/selinux/services/kubelet.cil | 45 +++++ .../policy/selinux/services/machined.cil | 13 ++ .../selinux/services/system-containerd.cil | 16 ++ .../selinux/services/system-containers.cil | 18 +- .../selinux/policy/selinux/services/udev.cil | 16 ++ 10 files changed, 470 insertions(+), 2 deletions(-) create mode 100644 internal/pkg/selinux/policy/selinux/common/processes.cil diff --git a/internal/pkg/selinux/policy/file_contexts b/internal/pkg/selinux/policy/file_contexts index 47dd3491c2..eabe7f8f24 100644 --- a/internal/pkg/selinux/policy/file_contexts +++ b/internal/pkg/selinux/policy/file_contexts @@ -1,17 +1,37 @@ +/.extra(/.*)? system_u:object_r:extra_t:s0 +/bin(/.*)? system_u:object_r:bin_t:s0 +/etc(/.*)? system_u:object_r:etc_t:s0 +/lib(/.*)? system_u:object_r:lib_t:s0 /opt(/.*)? system_u:object_r:opt_t:s0 +/usr(/.*)? system_u:object_r:usr_t:s0 /sbin(/.*)? system_u:object_r:sbin_exec_t:s0 /etc/cni(/.*)? system_u:object_r:cni_conf_t:s0 +/etc/lvm(/.*)? system_u:object_r:lvm_conf_t:s0 +/etc/pki(/.*)? system_u:object_r:ssl_certificates_t:s0 +/etc/ssl(/.*)? system_u:object_r:ssl_certificates_t:s0 /opt/cni(/.*)? system_u:object_r:cni_plugin_t:s0 +/usr/bin(/.*)? system_u:object_r:bin_t:s0 +/usr/etc(/.*)? system_u:object_r:udev_conf_t:s0 +/usr/lib(/.*)? system_u:object_r:lib_t:s0 /usr/sbin(/.*)? system_u:object_r:sbin_exec_t:s0 +/etc/selinux(/.*)? system_u:object_r:selinux_conf_t:s0 +/opt/cni/bin(/.*)? system_u:object_r:cri_plugin_bin_t:s0 +/usr/libexec(/.*)? system_u:object_r:bin_t:s0 +/lib/firmware(/.*)? system_u:object_r:firmware_t:s0 /usr/lib/udev(/.*)? system_u:object_r:udev_exec_t:s0 /etc/kubernetes(/.*)? system_u:object_r:k8s_conf_t:s0 /opt/containerd(/.*)? system_u:object_r:containerd_plugin_t:s0 +/usr/share/zoneinfo(/.*)? system_u:object_r:timezone_t:s0 /usr/lib/udev/rules.d(/.*)? system_u:object_r:udev_rules_t:s0 +/etc/ca-certificates(/.*)? system_u:object_r:ssl_certificates_t:s0 /usr/libexec/kubernetes(/.*)? system_u:object_r:k8s_plugin_t:s0 +/usr/share/ca-certificates(/.*)? system_u:object_r:ssl_certificates_t:s0 +/usr/local/share/ca-certificates(/.*)? system_u:object_r:ssl_certificates_t:s0 / system_u:object_r:rootfs_t:s0 /bin/runc system_u:object_r:containerd_exec_t:s0 /sbin/init -- system_u:object_r:init_exec_t:s0 /sbin/udevadm -l system_u:object_r:udev_exec_t:s0 +/etc/localtime system_u:object_r:timezone_t:s0 /sbin/poweroff system_u:object_r:init_exec_t:s0 /sbin/shutdown system_u:object_r:init_exec_t:s0 /sbin/modprobe -- system_u:object_r:modprobe_exec_t:s0 diff --git a/internal/pkg/selinux/policy/policy.33 b/internal/pkg/selinux/policy/policy.33 index f92e7fad825d216d472b079e005771d66a5c1e5a..54c1afc1b0ab1f25f1d013b23eb33af64b26802a 100644 GIT binary patch literal 36108 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 SWvR*lJ-~R(H@XL