lib/specinfra/command/linux/base/selinux.rb in specinfra-2.67.2 vs lib/specinfra/command/linux/base/selinux.rb in specinfra-2.67.3
- old
+ new
@@ -1,13 +1,32 @@
class Specinfra::Command::Linux::Base::Selinux < Specinfra::Command::Base::Selinux
class << self
def check_has_mode(mode, policy = nil)
+
cmd = ""
- cmd += "test ! -f /etc/selinux/config || ( " if mode == "disabled"
+
+ # If disabled, then the absence of /etc/selinux/config is sufficient
+ cmd += "test ! -f /etc/selinux/config || " if mode == "disabled"
+
+ # If disabled, wrap the rest of the test in parentheses
+ # i.e. only test this stuff if /etc/selinux/config exists
+ cmd += "( ( " if mode == "disabled"
+
+ # Does getenforce return the same value as we are checking for?
cmd += "(getenforce | grep -i -- #{escape(mode)})"
+
+ # If disabled, then permissive is considered a pass
cmd += " || (getenforce | grep -i -- #{escape('permissive')}) )" if mode == "disabled"
+
+ # Ensure that /etc/selinux/config contains the mode we specify
cmd += %Q{ && grep -iE -- '^\\s*SELINUX=#{escape(mode)}\\>' /etc/selinux/config}
+
+ # If we have specified a policy, ensure that is included in /etc/selinux/config
cmd += %Q{ && grep -iE -- '^\\s*SELINUXTYPE=#{escape(policy)}\\>' /etc/selinux/config} if policy != nil
+
+ # End parenthesis for tests when /etc/selinux/config exists
+ cmd += ")" if mode == "disabled"
+
cmd
end
end
end