#!/bin/sh # SPDX-License-Identifier: GPL-2.0 set -e if [ `id -u` -ne 0 ]; then echo "$0: must be root to install the selinux policy" exit 1 fi SF=`which setfiles` if [ $? -eq 1 ]; then echo "Could not find setfiles" echo "Do you have policycoreutils installed?" exit 1 fi CP=`which checkpolicy` if [ $? -eq 1 ]; then echo "Could not find checkpolicy" echo "Do you have checkpolicy installed?" exit 1 fi VERS=`$CP -V | awk '{print $1}'` ENABLED=`which selinuxenabled` if [ $? -eq 1 ]; then echo "Could not find selinuxenabled" echo "Do you have libselinux-utils installed?" exit 1 fi if selinuxenabled; then echo "SELinux is already enabled" echo "This prevents safely relabeling all files." echo "Boot with selinux=0 on the kernel command-line or" echo "SELINUX=disabled in /etc/selinux/config." exit 1 fi cd mdp ./mdp -m policy.conf file_contexts $CP -U allow -M -o policy.$VERS policy.conf mkdir -p /etc/selinux/dummy/policy mkdir -p /etc/selinux/dummy/contexts/files echo "__default__:user_u:s0" > /etc/selinux/dummy/seusers echo "base_r:base_t:s0" > /etc/selinux/dummy/contexts/failsafe_context echo "base_r:base_t:s0 base_r:base_t:s0" > /etc/selinux/dummy/default_contexts cat > /etc/selinux/dummy/contexts/x_contexts < /etc/selinux/config << EOF SELINUX=permissive SELINUXTYPE=dummy EOF cd /etc/selinux/dummy/contexts/files $SF -F file_contexts / mounts=`cat /proc/$$/mounts | \ egrep "ext[234]|jfs|xfs|reiserfs|jffs2|gfs2|btrfs|f2fs|ocfs2" | \ awk '{ print $2 '}` $SF -F file_contexts $mounts echo "-F" > /.autorelabel