|  | #!/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 <<EOF | 
|  | client * user_u:base_r:base_t:s0 | 
|  | property * user_u:object_r:base_t:s0 | 
|  | extension * user_u:object_r:base_t:s0 | 
|  | selection * user_u:object_r:base_t:s0 | 
|  | event * user_u:object_r:base_t:s0 | 
|  | EOF | 
|  | touch /etc/selinux/dummy/contexts/virtual_domain_context | 
|  | touch /etc/selinux/dummy/contexts/virtual_image_context | 
|  |  | 
|  | cp file_contexts /etc/selinux/dummy/contexts/files | 
|  | cp dbus_contexts /etc/selinux/dummy/contexts | 
|  | cp policy.$VERS /etc/selinux/dummy/policy | 
|  | FC_FILE=/etc/selinux/dummy/contexts/files/file_contexts | 
|  |  | 
|  | if [ ! -d /etc/selinux ]; then | 
|  | mkdir -p /etc/selinux | 
|  | fi | 
|  | if [ -f /etc/selinux/config ]; then | 
|  | echo "/etc/selinux/config exists, moving to /etc/selinux/config.bak." | 
|  | mv /etc/selinux/config /etc/selinux/config.bak | 
|  | fi | 
|  | echo "Creating new /etc/selinux/config for dummy policy." | 
|  | cat > /etc/selinux/config << EOF | 
|  | SELINUX=permissive | 
|  | SELINUXTYPE=dummy | 
|  | EOF | 
|  |  | 
|  | cd /etc/selinux/dummy/contexts/files | 
|  | $SF -F file_contexts / | 
|  |  | 
|  | mounts=`cat /proc/$$/mounts | \ | 
|  | grep -E "ext[234]|jfs|xfs|reiserfs|jffs2|gfs2|btrfs|f2fs|ocfs2" | \ | 
|  | awk '{ print $2 '}` | 
|  | $SF -F file_contexts $mounts | 
|  |  | 
|  | echo "-F" > /.autorelabel |