From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id E30CF13989D for ; Wed, 26 Aug 2015 06:46:13 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id B5A43141E1; Wed, 26 Aug 2015 06:46:07 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 2A073141E1 for ; Wed, 26 Aug 2015 06:46:07 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id E30EB340A78 for ; Wed, 26 Aug 2015 06:46:05 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 480FA17A for ; Wed, 26 Aug 2015 06:46:02 +0000 (UTC) From: "Jason Zaman" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Jason Zaman" Message-ID: <1440571019.9ae80e8d3f13c18043f4e8306a4991824acec91a.perfinion@gentoo> Subject: [gentoo-commits] proj/hardened-refpolicy:next commit in: policy/modules/contrib/ X-VCS-Repository: proj/hardened-refpolicy X-VCS-Files: policy/modules/contrib/cgmanager.fc policy/modules/contrib/cgmanager.if policy/modules/contrib/cgmanager.te X-VCS-Directories: policy/modules/contrib/ X-VCS-Committer: perfinion X-VCS-Committer-Name: Jason Zaman X-VCS-Revision: 9ae80e8d3f13c18043f4e8306a4991824acec91a X-VCS-Branch: next Date: Wed, 26 Aug 2015 06:46:02 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: b7c0fc27-02c0-4450-8f97-092389f4191b X-Archives-Hash: 6a4bc6a355ef3f0d3e59eb950b656ddf commit: 9ae80e8d3f13c18043f4e8306a4991824acec91a Author: Jason Zaman perfinion com> AuthorDate: Wed Aug 26 06:19:58 2015 +0000 Commit: Jason Zaman gentoo org> CommitDate: Wed Aug 26 06:36:59 2015 +0000 URL: https://gitweb.gentoo.org/proj/hardened-refpolicy.git/commit/?id=9ae80e8d Add policy for cgmanager policy/modules/contrib/cgmanager.fc | 3 ++ policy/modules/contrib/cgmanager.if | 21 ++++++++++ policy/modules/contrib/cgmanager.te | 76 +++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) diff --git a/policy/modules/contrib/cgmanager.fc b/policy/modules/contrib/cgmanager.fc new file mode 100644 index 0000000..8ea4a46 --- /dev/null +++ b/policy/modules/contrib/cgmanager.fc @@ -0,0 +1,3 @@ +/usr/sbin/cgmanager -- gen_context(system_u:object_r:cgmanager_exec_t,s0) +/usr/sbin/cgproxy -- gen_context(system_u:object_r:cgmanager_exec_t,s0) +/usr/sbin/cgm-release-agent -- gen_context(system_u:object_r:cgmanager_exec_t,s0) diff --git a/policy/modules/contrib/cgmanager.if b/policy/modules/contrib/cgmanager.if new file mode 100644 index 0000000..ef04583 --- /dev/null +++ b/policy/modules/contrib/cgmanager.if @@ -0,0 +1,21 @@ +## Control Group manager daemon. + +######################################## +## +## Mark the domain as a cgmanager client, automatically granting +## the necessary privileges (connect to cgmanager and allow +## cgmanager to inspect the process). +## +## +## +## Domain allowed access. +## +## +# +interface(`cgmanager_client_domain',` + gen_require(` + attribute cgmanager_client; + ') + + typeattribute $1 cgmanager_client; +') diff --git a/policy/modules/contrib/cgmanager.te b/policy/modules/contrib/cgmanager.te new file mode 100644 index 0000000..d79f506 --- /dev/null +++ b/policy/modules/contrib/cgmanager.te @@ -0,0 +1,76 @@ +policy_module(cgmanager, 1.0.0) + +######################################## +# +# Declarations +# + +type cgmanager_t; +type cgmanager_exec_t; +init_daemon_domain(cgmanager_t, cgmanager_exec_t) + +type cgmanager_run_t; +files_pid_file(cgmanager_run_t) + +type cgmanager_cgroup_t; +files_type(cgmanager_cgroup_t) + +attribute cgmanager_client; + +######################################## +# +# CGManager local policy +# + +allow cgmanager_t self:capability { sys_admin dac_override }; +allow cgmanager_t self:fifo_file rw_fifo_file_perms; + +manage_dirs_pattern(cgmanager_t, cgmanager_run_t, cgmanager_run_t) +manage_files_pattern(cgmanager_t, cgmanager_run_t, cgmanager_run_t) +manage_lnk_files_pattern(cgmanager_t, cgmanager_run_t, cgmanager_run_t) +files_pid_filetrans(cgmanager_t, cgmanager_run_t, { file dir }) +allow cgmanager_t cgmanager_run_t:dir mounton; + +manage_dirs_pattern(cgmanager_t, cgmanager_cgroup_t, cgmanager_cgroup_t) +manage_files_pattern(cgmanager_t, cgmanager_cgroup_t, cgmanager_cgroup_t) +manage_sock_files_pattern(cgmanager_t, cgmanager_cgroup_t, cgmanager_cgroup_t) +fs_cgroup_filetrans(cgmanager_t, cgmanager_cgroup_t, dir, "cgmanager") + +kernel_domtrans_to(cgmanager_t, cgmanager_exec_t) +kernel_read_system_state(cgmanager_t) + +corecmd_exec_bin(cgmanager_t) +can_exec(cgmanager_t, cgmanager_exec_t) + +files_read_etc_files(cgmanager_t) + +# cgmanager unmounts everything in its own mount namespace and mounts tmpfs on some things +files_mounton_all_mountpoints(cgmanager_t) +files_unmount_all_file_type_fs(cgmanager_t) +fs_unmount_xattr_fs(cgmanager_t) + +fs_manage_cgroup_dirs(cgmanager_t) +fs_manage_cgroup_files(cgmanager_t) + +fs_getattr_tmpfs(cgmanager_t) + +fs_manage_tmpfs_dirs(cgmanager_t) +fs_manage_tmpfs_files(cgmanager_t) + +fs_mount_cgroup(cgmanager_t) +fs_mount_tmpfs(cgmanager_t) +fs_mounton_tmpfs(cgmanager_t) +fs_remount_cgroup(cgmanager_t) +fs_remount_tmpfs(cgmanager_t) +fs_unmount_cgroup(cgmanager_t) +fs_unmount_tmpfs(cgmanager_t) + +######################################## +# +# CGManager client domains policy +# + +fs_search_cgroup_dirs(cgmanager_client) +list_dirs_pattern(cgmanager_client, cgmanager_cgroup_t, cgmanager_cgroup_t) +stream_connect_pattern(cgmanager_client, cgmanager_cgroup_t, cgmanager_cgroup_t, cgmanager_t) +ps_process_pattern(cgmanager_t, cgmanager_client)