diff --git a/.container-selinux.metadata b/.container-selinux.metadata new file mode 100644 index 0000000..498ccb6 --- /dev/null +++ b/.container-selinux.metadata @@ -0,0 +1 @@ +39c035a0f8566c23e98963575f58180b6b96e52f SOURCES/container-selinux-79a6d70.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..532aee0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/container-selinux-79a6d70.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SPECS/container-selinux.spec b/SPECS/container-selinux.spec new file mode 100644 index 0000000..4c8f2b7 --- /dev/null +++ b/SPECS/container-selinux.spec @@ -0,0 +1,173 @@ +%global debug_package %{nil} + +# container-selinux +%global git0 https://github.com/projectatomic/%{name} +%if 0%{?fedora} +%global commit0 33cb78bba67527b4977f88e7e2a8c02f2c621850 +%else +# use upstream's RHEL-1.12 branch for RHEL 7 / CentOS 7 +%global commit0 79a6d708f29a1b8d631cbf717b99bb3b5226eda3 +%endif +%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) + +# container-selinux stuff (prefix with ds_ for version/release etc.) +# Some bits borrowed from the openstack-selinux package +%global selinuxtype targeted +%global moduletype services +%global modulenames container + +# Usage: _format var format +# Expand 'modulenames' into various formats as needed +# Format must contain '$x' somewhere to do anything useful +%global _format() export %1=""; for x in %{modulenames}; do %1+=%2; %1+=" "; done; + +# Relabel files +%global relabel_files() %{_sbindir}/restorecon -R %{_bindir}/docker* %{_localstatedir}/run/containerd.sock %{_localstatedir}/run/docker.sock %{_localstatedir}/run/docker.pid %{_sysconfdir}/docker %{_localstatedir}/log/docker %{_localstatedir}/log/lxc %{_localstatedir}/lock/lxc %{_unitdir}/docker.service %{_unitdir}/docker-containerd.service %{_unitdir}/docker-latest.service %{_unitdir}/docker-latest-containerd.service %{_sysconfdir}/docker %{_libexecdir}/docker* &> /dev/null || : + +# Version of SELinux we were using +%if 0%{?fedora} >= 22 +%global selinux_policyver 3.13.1-220 +%else +%global selinux_policyver 3.13.1-39 +%endif + +Name: container-selinux +Epoch: 2 +Version: 2.9 +Release: 4%{?dist} +License: GPLv2 +URL: %{git0} +Summary: SELinux policies for container runtimes +Source0: %{git0}/archive/%{commit0}/%{name}-%{shortcommit0}.tar.gz +BuildArch: noarch +BuildRequires: git +BuildRequires: pkgconfig(systemd) +BuildRequires: selinux-policy >= %{selinux_policyver} +BuildRequires: selinux-policy-devel >= %{selinux_policyver} +# RE: rhbz#1195804 - ensure min NVR for selinux-policy +Requires: selinux-policy >= %{selinux_policyver} +Requires(post): selinux-policy-base >= %{selinux_policyver} +Requires(post): selinux-policy-targeted >= %{selinux_policyver} +Requires(post): policycoreutils +%if 0%{?fedora} +Requires(post): policycoreutils-python-utils +%else +Requires(post): policycoreutils-python +%endif +Requires(post): libselinux-utils +Obsoletes: %{name} <= 2:1.12.5-14 +Obsoletes: docker-selinux <= 2:1.12.4-28 +Provides: docker-selinux = %{epoch}:%{version}-%{release} +Provides: docker-engine-selinux = %{epoch}:%{version}-%{release} + +%description +SELinux policy modules for use with container runtimes. + +%prep +%autosetup -Sgit -n %{name}-%{commit0} + +%build +make + +%install +# install policy modules +%_format MODULES $x.pp.bz2 +install -d %{buildroot}%{_datadir}/selinux/packages +install -d -p %{buildroot}%{_datadir}/selinux/devel/include/services +install -p -m 644 %{modulenames}.if %{buildroot}%{_datadir}/selinux/devel/include/services +install -m 0644 $MODULES %{buildroot}%{_datadir}/selinux/packages + +# remove spec file +rm -rf %{name}.spec + +%check + +%post +# Install all modules in a single transaction +if [ $1 -eq 1 ]; then + %{_sbindir}/setsebool -P -N virt_use_nfs=1 virt_sandbox_use_all_caps=1 +fi +%_format MODULES %{_datadir}/selinux/packages/$x.pp.bz2 +%{_sbindir}/semodule -n -s %{selinuxtype} -r container 2> /dev/null +%{_sbindir}/semodule -n -s %{selinuxtype} -d docker 2> /dev/null +%{_sbindir}/semodule -n -s %{selinuxtype} -d gear 2> /dev/null +%{_sbindir}/semodule -n -X 200 -s %{selinuxtype} -i $MODULES > /dev/null +if %{_sbindir}/selinuxenabled ; then + %{_sbindir}/load_policy + %relabel_files + if [ $1 -eq 1 ]; then + restorecon -R %{_sharedstatedir}/docker &> /dev/null || : + fi +fi + +%postun +if [ $1 -eq 0 ]; then +%{_sbindir}/semodule -n -r %{modulenames} docker &> /dev/null || : +if %{_sbindir}/selinuxenabled ; then +%{_sbindir}/load_policy +%relabel_files +fi +fi + +#define license tag if not already defined +%{!?_licensedir:%global license %doc} + +%files +%doc README.md +%{_datadir}/selinux/* + +%changelog +* Tue Feb 21 2017 Lokesh Mandvekar - 2:2.9-4 +- Resolves: #1425574 +- built commit 79a6d70 + +* Mon Feb 20 2017 Lokesh Mandvekar - 2:2.9-3 +- Resolves: #1420591 +- built @origin/RHEL-1.12 commit 8f876c4 + +* Mon Feb 13 2017 Lokesh Mandvekar - 2:2.9-2 +- built @origin/RHEL-1.12 commit 33cb78b + +* Fri Feb 10 2017 Lokesh Mandvekar - 2:2.8-2 +- + +* Tue Feb 07 2017 Lokesh Mandvekar - 2:2.7-1 +- built origin/RHEL-1.12 commit 21dd37b + +* Fri Jan 20 2017 Lokesh Mandvekar - 2:2.4-2 +- correct version-release in changelog entries + +* Thu Jan 19 2017 Dan Walsh - 2:2.4-1 +- Add typebounds statement for container_t from container_runtime_t +- We should only label runc not runc* + +* Tue Jan 17 2017 Dan Walsh - 2:2.3-1 +- Fix labeling on /usr/bin/runc.* +- Add sandbox_net_domain access to container.te +- Remove containers ability to look at /etc content + +* Wed Jan 11 2017 Lokesh Mandvekar - 2:2.2-4 +- use upstream's RHEL-1.12 branch, commit 56c32da for CentOS 7 + +* Tue Jan 10 2017 Jonathan Lebon - 2:2.2-3 +- properly disable docker module in %post + +* Sat Jan 07 2017 Lokesh Mandvekar - 2:2.2-2 +- depend on selinux-policy-targeted +- relabel docker-latest* files as well + +* Fri Jan 06 2017 Lokesh Mandvekar - 2:2.2-1 +- bump to v2.2 +- additional labeling for ocid + +* Fri Jan 06 2017 Lokesh Mandvekar - 2:2.0-2 +- install policy at level 200 +- From: Dan Walsh + +* Fri Jan 06 2017 Lokesh Mandvekar - 2:2.0-1 +- Resolves: #1406517 - bump to v2.0 (first upload to Fedora as a +standalone package) +- include projectatomic/RHEL-1.12 branch commit for building on centos/rhel + +* Mon Dec 19 2016 Lokesh Mandvekar - 2:1.12.4-29 +- new package (separated from docker)