1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/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 | \
- egrep "ext[234]|jfs|xfs|reiserfs|jffs2|gfs2|btrfs|f2fs|ocfs2" | \
- awk '{ print $2 '}`
- $SF -F file_contexts $mounts
- echo "-F" > /.autorelabel
|