Vagrantfile: build and install refpolicy on Fedora VM

Add provisioning commands that set-up refpolicy with the required build
configuration for Fedora.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
This commit is contained in:
Nicolas Iooss 2019-09-01 18:58:11 +02:00
parent 83797144d1
commit ea8a79e36a
No known key found for this signature in database
GPG Key ID: C191415F340DAAA0
1 changed files with 65 additions and 3 deletions

68
Vagrantfile vendored
View File

@ -1,6 +1,61 @@
# -*- mode: ruby -*- # -*- mode: ruby -*-
# vi: set ft=ruby : # vi: set ft=ruby :
# Provisioning script to install the reference policy
$install_refpolicy = <<-SHELL
# fail as soon as a command failed
set -e
# we set to permissive to allow loading and working with reference policy as opposed to fedora's fork
echo "Setting SELinux to Permissive Mode..."
setenforce 0
# build the reference policy
sudo -su vagrant make -C /vagrant bare
sudo -su vagrant make -C /vagrant conf
sudo -su vagrant make -C /vagrant all
sudo -su vagrant make -C /vagrant validate
sudo -s make -C /vagrant install
sudo -s make -C /vagrant install-headers
sudo -s semodule -s refpolicy -i /usr/share/selinux/refpolicy/*.pp
if ! (LANG=C sestatus -v | grep '^Loaded policy name:\s*refpolicy$' > /dev/null)
then
# Use the reference policy
sed -i -e 's/^\\(SELINUXTYPE=\\).*/SELINUXTYPE=refpolicy/' /etc/selinux/config
fi
sudo -s semodule --reload
# allow every domain to use /dev/urandom
sudo -s semanage boolean --modify --on global_ssp
# allow systemd-tmpfiles to manage every file
sudo -s semanage boolean --modify --on systemd_tmpfiles_manage_all
# make vagrant user use unconfined_u context
if ! (sudo -s semanage login -l | grep '^vagrant' > /dev/null)
then
echo "Configuring SELinux context for vagrant user"
sudo -s semanage login -a -s unconfined_u vagrant
fi
# label /vagrant as vagrant's home files
if sudo -s semanage fcontext --list | grep '^/vagrant(/\.\*)?'
then
sudo -s semanage fcontext -m -s unconfined_u -t user_home_t '/vagrant(/.*)?'
else
sudo -s semanage fcontext -a -s unconfined_u -t user_home_t '/vagrant(/.*)?'
fi
# Update interface_info
sudo -s sepolgen-ifgen -o /var/lib/sepolgen/interface_info -i /usr/share/selinux/refpolicy
echo "Relabelling the system..."
sudo -s restorecon -RF /
echo "If this is a fresh install, you need to reboot in order to enable enforcing mode"
SHELL
# All Vagrant configuration is done below. The "2" in Vagrant.configure # All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for # configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what # backwards compatibility). Please don't change it unless you know what
@ -35,6 +90,7 @@ Vagrant.configure("2") do |config|
echo "Installing SELinux dev dependencies..." echo "Installing SELinux dev dependencies..."
dnf install -q -y \ dnf install -q -y \
bash-completion \ bash-completion \
gcc \
man-pages \ man-pages \
vim \ vim \
make \ make \
@ -43,9 +99,15 @@ Vagrant.configure("2") do |config|
libselinux-python3 \ libselinux-python3 \
>/dev/null >/dev/null
# we set to permissive to allow loading and working with reference policy as opposed to fedora's fork # configure the reference policy for Fedora
echo "Setting SELinux to Permissive Mode..." if ! grep '^DISTRO = fedora$' /vagrant/build.conf > /dev/null
setenforce 0 then
echo 'DISTRO = fedora' >> /vagrant/build.conf
echo 'SYSTEMD = y' >> /vagrant/build.conf
echo 'UBAC = n' >> /vagrant/build.conf
fi
#{$install_refpolicy}
SHELL SHELL
end end
end end