summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2011-03-07 20:25:14 +1100
committerJames Turnbull <james@lovedthanlost.net>2011-03-09 11:55:21 +1100
commit214da73ac765dbff83831b2674d304046bbd3749 (patch)
tree6dd8bf976c37483ddd4c856417103c38a936b4e3
parentfd38ce08cdcd8b3357400787089c34b1b61d4551 (diff)
downloadfacter-214da73ac765dbff83831b2674d304046bbd3749.tar.gz
facter-214da73ac765dbff83831b2674d304046bbd3749.tar.xz
facter-214da73ac765dbff83831b2674d304046bbd3749.zip
Fixed #5485 - Updated selinux_mode fact
1. Added tested 2. Refactored to use F:U:R.exec 3. Chomp trailing newline
-rw-r--r--lib/facter/selinux.rb11
-rw-r--r--spec/unit/data/selinux_sestatus4
-rwxr-xr-xspec/unit/selinux_spec.rb15
3 files changed, 24 insertions, 6 deletions
diff --git a/lib/facter/selinux.rb b/lib/facter/selinux.rb
index 0e9637d..ee663a0 100644
--- a/lib/facter/selinux.rb
+++ b/lib/facter/selinux.rb
@@ -4,7 +4,7 @@
Facter.add("selinux") do
confine :kernel => :linux
- setcode do
+ setcode do
result = "false"
if FileTest.exists?("/selinux/enforce")
if FileTest.exists?("/proc/self/attr/current")
@@ -31,7 +31,7 @@ end
Facter.add("selinux_policyversion") do
confine :selinux => :true
- setcode do
+ setcode do
File.read("/selinux/policyvers")
end
end
@@ -39,7 +39,10 @@ end
Facter.add("selinux_mode") do
confine :selinux => :true
setcode do
- %x{/usr/sbin/sestatus | /bin/grep "Policy from config file:" | awk '{print $5}'}
+ mode = Facter::Util::Resolution.exec('/usr/sbin/sestatus')
+ mode.each_line do |l|
+ mode = $1 if l =~ /^Current Mode:\s+(\w+)$/
+ end
+ mode.chomp
end
end
-
diff --git a/spec/unit/data/selinux_sestatus b/spec/unit/data/selinux_sestatus
new file mode 100644
index 0000000..b16777f
--- /dev/null
+++ b/spec/unit/data/selinux_sestatus
@@ -0,0 +1,4 @@
+SELinux status: enabled
+SELinuxfs mount: /selinux
+Current Mode: permissive
+Policy version: 16
diff --git a/spec/unit/selinux_spec.rb b/spec/unit/selinux_spec.rb
index 43fd5bf..2af9583 100755
--- a/spec/unit/selinux_spec.rb
+++ b/spec/unit/selinux_spec.rb
@@ -31,11 +31,11 @@ describe "SELinux facts" do
File.stubs(:read).with("/selinux/enforce").returns("0")
FileTest.expects(:exists?).with("/selinux/enforce").returns true
- File.expects(:read).with("/selinux/enforce").returns("1")
+ File.expects(:read).with("/selinux/enforce").returns("1")
Facter.fact(:selinux_enforced).value.should == "true"
end
-
+
it "should return an SELinux policy version" do
Facter.fact(:selinux).stubs(:value).returns("true")
@@ -45,4 +45,15 @@ describe "SELinux facts" do
Facter.fact(:selinux_policyversion).value.should == "1"
end
+
+ it "should return the SELinux policy mode" do
+ Facter.fact(:selinux).stubs(:value).returns("true")
+
+ sample_output_file = File.dirname(__FILE__) + '/data/selinux_sestatus'
+ selinux_sestatus = File.read(sample_output_file)
+
+ Facter::Util::Resolution.stubs(:exec).with('/usr/sbin/sestatus').returns(selinux_sestatus)
+
+ Facter.fact(:selinux_mode).value.should == "permissive"
+ end
end