Gentoo/Portage related updates
v2 cover Gentoo/Portage related updates
A couple of patches that were introduced for Portage. No large changes:
1. Support NFS mounts (when NFS mounts using context= aren't possible)
2. Support live ebuilds (portage needs more privileges on particular locations then)
3. Support proxy servers for Portage
Changes since v1
----------------
- The gcc-config fix to call /sbin/rc is removed from this patchset and will be introduced in another one, using a new rc_exec_t type
- Support for PORTAGE_BINHOST will be tackled by Gentoo bug #375835 and as such does not require a policy update anymore
PATCH v2 1/3 Support NFS mounts for portage related locations
When users want to use NFS mounted portage tree, distfiles, packages and other locations, they need to use the proper context= mount option. However, in the majority of cases, the users use a single NFS mount. In such situation, context= cannot be used properly since it puts a label on the entire mount (whereas we would then need other labels depending on subdirectories).
Introducing a boolean "portage_use_nfs" which, when set (default off), allows the necessary portage-related domains to manage files and directories with the nfs_t label.
--- policy/modules/admin/portage.if | 7 +++++++ policy/modules/admin/portage.te | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 0 deletions(-)
policy/modules/admin/portage.if +7 -0
@@ -188,6 +188,13 @@ interface(`portage_compile_domain',` # SELinux-enabled programs running in the sandbox seutil_libselinux_linked($1) + tunable_policy(`portage_use_nfs',` + fs_getattr_nfs($1) + fs_manage_nfs_dirs($1) + fs_manage_nfs_files($1) + fs_manage_nfs_symlinks($1) + ') + ifdef(`TODO',` # some gui ebuilds want to interact with X server, like xawtv optional_policy(`
policy/modules/admin/portage.te +15 -0
@@ -5,6 +5,14 @@ policy_module(portage, 1.10.2) # Declarations # +## <desc> +## <p> +## Allow the portage domains to use NFS mounts (regular nfs_t) +## </p> +## </desc> +gen_tunable(portage_use_nfs, false) + + type gcc_config_t; type gcc_config_exec_t; application_domain(gcc_config_t, gcc_config_exec_t)
@@ -258,6 +266,13 @@ sysnet_dns_name_resolve(portage_fetch_t) userdom_use_user_terminals(portage_fetch_t) userdom_dontaudit_read_user_home_content_files(portage_fetch_t) +tunable_policy(`portage_use_nfs',` + fs_getattr_nfs(portage_fetch_t) + fs_manage_nfs_dirs(portage_fetch_t) + fs_manage_nfs_files(portage_fetch_t) + fs_manage_nfs_symlinks(portage_fetch_t) +') + ifdef(`hide_broken_symptoms',` dontaudit portage_fetch_t portage_cache_t:file read; ')
Signature · 1 line
1.7.3.4
PATCH v2 2/3 Support live ebuilds through portage_srcrepo_t
In reply to Sven VermeulenPortage supports the notion of "live ebuilds", which are packages that, when installed, update a repository checkout on a specific location. This means that a few portage-related domains need to have manage_* privileges on that location whereas they usually have much more limited rights (when live ebuilds aren't used).
To support live ebuilds, we introduce another label called portage_srcrepo_t for those specific locations where the "higher" privileges are needed for, and grant the proper permissions on the compile domains (like portage_sandbox_t) to manage the checkouts.
--- policy/modules/admin/portage.fc | 3 +++ policy/modules/admin/portage.if | 7 ++++++- policy/modules/admin/portage.te | 3 +++ 3 files changed, 12 insertions(+), 1 deletions(-)
policy/modules/admin/portage.fc +3 -0
@@ -12,6 +12,9 @@ /usr/lib(64)?/portage/bin/regenworld -- gen_context(system_u:object_r:portage_exec_t,s0) /usr/lib(64)?/portage/bin/sandbox -- gen_context(system_u:object_r:portage_exec_t,s0) +/usr/portage/distfiles/svn-src(/.*)? gen_context(system_u:object_r:portage_srcrepo_t,s0) +/usr/portage/distfiles/git-src(/.*)? gen_context(system_u:object_r:portage_srcrepo_t,s0) +/usr/portage/distfiles/cvs-src(/.*)? gen_context(system_u:object_r:portage_srcrepo_t,s0) /usr/portage(/.*)? gen_context(system_u:object_r:portage_ebuild_t,s0) /var/db/pkg(/.*)? gen_context(system_u:object_r:portage_db_t,s0)
policy/modules/admin/portage.if +6 -1
@@ -71,7 +71,7 @@ interface(`portage_compile_domain',` gen_require(` class dbus send_msg; - type portage_devpts_t, portage_log_t, portage_tmp_t; + type portage_devpts_t, portage_log_t, portage_srcrepo_t, portage_tmp_t; type portage_tmpfs_t; ')
@@ -105,6 +105,11 @@ interface(`portage_compile_domain',` allow $1 portage_log_t:dir setattr; allow $1 portage_log_t:file { write_file_perms setattr }; + # Support live ebuilds (-9999) + manage_dirs_pattern($1, portage_srcrepo_t, portage_srcrepo_t) + manage_files_pattern($1, portage_srcrepo_t, portage_srcrepo_t) + manage_lnk_files_pattern($1, portage_srcrepo_t, portage_srcrepo_t) + # run scripts out of the build directory can_exec(portage_sandbox_t, portage_tmp_t)
policy/modules/admin/portage.te +3 -0
@@ -59,6 +59,9 @@ files_type(portage_cache_t) type portage_log_t; logging_log_file(portage_log_t) +type portage_srcrepo_t; +files_type(portage_srcrepo_t) + type portage_tmp_t; files_tmp_file(portage_tmp_t)
Signature · 1 line
1.7.3.4
PATCH v2 3/3 Support proxy/cache servers
In reply to Sven VermeulenPortage supports the use of proxy systems (which usually run on port 8080) for the fetching of software archives.
--- policy/modules/admin/portage.te | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
policy/modules/admin/portage.te +1 -0
@@ -249,6 +249,7 @@ corenet_tcp_sendrecv_all_ports(portage_fetch_t) # it occasionally comes up corenet_tcp_connect_all_reserved_ports(portage_fetch_t) corenet_tcp_connect_generic_port(portage_fetch_t) +corenet_tcp_connect_http_cache_port(portage_fetch_t) dev_dontaudit_read_rand(portage_fetch_t)
Signature · 1 line
1.7.3.4
v2 cover Gentoo/Portage related updates
In reply to Sven VermeulenQuoted 7 lines · Sven Vermeulen
A couple of patches that were introduced for Portage. No large changes:
1. Support NFS mounts (when NFS mounts using context= aren't possible)
2. Support live ebuilds (portage needs more privileges on particular locations then)
3. Support proxy servers for Portage
Quoted 7 lines
Changes since v1
----------------- The gcc-config fix to call
/sbin/rcis removed from this patchset and will be introduced in another one, using a newrc_exec_ttype
- Support forPORTAGE_BINHOSTwill be tackled by Gentoo bug #375835 and as such does not require a policy update anymore
Merged.
Signature · 3 lines
Chris PeBenito Tresys Technology, LLC www.tresys.com | oss.tresys.com