install_policy.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/sh
  2. # SPDX-License-Identifier: GPL-2.0
  3. set -e
  4. if [ `id -u` -ne 0 ]; then
  5. echo "$0: must be root to install the selinux policy"
  6. exit 1
  7. fi
  8. SF=`which setfiles`
  9. if [ $? -eq 1 ]; then
  10. echo "Could not find setfiles"
  11. echo "Do you have policycoreutils installed?"
  12. exit 1
  13. fi
  14. CP=`which checkpolicy`
  15. if [ $? -eq 1 ]; then
  16. echo "Could not find checkpolicy"
  17. echo "Do you have checkpolicy installed?"
  18. exit 1
  19. fi
  20. VERS=`$CP -V | awk '{print $1}'`
  21. ENABLED=`which selinuxenabled`
  22. if [ $? -eq 1 ]; then
  23. echo "Could not find selinuxenabled"
  24. echo "Do you have libselinux-utils installed?"
  25. exit 1
  26. fi
  27. if selinuxenabled; then
  28. echo "SELinux is already enabled"
  29. echo "This prevents safely relabeling all files."
  30. echo "Boot with selinux=0 on the kernel command-line."
  31. exit 1
  32. fi
  33. cd mdp
  34. ./mdp -m policy.conf file_contexts
  35. $CP -U allow -M -o policy.$VERS policy.conf
  36. mkdir -p /etc/selinux/dummy/policy
  37. mkdir -p /etc/selinux/dummy/contexts/files
  38. echo "__default__:user_u:s0" > /etc/selinux/dummy/seusers
  39. echo "base_r:base_t:s0" > /etc/selinux/dummy/contexts/failsafe_context
  40. echo "base_r:base_t:s0 base_r:base_t:s0" > /etc/selinux/dummy/default_contexts
  41. cat > /etc/selinux/dummy/contexts/x_contexts <<EOF
  42. client * user_u:base_r:base_t:s0
  43. property * user_u:object_r:base_t:s0
  44. extension * user_u:object_r:base_t:s0
  45. selection * user_u:object_r:base_t:s0
  46. event * user_u:object_r:base_t:s0
  47. EOF
  48. touch /etc/selinux/dummy/contexts/virtual_domain_context
  49. touch /etc/selinux/dummy/contexts/virtual_image_context
  50. cp file_contexts /etc/selinux/dummy/contexts/files
  51. cp dbus_contexts /etc/selinux/dummy/contexts
  52. cp policy.$VERS /etc/selinux/dummy/policy
  53. FC_FILE=/etc/selinux/dummy/contexts/files/file_contexts
  54. if [ ! -d /etc/selinux ]; then
  55. mkdir -p /etc/selinux
  56. fi
  57. if [ -f /etc/selinux/config ]; then
  58. echo "/etc/selinux/config exists, moving to /etc/selinux/config.bak."
  59. mv /etc/selinux/config /etc/selinux/config.bak
  60. fi
  61. echo "Creating new /etc/selinux/config for dummy policy."
  62. cat > /etc/selinux/config << EOF
  63. SELINUX=permissive
  64. SELINUXTYPE=dummy
  65. EOF
  66. cd /etc/selinux/dummy/contexts/files
  67. $SF -F file_contexts /
  68. mounts=`cat /proc/$$/mounts | \
  69. grep -E "ext[234]|jfs|xfs|reiserfs|jffs2|gfs2|btrfs|f2fs|ocfs2" | \
  70. awk '{ print $2 '}`
  71. $SF -F file_contexts $mounts
  72. echo "-F" > /.autorelabel