public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Petr Lautrbach <plautrba@redhat.com>
To: git-commits@fedoraproject.org
Subject: [tests/selinux] pr775-checkpolicy-revdeps: Add tests from https://src.fedoraproject.org/rpms/policycoreutils/blob/master/f/tests
Date: Fri, 11 Sep 2026 13:17:13 GMT [thread overview]
Message-ID: <178913263372.1.12275318208913907010.tests-selinux-f97a294e75f1@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : tests/selinux
Branch : pr775-checkpolicy-revdeps
Commit : f97a294e75f1e8e87d49974f8e17db8c0dec56ac
Author : Petr Lautrbach <plautrba@redhat.com>
Date : 2018-02-14T13:41:13+01:00
Stats : +2276/-0 in 39 file(s)
URL : https://src.fedoraproject.org/tests/selinux/c/f97a294e75f1e8e87d49974f8e17db8c0dec56ac?branch=pr775-checkpolicy-revdeps
Log:
Add tests from https://src.fedoraproject.org/rpms/policycoreutils/blob/master/f/tests
---
diff --git a/policycoreutils/CIL-modules-without-compilation/Makefile b/policycoreutils/CIL-modules-without-compilation/Makefile
new file mode 100644
index 0000000..2d8a660
--- /dev/null
+++ b/policycoreutils/CIL-modules-without-compilation/Makefile
@@ -0,0 +1,64 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Sanity/CIL-modules-without-compilation
+# Description: What the test does
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2016 Red Hat, Inc.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Sanity/CIL-modules-without-compilation
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: What the test does" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 5m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/CIL-modules-without-compilation/PURPOSE b/policycoreutils/CIL-modules-without-compilation/PURPOSE
new file mode 100644
index 0000000..a9c7d54
--- /dev/null
+++ b/policycoreutils/CIL-modules-without-compilation/PURPOSE
@@ -0,0 +1,5 @@
+PURPOSE of /CoreOS/policycoreutils/Sanity/CIL-modules-without-compilation
+Author: Milos Malik <mmalik@redhat.com>
+
+Is it possible to manage policy modules written in CIL without any compilation? Does semanage and semodule understand them?
+
diff --git a/policycoreutils/CIL-modules-without-compilation/runtest.sh b/policycoreutils/CIL-modules-without-compilation/runtest.sh
new file mode 100755
index 0000000..451461a
--- /dev/null
+++ b/policycoreutils/CIL-modules-without-compilation/runtest.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Sanity/CIL-modules-without-compilation
+# Description: What the test does
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2016 Red Hat, Inc.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm $PACKAGE
+ rlRun "echo '()' > empty.cil"
+ rlRun "echo '(())' > invalid.cil"
+ rlPhaseEnd
+
+ rlPhaseStartTest "empty CIL module"
+ rlRun "semodule -lfull | grep '400.*empty.*cil'" 1
+ rlRun "semodule -i empty.cil"
+ rlRun "semodule -lfull | grep '400.*empty.*cil'"
+ rlRun "semodule -r empty"
+ rlRun "semodule -lfull | grep '400.*empty.*cil'" 1
+ rlRun "semanage module -l | grep 'empty.*400.*cil'" 1
+ rlRun "semanage module -a empty.cil"
+ rlRun "semanage module -l | grep 'empty.*400.*cil'"
+ rlRun "semanage module -r empty"
+ rlRun "semanage module -l | grep 'empty.*400.*cil'" 1
+ rlPhaseEnd
+
+ rlPhaseStartTest "invalid CIL module"
+ rlRun "semodule -lfull | grep '400.*invalid.*cil'" 1
+ rlRun "semodule -i invalid.cil" 1
+ rlRun "semodule -lfull | grep '400.*invalid.*cil'" 1
+ rlRun "semodule -r invalid" 1
+ rlRun "semodule -lfull | grep '400.*invalid.*cil'" 1
+ rlRun "semanage module -l | grep 'invalid.*400.*cil'" 1
+ rlRun "semanage module -a invalid.cil" 1
+ rlRun "semanage module -l | grep 'invalid.*400.*cil'" 1
+ rlRun "semanage module -r invalid" 1
+ rlRun "semanage module -l | grep 'invalid.*400.*cil'" 1
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "rm -f empty.cil invalid.cil"
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/linux-system-roles.selinux-tests/Makefile b/policycoreutils/linux-system-roles.selinux-tests/Makefile
new file mode 100644
index 0000000..eed0222
--- /dev/null
+++ b/policycoreutils/linux-system-roles.selinux-tests/Makefile
@@ -0,0 +1,63 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of selinux-ansible-playbook
+# Description: Run linux-system-roles.selinux (https://github.com/linux-system-roles/selinux.git) Ansible role tests
+# Author: Petr Lautrbach <plautrba@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2018 Red Hat, Inc.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=linux-system-roles.selinux-tests
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Petr Lautrbach <plautrba@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: Run linux-system-roles.selinux (https://github.com/linux-system-roles/selinux.git) Ansible role tests" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 10m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils ansible git" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2+" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/linux-system-roles.selinux-tests/PURPOSE b/policycoreutils/linux-system-roles.selinux-tests/PURPOSE
new file mode 100644
index 0000000..0494ab0
--- /dev/null
+++ b/policycoreutils/linux-system-roles.selinux-tests/PURPOSE
@@ -0,0 +1,4 @@
+PURPOSE of selinux-ansible-playbook
+Author: Petr Lautrbach <plautrba@redhat.com>
+
+Run linux-system-roles.selinux (https://github.com/linux-system-roles/selinux.git) Ansible role tests
diff --git a/policycoreutils/linux-system-roles.selinux-tests/runtest.sh b/policycoreutils/linux-system-roles.selinux-tests/runtest.sh
new file mode 100755
index 0000000..95485af
--- /dev/null
+++ b/policycoreutils/linux-system-roles.selinux-tests/runtest.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Description: Run linux-system-roles.selinux (https://github.com/linux-system-roles/selinux.git) Ansible role tests
+# Author: Petr Lautrbach <plautrba@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2018 Red Hat, Inc.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see http://www.gnu.org/licenses/.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm $PACKAGE
+ rlAssertRpm "git"
+ rlAssertRpm "ansible"
+
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "git clone https://github.com/linux-system-roles/selinux.git"
+ rlRun "cd selinux/test"
+
+ for ansible_test in test_*.yml; do
+ rlRun "ansible-playbook -i localhost, -c local -v $ansible_test"
+ done
+
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "cd ../../"
+ rlRun "rm -rf selinux"
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/load_policy/Makefile b/policycoreutils/load_policy/Makefile
new file mode 100644
index 0000000..ffee588
--- /dev/null
+++ b/policycoreutils/load_policy/Makefile
@@ -0,0 +1,64 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Sanity/load_policy
+# Description: Does load_policy work as expected? Does it produce correct audit messages?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2016 Red Hat, Inc.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Sanity/load_policy
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: Does load_policy work as expected? Does it produce correct audit messages?" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 5m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: audit policycoreutils selinux-policy-targeted" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/load_policy/PURPOSE b/policycoreutils/load_policy/PURPOSE
new file mode 100644
index 0000000..a5984d3
--- /dev/null
+++ b/policycoreutils/load_policy/PURPOSE
@@ -0,0 +1,5 @@
+PURPOSE of /CoreOS/policycoreutils/Sanity/load_policy
+Author: Milos Malik <mmalik@redhat.com>
+
+Does load_policy work as expected? Does it produce correct audit messages?
+
diff --git a/policycoreutils/load_policy/runtest.sh b/policycoreutils/load_policy/runtest.sh
new file mode 100755
index 0000000..2a77654
--- /dev/null
+++ b/policycoreutils/load_policy/runtest.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Sanity/load_policy
+# Description: Does load_policy work as expected? Does it produce correct audit messages?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2016 Red Hat, Inc.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+if rlIsRHEL 6 ; then
+ SELINUX_FS_MOUNT="/selinux"
+else # RHEL-7 and above
+ SELINUX_FS_MOUNT="/sys/fs/selinux"
+fi
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlRun "ls -l `which load_policy`"
+ BINARY_POLICY=`find /etc/selinux/targeted -type f -name policy.?? | sort -n | tail -n 1`
+ rlRun "ls -l ${BINARY_POLICY}"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "load_policy --xyz 2>&1 | grep \"invalid option\""
+ rlRun "dmesg | grep -i selinux" 0,1
+ rlRun "grep -i selinux /proc/mounts"
+ START_DATE_TIME=`date "+%m/%d/%Y %T"`
+ sleep 1
+ rlRun "load_policy -q"
+ rlRun "grep -i selinux /proc/mounts"
+ sleep 1
+ if rlIsRHEL ; then
+ rlRun "ausearch -m MAC_POLICY_LOAD -i -ts ${START_DATE_TIME} | grep load_policy"
+ fi
+ rlRun "ausearch -m MAC_POLICY_LOAD -i -ts ${START_DATE_TIME} | grep 'policy loaded'"
+ rlRun "umount ${SELINUX_FS_MOUNT}"
+ rlRun "grep -i selinux /proc/mounts" 1
+ START_DATE_TIME=`date "+%m/%d/%Y %T"`
+ sleep 1
+ rlRun "load_policy -i ${BINARY_POLICY}"
+ rlRun "grep -i selinux /proc/mounts"
+ sleep 1
+ if rlIsRHEL ; then
+ rlRun "ausearch -m MAC_POLICY_LOAD -i -ts ${START_DATE_TIME} | grep load_policy"
+ fi
+ rlRun "ausearch -m MAC_POLICY_LOAD -i -ts ${START_DATE_TIME} | grep 'policy loaded'"
+ rlRun "dmesg | grep -i selinux"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/restorecon/Makefile b/policycoreutils/restorecon/Makefile
new file mode 100644
index 0000000..991e8f9
--- /dev/null
+++ b/policycoreutils/restorecon/Makefile
@@ -0,0 +1,70 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Sanity/restorecon
+# Description: does restorecon work correctly ?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Sanity/restorecon
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE testpolicy.te testpolicy.fc
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ chmod a+x runtest.sh
+ chcon -t bin_t runtest.sh;:
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: does restorecon work correctly ?" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 15m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils" >> $(METADATA)
+ @echo "Requires: grep" >> $(METADATA)
+ @echo "Requires: e2fsprogs" >> $(METADATA)
+ @echo "Requires: libselinux" >> $(METADATA)
+ @echo "Requires: selinux-policy-devel" >> $(METADATA)
+ @echo "Requires: libselinux-utils" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/restorecon/PURPOSE b/policycoreutils/restorecon/PURPOSE
new file mode 100644
index 0000000..d029be8
--- /dev/null
+++ b/policycoreutils/restorecon/PURPOSE
@@ -0,0 +1,5 @@
+PURPOSE of /CoreOS/policycoreutils/Sanity/restorecon
+Author: Milos Malik <mmalik@redhat.com>
+
+Does restorecon work correctly?
+
diff --git a/policycoreutils/restorecon/runtest.sh b/policycoreutils/restorecon/runtest.sh
new file mode 100755
index 0000000..b16d4c0
--- /dev/null
+++ b/policycoreutils/restorecon/runtest.sh
@@ -0,0 +1,367 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Sanity/restorecon
+# Description: does restorecon work correctly ?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include rhts environment
+. /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlServiceStop mcstrans mcstransd
+ rlRun "rpm -qf `which restorecon` | grep ${PACKAGE}"
+ rlRun "setenforce 1"
+ rlRun "sestatus"
+ rlRun "setsebool allow_domain_fd_use on"
+ rlPhaseEnd
+
+ rlPhaseStartTest "Functional test"
+
+ TESTDIR="/opt/restorecon_testdir"
+ DIRS="correct.dir incorrect1.dir incorrect2.dir customizable.dir"
+ FILES="correct.file incorrect.file customizable.file"
+
+ rlRun "make -f /usr/share/selinux/devel/Makefile"
+ rlRun "semodule -i testpolicy.pp"
+
+ rlFileBackup /etc/selinux/targeted/contexts/customizable_types
+ rlRun "echo 'customizable_t' >> /etc/selinux/targeted/contexts/customizable_types"
+
+ # Here is the testing dirs and files structure
+ # all the files have initial context corresponding to their names
+
+ # ./
+ # correct.file
+ # incorrect.file
+ # customizable.file
+
+ # correct.dir/
+ # correct.file
+ # incorrect.file
+ # customizable.file
+
+ # incorrect1.dir/
+ # correct.file
+ # incorrect.file
+ # customizable.file
+
+ # incorrect2.dir/
+ # correct.file
+ # incorrect.file
+ # customizable.file
+
+ # customizable.dir/
+ # correct.file
+ # incorrect.file
+ # customizable.file
+
+ # Function to set initial contexts
+ function set_contexts {
+ # Set the intended contexts
+ rlLog "Setting initial contexts of testing dirs..."
+ restorecon -R $TESTDIR
+ for ITEM in `find . -name 'incorrect*'`; do
+ chcon -t incorrect_t $ITEM
+ done
+ for ITEM in `find . -name 'customizable*'`; do
+ chcon -t customizable_t $ITEM
+ done
+ }
+
+ # Check that files in dir $1 have the initial contexts
+ function check_initial_contexts {
+ if echo $1 | grep -q 'incorrect.dir'; then
+ rlRun "ls -ladZ $1 | grep :incorrect_t"
+ elif echo $1 | grep -q 'correct.dir'; then
+ rlRun "ls -ladZ $1 | grep :correct_t"
+ elif echo $1 | grep -q 'customizable.dir'; then
+ rlRun "ls -ladZ $1 | grep :customizable_t"
+ fi
+ rlRun "ls -ladZ $1/* | grep '\<correct.file' | grep ':correct_t'"
+ rlRun "ls -ladZ $1/* | grep '\<incorrect.file' | grep ':incorrect_t'"
+ rlRun "ls -ladZ $1/* | grep '\<customizable.file' | grep ':customizable_t'"
+ }
+
+ # Check that files matching with $2 in dir $1 have context $3
+ function check_contexts {
+ COMMAND="find $1 -name '$2'"
+ for ITEM in `eval $COMMAND`; do
+ rlRun "ls -ladZ $ITEM | grep :$3";
+ done
+ }
+
+ # Create the testing dirs and files
+ rlRun "mkdir -p $TESTDIR"
+ rlRun "pushd $TESTDIR"
+ rlRun "mkdir $DIRS"
+ rlRun "touch $FILES"
+ for DIR in $DIRS; do
+ rlRun "pushd $DIR"
+ rlRun "touch $FILES"
+ rlRun "popd"
+ done
+
+ set_contexts
+
+ echo
+ rlLog "Checking initial contexts of testing dirs..."
+ # Check the contexts are set properly
+ check_initial_contexts '.'
+ check_initial_contexts 'incorrect1.dir'
+ check_initial_contexts 'incorrect2.dir'
+ check_initial_contexts 'correct.dir'
+ check_initial_contexts 'customizable.dir'
+ check_contexts '.' 'incorrect*' 'incorrect_t'
+ check_contexts '.' 'correct*' 'correct_t'
+ check_contexts '.' 'customizable*' 'customizable_t'
+
+ # -e directory
+ # exclude a directory (repeat the option to exclude more than one directory).
+
+ echo
+ rlLog "-e directory"
+ set_contexts
+ rlRun "restorecon -RF -e $TESTDIR/incorrect2.dir $TESTDIR"
+ for ITEM in `ls *.file`; do rlRun "ls -ladZ $ITEM | grep correct_t"; done
+ check_contexts 'incorrect1.dir' '*' 'correct_t'
+ check_contexts 'customizable.dir' '*' 'correct_t'
+ check_initial_contexts 'incorrect2.dir'
+ rlRun "ls -ladZ incorrect2.dir | grep incorrect_t"
+
+ # -f infilename
+ # infilename contains a list of files to be processed. Use - for stdin.
+
+ echo
+ rlLog "-f filename"
+ set_contexts
+ rlRun "cat > ../file_list <<EOF
+./customizable.file
+./customizable.dir
+./correct.dir/customizable.file
+./incorrect1.dir/customizable.file
+./incorrect2.dir/customizable.file
+./customizable.dir/customizable.file
+EOF"
+ if rlIsRHEL 5; then chcon -t file_t ../file_list ;fi
+ rlRun "restorecon -F -f ../file_list"
+ check_contexts '.' 'incorrect*' 'incorrect_t'
+ check_contexts '.' 'correct*' 'correct_t'
+ check_contexts '.' 'customizable*' 'correct_t'
+ rlRun "rm -f ../file_list"
+
+
+ echo
+ rlLog "-f - Input from stdin"
+ set_contexts
+ rlRun "echo -e 'incorrect2.dir\ncustomizable.file\nincorrect.file' | restorecon -f -"
+ check_initial_contexts 'incorrect1.dir'
+ check_initial_contexts 'correct.dir'
+ check_initial_contexts 'customizable.dir'
+ check_contexts 'incorrect2' '*' 'correct_t'
+ rlRun "ls -ladZ customizable.file | grep customizable_t"
+ rlRun "ls -ladZ incorrect.file | grep :correct_t"
+
+ # -F Force reset of context to match file_context for customizable files, and
+ # the default file context, changing the user, role, range portion as well
+ # as the type.
+
+ echo
+ rlLog "-F Force reset of customizable types"
+ set_contexts
+ rlRun "restorecon -RF $TESTDIR"
+ check_contexts '.' '*' 'correct_t'
+
+ # This feature is from RHEL6 further
+ if ! rlIsRHEL; then
+ echo
+ rlLog "-F Force reset of the whole context"
+ set_contexts
+ chcon -u staff_u *.file
+ rlRun "ls -laZ correct.file | grep staff_u"
+ rlRun "ls -laZ incorrect.file | grep staff_u"
+ rlRun "ls -laZ customizable.file | grep staff_u"
+ rlRun "restorecon -R $TESTDIR"
+ rlRun "ls -laZ correct.file | grep staff_u"
+ rlRun "ls -laZ incorrect.file | grep staff_u"
+ rlRun "ls -laZ customizable.file | grep staff_u"
+ rlRun "restorecon -RF $TESTDIR"
+ rlRun "ls -laZ correct.file | grep system_u"
+ rlRun "ls -laZ incorrect.file | grep system_u"
+ rlRun "ls -laZ customizable.file | grep system_u"
+ fi
+
+ # -i ignore files that do not exist.
+
+ rlRun "restorecon non-existent-file" 1-255
+ rlRun "restorecon -i non-existent-file"
+
+ # -n don't change any file labels (passive check).
+
+ echo
+ rlLog "-n dry-run"
+ set_contexts
+ rlRun "restorecon -RF -n $TESTDIR"
+ check_contexts '.' 'incorrect*' 'incorrect_t'
+ check_contexts '.' 'correct*' 'correct_t'
+ check_contexts '.' 'customizable*' 'customizable_t'
+
+ # -o outfilename
+ # Deprecated, SELinux policy will probably block this access. Use shell
+ # redirection to save list of files with incorrect context in filename.
+
+ # ----not tested yet
+
+ # -R, -r change files and directories file labels recursively (descend directo‐
+ # ries).
+ # Note: restorecon reports warnings on paths without default labels only
+ # if called non-recursively or in verbose mode.
+
+ set_contexts
+ rlRun "restorecon -R $TESTDIR"
+ check_contexts '.' '*corr*' 'correct_t'
+ check_contexts '.' 'customizable*' 'customizable_t'
+
+ # ...by default it does not operate recursively on directories
+
+ set_contexts
+ rlRun "restorecon $TESTDIR"
+ check_initial_contexts 'incorrect1.dir'
+ check_initial_contexts 'incorrect2.dir'
+ check_initial_contexts 'correct.dir'
+ check_initial_contexts 'customizable.dir'
+ rlRun "ls -ladZ customizable.file | grep customizable_t"
+ rlRun "ls -ladZ incorrect.file | grep :incorrect_t"
+ rlRun "ls -ladZ correct.file | grep :correct_t"
+
+ # -v show changes in file labels, if type or role are going to be changed.
+
+ # ----not tested yet
+
+ # -0 option is not present in RHEL5
+ if ! rlIsRHEL 5; then
+ # -0 the separator for the input items is assumed to be the null character
+ # (instead of the white space). The quotes and the backslash characters
+ # are also treated as normal characters that can form valid input. This
+ # option finally also disables the end of file string, which is treated
+ # like any other argument. Useful when input items might contain white
+ # space, quote marks or backslashes. The -print0 option of GNU find pro‐
+ # duces input suitable for this mode.
+
+ echo
+ rlLog "-0"
+ set_contexts
+ rlRun "find . -print0 | restorecon -f - -0"
+ check_contexts '.' '*corr*' 'correct_t'
+ check_contexts '.' 'customizable*' 'customizable_t'
+
+ echo
+ rlLog "-0 with -F"
+ set_contexts
+ rlRun "find . -print0 | restorecon -F -f - -0"
+ check_contexts '.' '*' 'correct_t'
+
+ fi
+
+ # If a file object does not have a context, restorecon will write the default
+ # context to the file object's extended attributes.
+
+ # ----not tested yet
+
+
+ # Cleanup
+
+ rlRun "popd"
+ rlRun "rm -rf /opt/restorecon_testdir"
+ rlFileRestore
+ rlRun "semodule -r testpolicy"
+ rlPhaseEnd
+
+ # This is RFE from RHEL6 and further versions
+ if ! rlIsRHEL 5;then
+ rlPhaseStartTest
+ # META-Fixed-In: policycoreutils-2.0.83-19.14.el6
+ rlRun "pushd /root"
+ rlRun "touch test-file"
+ rlRun "mkdir test-dir"
+ for ITEM in "test-file" "test-dir" ; do
+ rlRun "chcon -u staff_u -t shadow_t -l s0:c1 ${ITEM}"
+ rlRun "ls -dZ ${ITEM} | grep staff_u:object_r:shadow_t:s0:c1"
+ rlRun "restorecon -v ${ITEM}" 0,1
+ rlRun "ls -dZ ${ITEM} | grep staff_u:object_r:admin_home_t:s0:c1"
+ rlRun "restorecon -F -v ${ITEM}" 0,1
+ rlRun "ls -dZ ${ITEM} | grep system_u:object_r:admin_home_t:s0"
+ done
+ rlRun "rm -rf test-dir"
+ rlRun "rm -f test-file"
+ rlRun "popd"
+ rlPhaseEnd
+ fi
+
+ rlPhaseStartTest
+ # META-Fixed-In: policycoreutils-2.0.83-19.16.el6
+ rlRun "pushd /root"
+ rlRun "touch test-file"
+ rlRun "mkdir test-dir"
+ for ITEM in "test-file" "test-dir" ; do
+ rlRun "chcon -t tmp_t ${ITEM}"
+ rlRun "ls -dZ ${ITEM}"
+ rlRun "chattr +i ${ITEM}"
+ rlRun "restorecon -v ${ITEM}" 1-255
+ rlRun "chattr -i ${ITEM}"
+ rlRun "ls -dZ ${ITEM}"
+ rlRun "restorecon -v ${ITEM}"
+ rlRun "ls -dZ ${ITEM}"
+ done
+ rlRun "rm -rf test-dir"
+ rlRun "rm -f test-file"
+ rlRun "popd"
+ rlPhaseEnd
+
+ # The bug was closed as NEXTRELEASE for RHEL5
+ if ! rlIsRHEL 5; then
+ rlPhaseStartTest
+ rlRun "touch ~/test-file"
+ rlRun "restorecon -vF ~/test-file"
+ rlRun "restorecon -vF ~/test-file | grep \"reset.*context\"" 1
+ rlRun "rm -f ~/test-file"
+
+ rlRun "mkdir ~/test-dir"
+ rlRun "restorecon -vF ~/test-dir"
+ rlRun "restorecon -vF ~/test-dir | grep \"reset.*context\"" 1
+ rlRun "rm -rf ~/test-dir"
+ rlPhaseEnd
+ fi
+
+ rlPhaseStartCleanup
+ rlServiceRestore mcstrans mcstransd
+ rlPhaseEnd
+ rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/restorecon/testpolicy.fc b/policycoreutils/restorecon/testpolicy.fc
new file mode 100644
index 0000000..37f6942
--- /dev/null
+++ b/policycoreutils/restorecon/testpolicy.fc
@@ -0,0 +1,2 @@
+/opt/restorecon_testdir(/.*)? system_u:object_r:correct_t:s0
+
diff --git a/policycoreutils/restorecon/testpolicy.te b/policycoreutils/restorecon/testpolicy.te
new file mode 100644
index 0000000..e7f7e30
--- /dev/null
+++ b/policycoreutils/restorecon/testpolicy.te
@@ -0,0 +1,19 @@
+policy_module(testpolicy, 1.0)
+
+require {
+ attribute domain;
+ type fs_t;
+}
+
+type correct_t;
+files_type(correct_t)
+type incorrect_t;
+files_type(incorrect_t)
+type customizable_t;
+files_type(customizable_t)
+
+
+#allow domain correct_t:dir relabelto;
+#allow correct_t fs_t:filesystem associate;
+
+
diff --git a/policycoreutils/semanage-interface/Makefile b/policycoreutils/semanage-interface/Makefile
new file mode 100644
index 0000000..65ca8d4
--- /dev/null
+++ b/policycoreutils/semanage-interface/Makefile
@@ -0,0 +1,65 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Regression/semanage-interface
+# Description: Does semanage interface ... work correctly?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Regression/semanage-interface
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+ test -x runtest.sh || chcon -t bin_t runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: Does semanage interface ... work correctly?" >> $(METADATA)
+ @echo "Type: Regression" >> $(METADATA)
+ @echo "TestTime: 20m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils policycoreutils-python-utils grep selinux-policy-minimum selinux-policy-mls selinux-policy-targeted" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/semanage-interface/PURPOSE b/policycoreutils/semanage-interface/PURPOSE
new file mode 100644
index 0000000..86bd3ab
--- /dev/null
+++ b/policycoreutils/semanage-interface/PURPOSE
@@ -0,0 +1,4 @@
+PURPOSE of /CoreOS/policycoreutils/Regression/semanage-interface
+Description: Does semanage interface ... work correctly?
+Author: Milos Malik <mmalik@redhat.com>
+
diff --git a/policycoreutils/semanage-interface/runtest.sh b/policycoreutils/semanage-interface/runtest.sh
new file mode 100755
index 0000000..ba8608b
--- /dev/null
+++ b/policycoreutils/semanage-interface/runtest.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Regression/semanage-interface
+# Description: Does semanage interface ... work correctly?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "semanage interface --help" 0,1
+ for POLICY_TYPE in minimum mls targeted ; do
+ if [ ! -d /etc/selinux/${POLICY_TYPE} ] ; then
+ continue
+ fi
+ rlRun "semanage interface -l -S ${POLICY_TYPE}"
+ done
+ if ! rlIsRHEL 5; then
+ rlRun "semanage interface -l -S unknown 2>&1 | grep \"store cannot be accessed\""
+ fi
+ rlRun "semanage interface -a -t xyz_t xyz 2>&1 | grep -i -e 'not defined' -e 'error' -e 'could not'"
+ rlRun "semanage interface -m xyz" 1,2
+ rlRun "semanage interface -d xyz" 1
+ rlRun "semanage interface -a -t netif_t xyz"
+ if rlIsRHEL 5 6; then
+ rlRun "semanage interface -m -r s0 xyz"
+ else
+ rlRun "semanage interface -m -t netif_t -r s0 xyz"
+ fi
+ rlRun "semanage interface -l | grep \"xyz.*:netif_t:s0\""
+ rlRun "semanage interface -d xyz"
+ rlRun "semanage interface -l | grep xyz" 1
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/semanage-login/Makefile b/policycoreutils/semanage-login/Makefile
new file mode 100644
index 0000000..1172ca9
--- /dev/null
+++ b/policycoreutils/semanage-login/Makefile
@@ -0,0 +1,65 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Regression/semanage-login
+# Description: Does semanage login ... work correctly?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Regression/semanage-login
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+ test -x runtest.sh || chcon -t bin_t runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: Does semanage login ... work correctly?" >> $(METADATA)
+ @echo "Type: Regression" >> $(METADATA)
+ @echo "TestTime: 10m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils policycoreutils-python-utils grep shadow-utils selinux-policy-minimum selinux-policy-mls selinux-policy-targeted" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/semanage-login/PURPOSE b/policycoreutils/semanage-login/PURPOSE
new file mode 100644
index 0000000..b8f26c6
--- /dev/null
+++ b/policycoreutils/semanage-login/PURPOSE
@@ -0,0 +1,4 @@
+PURPOSE of /CoreOS/policycoreutils/Regression/semanage-login
+Description: Does semanage login ... work correctly?
+Author: Milos Malik <mmalik@redhat.com>
+
diff --git a/policycoreutils/semanage-login/runtest.sh b/policycoreutils/semanage-login/runtest.sh
new file mode 100755
index 0000000..daf074c
--- /dev/null
+++ b/policycoreutils/semanage-login/runtest.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Regression/semanage-login
+# Description: Does semanage login ... work correctly?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "semanage login --help" 0,1
+ for POLICY_TYPE in minimum mls targeted ; do
+ if [ ! -d /etc/selinux/${POLICY_TYPE} ] ; then
+ continue
+ fi
+ rlRun "semanage login -l -S ${POLICY_TYPE}"
+ done
+ if ! rlIsRHEL 5; then
+ rlRun "semanage login -l -S unknown 2>&1 | grep \"store cannot be accessed\""
+ fi
+ rlRun "semanage login -a -s xyz_u xyz 2>&1 | grep -i -e 'does not exist' -e 'mapping.*invalid' -e 'could not query'"
+ rlRun "semanage login -m xyz" 1
+ rlRun "semanage login -d xyz" 1
+ rlRun "useradd xyz"
+ rlRun "semanage login -a -s user_u xyz"
+ rlRun "semanage login -m -r s0 xyz"
+ rlRun "semanage login -l | grep \"xyz.*user_u.*s0\""
+ rlRun "semanage login -d xyz"
+ rlRun "semanage login -l | grep xyz" 1
+ rlRun "userdel -rf xyz"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/semanage-permissive-d-problems/Makefile b/policycoreutils/semanage-permissive-d-problems/Makefile
new file mode 100644
index 0000000..a5bffc2
--- /dev/null
+++ b/policycoreutils/semanage-permissive-d-problems/Makefile
@@ -0,0 +1,70 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Regression/semanage-permissive-d-problems
+# Description: semanage permissive -d accepts more than domain types, its behavior is not reliable
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Regression/semanage-permissive-d-problems
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ chmod a+x runtest.sh
+ chcon -t bin_t runtest.sh; :
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: semanage permissive -d accepts more than domain types, its behavior is not reliable" >> $(METADATA)
+ @echo "Type: Regression" >> $(METADATA)
+ @echo "TestTime: 20m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils-python-utils" >> $(METADATA)
+ @echo "Requires: policycoreutils-devel" >> $(METADATA)
+ @echo "Requires: selinux-policy-devel" >> $(METADATA)
+ @echo "Requires: grep" >> $(METADATA)
+ @echo "Requires: coreutils" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Releases: -RHEL4 -RHELServer5 -RHELClient5" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/semanage-permissive-d-problems/PURPOSE b/policycoreutils/semanage-permissive-d-problems/PURPOSE
new file mode 100644
index 0000000..f0d5e6f
--- /dev/null
+++ b/policycoreutils/semanage-permissive-d-problems/PURPOSE
@@ -0,0 +1,5 @@
+PURPOSE of /CoreOS/policycoreutils/Regression/semanage-permissive-d-problems
+Author: Milos Malik <mmalik@redhat.com>
+
+Does semanage permissive work correctly?
+
diff --git a/policycoreutils/semanage-permissive-d-problems/runtest.sh b/policycoreutils/semanage-permissive-d-problems/runtest.sh
new file mode 100755
index 0000000..61ccc4f
--- /dev/null
+++ b/policycoreutils/semanage-permissive-d-problems/runtest.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Regression/semanage-permissive-d-problems
+# Description: semanage permissive -d accepts more than domain types, its behavior is not reliable
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include rhts environment
+. /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlRun "rpm -qf /usr/sbin/semanage"
+ OUTPUT_FILE=`mktemp`
+ rlRun "sestatus"
+ rlPhaseEnd
+
+ if selinuxenabled ; then
+ rlPhaseStartTest
+ if rlIsRHEL 7 ; then
+ rlFileBackup /usr/share/selinux/default/Makefile
+ rlRun "rm -rf /usr/share/selinux/default/Makefile"
+ fi
+ rlRun "semanage permissive -l | grep fenced" 1
+ rlRun "semanage permissive -a fenced_t"
+ rlRun "semanage permissive -l | grep fenced"
+ rlRun "semanage permissive -d fenced_t"
+ rlRun "semanage permissive -l | grep fenced" 1
+ if rlIsRHEL 7 ; then
+ rlFileRestore
+ fi
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "semanage permissive -l 2>&1 | grep -e ypserv_t -e ypbind_t | tee ${OUTPUT_FILE}"
+ rlRun "wc -l < ${OUTPUT_FILE} | grep ^0$"
+ rlRun "semanage permissive -a ypbind_t"
+ rlRun "semanage permissive -a ypserv_t"
+ rlRun "semanage permissive -l 2>&1 | grep -e ypserv_t -e ypbind_t | tee ${OUTPUT_FILE}"
+ rlRun "wc -l < ${OUTPUT_FILE} | grep ^2$"
+ rlRun "semanage permissive -d yp" 1-255
+ rlRun "semanage permissive -l 2>&1 | grep -e ypserv_t -e ypbind_t | tee ${OUTPUT_FILE}"
+ rlRun "wc -l < ${OUTPUT_FILE} | grep ^2$"
+ rlRun "semanage permissive -d ypbind_t"
+ rlRun "semanage permissive -d ypserv_t"
+ rlRun "semanage permissive -l 2>&1 | grep -e ypserv_t -e ypbind_t | tee ${OUTPUT_FILE}"
+ rlRun "wc -l < ${OUTPUT_FILE} | grep ^0$"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun -s "semanage permissive -d" 1
+ rlAssertNotGrep 'traceback' $rlRun_LOG -iEq
+ rlAssertGrep 'error: the following argument is required: type' $rlRun_LOG -iEq
+ rm -f $rlRun_LOG
+ rlPhaseEnd
+ else
+ rlPhaseStartTest
+ rlRun "semanage permissive -l >& ${OUTPUT_FILE}" 0,1
+ rlRun "grep -C 32 -i -e exception -e traceback -e error ${OUTPUT_FILE}" 1
+ rlPhaseEnd
+ fi
+
+ rlPhaseStartCleanup
+ rm -f ${OUTPUT_FILE}
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/semanage-port-add-delete-problems/Makefile b/policycoreutils/semanage-port-add-delete-problems/Makefile
new file mode 100644
index 0000000..263da02
--- /dev/null
+++ b/policycoreutils/semanage-port-add-delete-problems/Makefile
@@ -0,0 +1,71 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Regression/semanage-port-add-delete-problems
+# Description: semanage accepts invalid port numbers and then cannot delete them
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2009 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Regression/semanage-port-add-delete-problems
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ chmod a+x runtest.sh
+ chcon -t bin_t runtest.sh;:
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: semanage accepts invalid port numbers and then cannot delete them" >> $(METADATA)
+ @echo "Type: Regression" >> $(METADATA)
+ @echo "TestTime: 15m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils-python-utils" >> $(METADATA)
+ @echo "Requires: setools-console" >> $(METADATA)
+ @echo "Requires: libselinux" >> $(METADATA)
+ @echo "Requires: libselinux-utils" >> $(METADATA)
+ @echo "Requires: coreutils" >> $(METADATA)
+ @echo "Requires: grep" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/semanage-port-add-delete-problems/PURPOSE b/policycoreutils/semanage-port-add-delete-problems/PURPOSE
new file mode 100644
index 0000000..a59e74f
--- /dev/null
+++ b/policycoreutils/semanage-port-add-delete-problems/PURPOSE
@@ -0,0 +1,5 @@
+PURPOSE of /CoreOS/policycoreutils/Regression/semanage-port-add-delete-problems
+Author: Milos Malik <mmalik@redhat.com>
+
+semanage accepts invalid port numbers and then cannot delete them
+
diff --git a/policycoreutils/semanage-port-add-delete-problems/runtest.sh b/policycoreutils/semanage-port-add-delete-problems/runtest.sh
new file mode 100755
index 0000000..2bd9c9a
--- /dev/null
+++ b/policycoreutils/semanage-port-add-delete-problems/runtest.sh
@@ -0,0 +1,137 @@
+#!/bin/bash
+# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Regression/semanage-port-add-delete-problems
+# Description: semanage accepts invalid port numbers and then cannot delete them
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2009 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+PORT_NAME="ldap_port_t"
+BAD_PORT_NUMBER="123456"
+GOOD_PORT_NUMBER="1389"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlRun "rpm -qf /usr/sbin/semanage"
+ rlRun "rpm -qf /usr/bin/seinfo"
+ OUTPUT_FILE=`mktemp`
+ rlRun "setenforce 1"
+ rlRun "sestatus"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "semanage port -l | grep ${PORT_NAME}"
+
+ rlRun "semanage port -l | grep ${PORT_NAME} | tee -a ${OUTPUT_FILE}"
+ rlRun "semanage port -a -t ${PORT_NAME} -p tcp ${BAD_PORT_NUMBER}" 1
+ rlRun "semanage port -l | grep ${PORT_NAME} | tee -a ${OUTPUT_FILE}"
+ rlRun "semanage port -d -t ${PORT_NAME} -p tcp ${BAD_PORT_NUMBER}" 1
+ rlRun "semanage port -l | grep ${PORT_NAME} | tee -a ${OUTPUT_FILE}"
+ #rlRun "sort ${OUTPUT_FILE} | uniq | wc -l | grep '^2$'"
+
+ rlRun "semanage port -l | grep ${PORT_NAME} | grep ${GOOD_PORT_NUMBER}" 1
+ rlRun "semanage port -a -t ${PORT_NAME} -p tcp ${GOOD_PORT_NUMBER}"
+ rlRun "semanage port -l | grep ${PORT_NAME} | grep ${GOOD_PORT_NUMBER}"
+ rlRun "semanage port -d -t ${PORT_NAME} -p tcp ${GOOD_PORT_NUMBER}"
+ rlRun "semanage port -l | grep ${PORT_NAME} | grep ${GOOD_PORT_NUMBER}" 1
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "semanage port -a -t syslogd_port_t -p tcp 60514-60516 2>&1 | grep -i traceback" 1
+ rlRun "semanage port -l | grep syslogd_port_t"
+ rlRun "semanage port -d -t syslogd_port_t -p tcp 60514-60516 2>&1 | grep -i traceback" 1
+ rlPhaseEnd
+
+ if rlIsRHEL ; then
+ rlPhaseStartTest
+ rlRun "ps -efZ | grep -v grep | grep \"auditd_t.*auditd\""
+ if rlIsRHEL 5 6; then
+ PORT_TYPE="syslogd_port_t"
+ else
+ PORT_TYPE="commplex_link_port_t"
+ fi
+
+ # adding a port number to a type
+ START_DATE_TIME=`date "+%m/%d/%Y %T"`
+ sleep 1
+ rlRun "semanage port -a -p tcp -t $PORT_TYPE 5005"
+ sleep 2
+
+ # Check for user_avc
+ rlRun "ausearch -m user_avc -ts ${START_DATE_TIME} > ${OUTPUT_FILE}" 0,1
+ LINE_COUNT=`wc -l < ${OUTPUT_FILE}`
+ rlRun "cat ${OUTPUT_FILE}"
+ rlAssert0 "number of lines in ${OUTPUT_FILE} should be 0" ${LINE_COUNT}
+
+ # deleting a port number from a type
+ START_DATE_TIME=`date "+%m/%d/%Y %T"`
+ sleep 1
+ rlRun "semanage port -d -p tcp -t $PORT_TYPE 5005"
+ sleep 2
+
+ # Check for user_avc
+ rlRun "ausearch -m user_avc -ts ${START_DATE_TIME} > ${OUTPUT_FILE}" 0,1
+ LINE_COUNT=`wc -l < ${OUTPUT_FILE}`
+ rlRun "cat ${OUTPUT_FILE}"
+ rlAssert0 "number of lines in ${OUTPUT_FILE} should be 0" ${LINE_COUNT}
+ rlPhaseEnd
+ fi
+
+ if ! rlIsRHEL 5 ; then
+ rlPhaseStartTest
+ rlRun "seinfo --portcon | grep :hi_reserved_port_t:"
+ rlRun "seinfo --portcon | grep :reserved_port_t:"
+ rlRun "semanage port -l | grep ^hi_reserved_port_t"
+ rlRun "semanage port -l | grep ^reserved_port_t"
+ if ! rlIsRHEL 6 ; then
+ rlRun "seinfo --portcon | grep :unreserved_port_t:"
+ rlRun "semanage port -l | grep ^unreserved_port_t"
+ fi
+ rlPhaseEnd
+ fi
+
+ rlPhaseStartTest "manipulation with hard-wired ports"
+ rlRun "semanage port -l | grep 'smtp_port_t.*tcp.*25'"
+ rlRun "semanage port -a -t smtp_port_t -p tcp 25 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "port .* already defined" ${OUTPUT_FILE} -i
+ rlRun "semanage port -a -t smtp_port_t -p tcp 25 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "port .* already defined" ${OUTPUT_FILE} -i
+ rlRun "semanage port -l | grep 'smtp_port_t.*tcp.*25'"
+ rlRun "semanage port -d -t smtp_port_t -p tcp 25 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "port .* is defined in policy.*cannot be deleted" ${OUTPUT_FILE} -i
+ rlRun "semanage port -d -t smtp_port_t -p tcp 25 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "port .* is defined in policy.*cannot be deleted" ${OUTPUT_FILE} -i
+ rlRun "semanage port -l | grep 'smtp_port_t.*tcp.*25'"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rm -f ${OUTPUT_FILE}
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/semanage-user/Makefile b/policycoreutils/semanage-user/Makefile
new file mode 100644
index 0000000..5ab248d
--- /dev/null
+++ b/policycoreutils/semanage-user/Makefile
@@ -0,0 +1,65 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Regression/semanage-user
+# Description: Does semanage user ... work correctly?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Regression/semanage-user
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE testpolicy.te
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+ test -x runtest.sh || chcon -t bin_t runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: Does semanage user ... work correctly?" >> $(METADATA)
+ @echo "Type: Regression" >> $(METADATA)
+ @echo "TestTime: 20m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils policycoreutils-python-utils grep selinux-policy-devel selinux-policy-minimum selinux-policy-mls selinux-policy-targeted selinux-policy-devel" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/semanage-user/PURPOSE b/policycoreutils/semanage-user/PURPOSE
new file mode 100644
index 0000000..8089db8
--- /dev/null
+++ b/policycoreutils/semanage-user/PURPOSE
@@ -0,0 +1,4 @@
+PURPOSE of /CoreOS/policycoreutils/Regression/semanage-user
+Description: Does semanage user ... work correctly?
+Author: Milos Malik <mmalik@redhat.com>
+
diff --git a/policycoreutils/semanage-user/runtest.sh b/policycoreutils/semanage-user/runtest.sh
new file mode 100755
index 0000000..b2413fb
--- /dev/null
+++ b/policycoreutils/semanage-user/runtest.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Regression/semanage-user
+# Description: Does semanage user ... work correctly?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlRun "make -f /usr/share/selinux/devel/Makefile"
+ rlRun "ls -l testpolicy.pp"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ if rlIsRHEL 5 6; then
+ rlRun "semanage user --help" 1
+ else
+ rlRun "semanage user --help" 0
+ # semanage: list option can not be used with --level ("semanage user -l")
+ rlRun "semanage user --help | grep fcontext" 1
+ fi
+ for POLICY_TYPE in minimum mls targeted ; do
+ if [ ! -d /etc/selinux/${POLICY_TYPE} ] ; then
+ continue
+ fi
+ rlRun "semanage user -l -S ${POLICY_TYPE}"
+ done
+ if ! rlIsRHEL 5; then
+ rlRun "semanage user -l -S unknown 2>&1 | grep \"store cannot be accessed\""
+ fi
+ rlRun "semanage user -a -P user -R xyz_r xyz_u 2>&1 | grep -i -e 'undefined' -e 'error' -e 'could not'"
+ rlRun "semanage user -m xyz_u" 1
+ rlRun "semanage user -d xyz_u" 1
+ rlRun "semodule -i testpolicy.pp"
+ rlRun "semanage user -a -P user -R xyz_r xyz_u"
+ rlRun "semanage user -m -r s0 xyz_u"
+ rlRun "semanage user -l | grep \"xyz_u.*s0.*s0.*xyz_r\""
+ rlRun "semanage user -d xyz_u"
+ rlRun "semanage user -l | grep xyz_u" 1
+ rlRun "semodule -r testpolicy"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "rm -rf tmp testpolicy.{fc,if,pp}"
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/semanage-user/testpolicy.te b/policycoreutils/semanage-user/testpolicy.te
new file mode 100644
index 0000000..b854bef
--- /dev/null
+++ b/policycoreutils/semanage-user/testpolicy.te
@@ -0,0 +1,11 @@
+module testpolicy 1.0;
+
+type xyz_t;
+role xyz_r;
+
+require {
+ type xyz_t;
+}
+
+role xyz_r types xyz_t;
+
diff --git a/policycoreutils/sepolicy-generate/Makefile b/policycoreutils/sepolicy-generate/Makefile
new file mode 100644
index 0000000..9e1a9b7
--- /dev/null
+++ b/policycoreutils/sepolicy-generate/Makefile
@@ -0,0 +1,64 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Sanity/sepolicy-generate
+# Description: sepolicy generate sanity test
+# Author: Michal Trunecka <mtruneck@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Sanity/sepolicy-generate
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ test -x runtest.sh || chmod a+x runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Michal Trunecka <mtruneck@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: sepolicy generate sanity test" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 115m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils policycoreutils-devel rpm-build" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4 -RHEL5 -RHEL6" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/sepolicy-generate/PURPOSE b/policycoreutils/sepolicy-generate/PURPOSE
new file mode 100644
index 0000000..a069ff2
--- /dev/null
+++ b/policycoreutils/sepolicy-generate/PURPOSE
@@ -0,0 +1,3 @@
+PURPOSE of /CoreOS/policycoreutils/Sanity/sepolicy-generate
+Description: sepolicy generate sanity test
+Author: Michal Trunecka <mtruneck@redhat.com>
diff --git a/policycoreutils/sepolicy-generate/runtest.sh b/policycoreutils/sepolicy-generate/runtest.sh
new file mode 100755
index 0000000..5da10b8
--- /dev/null
+++ b/policycoreutils/sepolicy-generate/runtest.sh
@@ -0,0 +1,115 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Sanity/sepolicy-generate
+# Description: sepolicy generate sanity test
+# Author: Michal Trunecka <mtruneck@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include Beaker environment
+. /usr/bin/rhts-environment.sh || exit 1
+. /usr/share/beakerlib/beakerlib.sh || exit 1
+
+PACKAGE="policycoreutils"
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlRun "rlCheckRequirements ${PACKAGES[*]}" || rlDie "cannot continue"
+ rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
+ rlRun "pushd $TmpDir"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "mkdir mypolicy"
+ rlRun "sepolicy generate --customize -p mypolicy -n testpolicy -d httpd_sys_script_t -w /home"
+ rlRun "grep 'manage_dirs_pattern(httpd_sys_script_t' mypolicy/testpolicy.te"
+ rlRun "rm -rf mypolicy"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "mkdir mypolicy"
+ rlRun "touch /usr/bin/testpolicy"
+ for VARIANT in " -n testpolicy --admin_user -r webadm_r" \
+ " --application /usr/bin/testpolicy " \
+ " -n testpolicy --confined_admin -a firewalld " \
+ " -n testpolicy --confined_admin " \
+ " -n testpolicy --customize -d httpd_t -a firewalld " \
+ " -n testpolicy --customize -d httpd_t" \
+ " --dbus /usr/bin/testpolicy " \
+ " -n testpolicy --desktop_user " \
+ " --inetd /usr/bin/testpolicy " \
+ " --init /usr/bin/testpolicy " \
+ " -n testpolicy --newtype -t newtype_var_log_t " \
+ " -n testpolicy --newtype -t newtype_unit_file_t " \
+ " -n testpolicy --newtype -t newtype_var_run_t " \
+ " -n testpolicy --newtype -t newtype_var_cache_t " \
+ " -n testpolicy --newtype -t newtype_tmp_t " \
+ " -n testpolicy --newtype -t newtype_port_t " \
+ " -n testpolicy --newtype -t newtype_var_spool_t " \
+ " -n testpolicy --newtype -t newtype_var_lib_t " \
+ " -n testpolicy --sandbox " \
+ " -n testpolicy --term_user " \
+ " -n testpolicy --x_user "
+# " --cgi /usr/bin/testpolicy "
+ do
+ rlRun "sepolicy generate -p mypolicy $VARIANT"
+ rlRun "cat mypolicy/testpolicy.te"
+ rlRun "cat mypolicy/testpolicy.if"
+ rlRun "cat mypolicy/testpolicy.fc"
+ if echo "$VARIANT" | grep -q newtype; then
+ rlAssertNotExists "mypolicy/testpolicy.sh"
+ rlAssertNotExists "mypolicy/testpolicy.spec"
+ else
+ rlRun "mypolicy/testpolicy.sh"
+ rlRun "semodule -l | grep testpolicy"
+ rlRun "semanage user -d testpolicy_u" 0-255
+ rlRun "semodule -r testpolicy"
+ fi
+
+ rlRun "rm -rf mypolicy/*"
+ rlRun "sleep 1"
+
+ if ! echo "$VARIANT" | grep -q newtype; then
+ rlRun "sepolicy generate -p mypolicy -w /home $VARIANT"
+ rlRun "cat mypolicy/testpolicy.te"
+ rlRun "cat mypolicy/testpolicy.if"
+ rlRun "cat mypolicy/testpolicy.fc"
+
+ rlRun "mypolicy/testpolicy.sh"
+ rlRun "semodule -l | grep testpolicy"
+ rlRun "semanage user -d testpolicy_u" 0-255
+ rlRun "semodule -r testpolicy"
+
+ rlRun "rm -rf mypolicy/*"
+ rlRun "sleep 1"
+ fi
+ done
+ rlRun "rm -rf mypolicy"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "popd"
+ rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
diff --git a/policycoreutils/sestatus/Makefile b/policycoreutils/sestatus/Makefile
new file mode 100644
index 0000000..e45db0d
--- /dev/null
+++ b/policycoreutils/sestatus/Makefile
@@ -0,0 +1,67 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Sanity/sestatus
+# Description: tests everything about sestatus
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Sanity/sestatus
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ chmod a+x runtest.sh
+ chcon -t bin_t runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: tests everything about sestatus" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 5m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: policycoreutils" >> $(METADATA)
+ @echo "Requires: grep" >> $(METADATA)
+ @echo "Requires: man" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/sestatus/PURPOSE b/policycoreutils/sestatus/PURPOSE
new file mode 100644
index 0000000..cacee0f
--- /dev/null
+++ b/policycoreutils/sestatus/PURPOSE
@@ -0,0 +1,4 @@
+PURPOSE of /CoreOS/policycoreutils/Sanity/sestatus
+Description: tests everything about sestatus
+Author: Milos Malik <mmalik@redhat.com>
+
diff --git a/policycoreutils/sestatus/runtest.sh b/policycoreutils/sestatus/runtest.sh
new file mode 100644
index 0000000..b91b948
--- /dev/null
+++ b/policycoreutils/sestatus/runtest.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Sanity/sestatus
+# Description: tests everything about sestatus
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include rhts environment
+. /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh
+
+PACKAGE="policycoreutils"
+if rlIsRHEL 5 6 ; then
+ SELINUX_FS_MOUNT="/selinux"
+else # RHEL-7 and above
+ SELINUX_FS_MOUNT="/sys/fs/selinux"
+fi
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ rlFileBackup /etc/sestatus.conf
+ rlRun "mount | grep -i selinux" 0,1
+ OUTPUT_FILE=`mktemp`
+ rlPhaseEnd
+
+ rlPhaseStartTest "basic use"
+ rlRun "sestatus"
+ rlRun "sestatus -b 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "policy booleans" ${OUTPUT_FILE} -i
+ rlRun "sestatus -v 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "process contexts" ${OUTPUT_FILE} -i
+ rlAssertGrep "file contexts" ${OUTPUT_FILE} -i
+ rlAssertGrep "current context" ${OUTPUT_FILE} -i
+ rlAssertGrep "init context" ${OUTPUT_FILE} -i
+ rlAssertGrep "controlling term" ${OUTPUT_FILE} -i
+ rlRun "sestatus --xyz 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "invalid option" ${OUTPUT_FILE} -i
+ rlPhaseEnd
+
+ rlPhaseStartTest "extreme cases"
+ # pretend that the config file contains an invalid section
+ rlRun "sed -i 's/files/xyz/' /etc/sestatus.conf"
+ rlRun "sestatus -v 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "line not in a section" ${OUTPUT_FILE} -i
+ rlRun "rm -f /etc/sestatus.conf"
+ rlRun "mkdir /etc/sestatus.conf" # intentionally replaced a file with a directory
+ rlRun "sestatus -v"
+ # pretend that the config file is missing
+ rlRun "rm -rf /etc/sestatus.conf"
+ for OPTION in "-bv" "-v" ; do
+ rlRun "sestatus ${OPTION} 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "unable to open /etc/sestatus.conf" ${OUTPUT_FILE} -i
+ done
+ rlFileRestore
+ # pretend that SELinux is disabled
+ rlRun "umount ${SELINUX_FS_MOUNT}"
+ for OPTION in "" "-b" "-v" "-bv" ; do
+ rlRun "sestatus ${OPTION} 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "selinux status.*disabled" ${OUTPUT_FILE} -i
+ done
+ rlRun "mount -t selinuxfs none ${SELINUX_FS_MOUNT}"
+ # pretend that no booleans are defined
+ rlRun "mkdir ./booleans"
+ rlRun "mount --bind ./booleans ${SELINUX_FS_MOUNT}/booleans"
+ rlRun "sestatus -b 2>&1 | tee ${OUTPUT_FILE}"
+ rlRun "umount ${SELINUX_FS_MOUNT}/booleans"
+ rlAssertNotGrep "booleans" ${OUTPUT_FILE} -i
+ rlRun "rmdir ./booleans"
+ rlPhaseEnd
+
+ # This bug is not worth fixing in RHEL-5
+ if ! rlIsRHEL 5 ; then
+ rlPhaseStartTest
+ rlRun "rpm -ql ${PACKAGE} | grep /usr/sbin/sestatus"
+ rlRun "rpm -ql ${PACKAGE} | grep /usr/share/man/man8/sestatus.8"
+ for OPTION in b v ; do
+ rlRun "sestatus --help 2>&1 | grep -- -${OPTION}"
+ rlRun "man sestatus | col -b | grep -- -${OPTION}"
+ done
+ if ! rlIsRHEL 6 ; then
+ rlRun "man -w sestatus.conf"
+ fi
+ rlPhaseEnd
+ fi
+
+ rlPhaseStartCleanup
+ rlFileRestore
+ rm -f ${OUTPUT_FILE}
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
diff --git a/policycoreutils/setsebool/Makefile b/policycoreutils/setsebool/Makefile
new file mode 100644
index 0000000..0730993
--- /dev/null
+++ b/policycoreutils/setsebool/Makefile
@@ -0,0 +1,65 @@
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Makefile of /CoreOS/policycoreutils/Sanity/setsebool
+# Description: does setsebool work correctly ?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+export TEST=/CoreOS/policycoreutils/Sanity/setsebool
+export TESTVERSION=1.0
+
+BUILT_FILES=
+
+FILES=$(METADATA) runtest.sh Makefile PURPOSE
+
+.PHONY: all install download clean
+
+run: $(FILES) build
+ ./runtest.sh
+
+build: $(BUILT_FILES)
+ chmod a+x runtest.sh
+ chcon -t bin_t runtest.sh
+
+clean:
+ rm -f *~ $(BUILT_FILES)
+
+include /usr/share/rhts/lib/rhts-make.include
+
+$(METADATA): Makefile
+ @echo "Owner: Milos Malik <mmalik@redhat.com>" > $(METADATA)
+ @echo "Name: $(TEST)" >> $(METADATA)
+ @echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
+ @echo "Path: $(TEST_DIR)" >> $(METADATA)
+ @echo "Description: does setsebool work correctly ?" >> $(METADATA)
+ @echo "Type: Sanity" >> $(METADATA)
+ @echo "TestTime: 45m" >> $(METADATA)
+ @echo "RunFor: policycoreutils" >> $(METADATA)
+ @echo "Requires: audit policycoreutils libselinux-utils shadow-utils grep" >> $(METADATA)
+ @echo "Priority: Normal" >> $(METADATA)
+ @echo "License: GPLv2" >> $(METADATA)
+ @echo "Confidential: no" >> $(METADATA)
+ @echo "Destructive: no" >> $(METADATA)
+ @echo "Releases: -RHEL4" >> $(METADATA)
+
+ rhts-lint $(METADATA)
+
diff --git a/policycoreutils/setsebool/PURPOSE b/policycoreutils/setsebool/PURPOSE
new file mode 100644
index 0000000..07ce0bf
--- /dev/null
+++ b/policycoreutils/setsebool/PURPOSE
@@ -0,0 +1,5 @@
+PURPOSE of /CoreOS/policycoreutils/Sanity/setsebool
+Author: Milos Malik <mmalik@redhat.com>
+
+Does setsebool work as expected? Does it produce correct audit messages?
+
diff --git a/policycoreutils/setsebool/runtest.sh b/policycoreutils/setsebool/runtest.sh
new file mode 100755
index 0000000..04040d1
--- /dev/null
+++ b/policycoreutils/setsebool/runtest.sh
@@ -0,0 +1,151 @@
+#!/bin/bash
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# runtest.sh of /CoreOS/policycoreutils/Sanity/setsebool
+# Description: does setsebool work correctly ?
+# Author: Milos Malik <mmalik@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing
+# to use, modify, copy, or redistribute it subject to the terms
+# and conditions of the GNU General Public License version 2.
+#
+# This program is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# Include rhts environment
+. /usr/bin/rhts-environment.sh
+. /usr/share/beakerlib/beakerlib.sh
+
+PACKAGE="policycoreutils"
+USER_NAME="user${RANDOM}"
+USER_SECRET="s3kr3t${RANDOM}"
+BOOLEAN="ftpd_connect_db"
+if rlIsRHEL 5 6 ; then
+ SELINUX_FS_MOUNT="/selinux"
+else # RHEL-7 and above
+ SELINUX_FS_MOUNT="/sys/fs/selinux"
+fi
+
+rlJournalStart
+ rlPhaseStartSetup
+ rlAssertRpm ${PACKAGE}
+ OUTPUT_FILE=`mktemp`
+ chcon -t tmp_t ${OUTPUT_FILE}
+
+ rlRun "useradd ${USER_NAME}"
+ rlRun "echo ${USER_SECRET} | passwd --stdin ${USER_NAME}"
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ for OPTION in "" "-P" ; do
+ for OPERATOR in " " "=" ; do
+ for VALUE in 0 1 false true off on ; do
+ rlRun "setsebool ${OPTION} ${BOOLEAN}${OPERATOR}${VALUE} | grep -i -e illegal -e usage -e invalid" 1
+ if [ ${VALUE} == "0" -o ${VALUE} == "false" ] ; then
+ SHOWN_VALUE="off"
+ elif [ ${VALUE} == "1" -o ${VALUE} == "true" ] ; then
+ SHOWN_VALUE="on"
+ else
+ SHOWN_VALUE=${VALUE}
+ fi
+ rlRun "getsebool -a | grep \"^${BOOLEAN}.*${SHOWN_VALUE}\""
+ done
+ done
+ done
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ rlRun "setsebool" 1
+ rlRun "setsebool xyz=1 2>&1 | tee /dev/stderr | grep -i -e \"invalid boolean\" -e \"not found\" -e \"not defined\""
+ rlRun "setsebool xyz=-1 2>&1 | tee /dev/stderr | grep -i \"illegal value\""
+ rlRun "setsebool xyz=2 2>&1 | tee /dev/stderr | grep -i \"illegal value\""
+ if ! rlIsRHEL 5 6 ; then
+ rlRun "setsebool -N 2>&1 | tee /dev/stderr | grep -i \"boolean.*required\""
+ rlRun "setsebool -P 2>&1 | tee /dev/stderr | grep -i \"boolean.*required\""
+ fi
+ rlRun "setsebool -P xyz=1 2>&1 | tee /dev/stderr | grep -i -e \"invalid boolean\" -e \"not found\" -e \"not defined\""
+ rlRun "setsebool -P xyz=-1 2>&1 | tee /dev/stderr | grep -i \"illegal value\""
+ rlRun "setsebool -P xyz=2 2>&1 | tee /dev/stderr | grep -i \"illegal value\""
+ rlPhaseEnd
+
+ if ! rlIsRHEL 5 6 ; then
+ rlPhaseStartTest
+ rlRun "su -l -c '/usr/sbin/setsebool allow_ypbind 0' ${USER_NAME} 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "try as root" ${OUTPUT_FILE} -i
+ rlRun "su -l -c '/usr/sbin/setsebool allow_ypbind 1' ${USER_NAME} 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "try as root" ${OUTPUT_FILE} -i
+ rlRun "su -l -c '/usr/sbin/setsebool -P allow_ypbind 0' ${USER_NAME} 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "try as root" ${OUTPUT_FILE} -i
+ rlRun "su -l -c '/usr/sbin/setsebool -P allow_ypbind 1' ${USER_NAME} 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "try as root" ${OUTPUT_FILE} -i
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ for OPTION in "" "-P" ; do
+ rlRun "getsebool allow_ypbind | grep nis_enabled"
+ rlRun "setsebool ${OPTION} allow_ypbind on"
+ rlRun "getsebool allow_ypbind | grep \"nis_enabled.*on\""
+ rlRun "setsebool ${OPTION} allow_ypbind off"
+ rlRun "getsebool allow_ypbind | grep \"nis_enabled.*off\""
+ done
+ rlPhaseEnd
+
+ rlPhaseStartTest
+ # https://fedoraproject.org/wiki/Features/SELinuxBooleansRename
+ for LINE in `cat /etc/selinux/*/booleans.subs_dist | sort | uniq | tr -s ' ' | tr ' ' ':'` ; do
+ OLD_BOOLEAN_NAME=`echo ${LINE} | cut -d : -f 1`
+ NEW_BOOLEAN_NAME=`echo ${LINE} | cut -d : -f 2`
+ rlRun "getsebool ${OLD_BOOLEAN_NAME} 2>&1 | tee ${OUTPUT_FILE}"
+ rlRun "getsebool ${NEW_BOOLEAN_NAME} 2>&1 | tee -a ${OUTPUT_FILE}"
+ rlRun "uniq -c ${OUTPUT_FILE} | grep '2 '"
+ done
+ rlPhaseEnd
+ fi
+
+ rlPhaseStartTest "audit messages"
+ START_DATE_TIME=`date "+%m/%d/%Y %T"`
+ sleep 1
+ rlRun "setsebool ${BOOLEAN} on"
+ rlRun "setsebool ${BOOLEAN} off"
+ rlRun "setsebool ${BOOLEAN} on"
+ sleep 1
+ rlRun "ausearch -m MAC_CONFIG_CHANGE -i -ts ${START_DATE_TIME} | grep \"type=MAC_CONFIG_CHANGE.*bool=${BOOLEAN} val=1 old_val=0\""
+ rlRun "ausearch -m MAC_CONFIG_CHANGE -i -ts ${START_DATE_TIME} | grep \"type=MAC_CONFIG_CHANGE.*bool=${BOOLEAN} val=0 old_val=1\""
+ if rlIsRHEL ; then
+ rlRun "ausearch -m MAC_CONFIG_CHANGE -i -ts ${START_DATE_TIME} | grep \"type=SYSCALL.*comm=setsebool\""
+ fi
+ rlPhaseEnd
+
+ rlPhaseStartTest "extreme cases"
+ # pretend that no booleans are defined
+ rlRun "mkdir ./booleans"
+ rlRun "mount --bind ./booleans ${SELINUX_FS_MOUNT}/booleans"
+ rlRun "setsebool ${BOOLEAN} on 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "could not change active booleans" ${OUTPUT_FILE} -i
+ rlRun "setsebool ${BOOLEAN} off 2>&1 | tee ${OUTPUT_FILE}"
+ rlAssertGrep "could not change active booleans" ${OUTPUT_FILE} -i
+ rlRun "umount ${SELINUX_FS_MOUNT}/booleans"
+ rlRun "rmdir ./booleans"
+ rlPhaseEnd
+
+ rlPhaseStartCleanup
+ rlRun "userdel -rf ${USER_NAME}"
+ rm -f ${OUTPUT_FILE}
+ rlPhaseEnd
+rlJournalPrintText
+rlJournalEnd
+
reply other threads:[~2026-09-11 13:17 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178913263372.1.12275318208913907010.tests-selinux-f97a294e75f1@fedoraproject.org \
--to=plautrba@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox