[OE-core] [PATCH v2] ltp: Remove admin_tools test
He Zhe
zhe.he at windriver.com
Mon Jan 28 09:45:13 UTC 2019
Kindly ping.
Zhe
On 1/15/19 10:47 AM, He Zhe wrote:
> admin_tools test group has been removed from upstream. Backport to fix the
> following failures.
>
> at_deny01 1 TFAIL : ltpapicmd.c:188: At denyed user to execute test job
> at_allow01 1 TFAIL : ltpapicmd.c:188: At did not allow user to execute job
>
> Signed-off-by: He Zhe <zhe.he at windriver.com>
> ---
> v2: Add missing SOB and upstream status.
>
> .../ltp/ltp/0001-Remove-admin_tools-test.patch | 3042 ++++++++++++++++++++
> meta/recipes-extended/ltp/ltp_20180926.bb | 1 +
> 2 files changed, 3043 insertions(+)
> create mode 100644 meta/recipes-extended/ltp/ltp/0001-Remove-admin_tools-test.patch
>
> diff --git a/meta/recipes-extended/ltp/ltp/0001-Remove-admin_tools-test.patch b/meta/recipes-extended/ltp/ltp/0001-Remove-admin_tools-test.patch
> new file mode 100644
> index 0000000000..2fc5be82a1
> --- /dev/null
> +++ b/meta/recipes-extended/ltp/ltp/0001-Remove-admin_tools-test.patch
> @@ -0,0 +1,3042 @@
> +From 0fc9b8624bea8acfdb408bf5ff4916b1453e3daa Mon Sep 17 00:00:00 2001
> +From: Petr Vorel <pvorel at suse.cz>
> +Date: Thu, 27 Sep 2018 16:57:20 +0200
> +Subject: [PATCH] Remove admin_tools test
> +
> +Removing cron, at, su related tests as they don't really fit into
> +"kernel testing", it'd be better to have them in some "LTP userspace"
> +project.
> +ACL are considered as "kernel tests", but it would be easier to write
> +something from scratch, thus remove them as well.
> +
> +Signed-off-by: Petr Vorel <pvorel at suse.cz>
> +Acked-by: Xiao Yang <yangx.jy at cn.fujitsu.com>
> +Acked-by: Jan Stancek <jstancek at redhat.com>
> +Acked-by: Cyril Hrubis <chrubis at suse.cz
> +
> +Upstream-Status: Backport [https://github.com/linux-test-project/ltp/commit/0fc9b8624bea8acfdb408bf5ff4916b1453e3daa]
> +
> +Signed-off-by: He Zhe <zhe.he at windriver.com>
> +
> +---
> + runtest/admin_tools | 9 -
> + runtest/commands | 1 -
> + scenario_groups/default | 1 -
> + testcases/commands/.gitignore | 1 -
> + testcases/commands/at/Makefile | 31 --
> + testcases/commands/at/at_allow01 | 188 ---------
> + testcases/commands/at/at_deny01 | 195 ----------
> + testcases/commands/cron/00_Descriptions.txt | 4 -
> + testcases/commands/cron/Makefile | 29 --
> + testcases/commands/cron/README.tests | 25 --
> + testcases/commands/cron/cron02 | 80 ----
> + testcases/commands/cron/cron03 | 83 ----
> + testcases/commands/cron/cron_allow01 | 202 ----------
> + testcases/commands/cron/cron_deny01 | 192 ----------
> + testcases/commands/cron/cron_dirs_check.c | 44 ---
> + testcases/commands/cron/cron_dirs_checks01 | 46 ---
> + testcases/commands/cron/cron_illegal_cron_lines | 39 --
> + testcases/commands/cron/cron_neg_tests.sh | 141 -------
> + testcases/commands/cron/cron_pos_tests.sh | 118 ------
> + testcases/commands/cron/cron_tests.sh | 276 --------------
> + testcases/commands/su/Makefile | 31 --
> + testcases/commands/su/su01 | 181 ---------
> + testcases/commands/su/su01_s1 | 486 ------------------------
> + testcases/commands/su/su_set_passwd | 14 -
> + testcases/kernel/fs/acls/.gitignore | 2 -
> + testcases/kernel/fs/acls/Makefile | 40 --
> + testcases/kernel/fs/acls/acl_file_test.c | 73 ----
> + testcases/kernel/fs/acls/acl_link_test.c | 56 ---
> + testcases/kernel/fs/acls/acl_test01 | 186 ---------
> + 29 files changed, 2774 deletions(-)
> + delete mode 100644 runtest/admin_tools
> + delete mode 100644 testcases/commands/at/Makefile
> + delete mode 100755 testcases/commands/at/at_allow01
> + delete mode 100755 testcases/commands/at/at_deny01
> + delete mode 100644 testcases/commands/cron/00_Descriptions.txt
> + delete mode 100644 testcases/commands/cron/Makefile
> + delete mode 100644 testcases/commands/cron/README.tests
> + delete mode 100755 testcases/commands/cron/cron02
> + delete mode 100755 testcases/commands/cron/cron03
> + delete mode 100755 testcases/commands/cron/cron_allow01
> + delete mode 100755 testcases/commands/cron/cron_deny01
> + delete mode 100644 testcases/commands/cron/cron_dirs_check.c
> + delete mode 100755 testcases/commands/cron/cron_dirs_checks01
> + delete mode 100644 testcases/commands/cron/cron_illegal_cron_lines
> + delete mode 100755 testcases/commands/cron/cron_neg_tests.sh
> + delete mode 100755 testcases/commands/cron/cron_pos_tests.sh
> + delete mode 100644 testcases/commands/cron/cron_tests.sh
> + delete mode 100644 testcases/commands/su/Makefile
> + delete mode 100755 testcases/commands/su/su01
> + delete mode 100755 testcases/commands/su/su01_s1
> + delete mode 100755 testcases/commands/su/su_set_passwd
> + delete mode 100644 testcases/kernel/fs/acls/.gitignore
> + delete mode 100644 testcases/kernel/fs/acls/Makefile
> + delete mode 100644 testcases/kernel/fs/acls/acl_file_test.c
> + delete mode 100644 testcases/kernel/fs/acls/acl_link_test.c
> + delete mode 100755 testcases/kernel/fs/acls/acl_test01
> +
> +diff --git a/runtest/admin_tools b/runtest/admin_tools
> +deleted file mode 100644
> +index 0a46468c8..000000000
> +--- a/runtest/admin_tools
> ++++ /dev/null
> +@@ -1,9 +0,0 @@
> +-su01 export TCbin=$LTPROOT/testcases/bin;su01
> +-#cron01 cron01
> +-cron02 cron02
> +-cron_deny01 cron_deny01
> +-cron_allow01 cron_allow01
> +-cron_dirs_checks01 cron_dirs_checks01
> +-at_deny01 at_deny01
> +-at_allow01 at_allow01
> +-acl_test01 acl_test01
> +diff --git a/runtest/commands b/runtest/commands
> +index ee7e9f440..462633017 100644
> +--- a/runtest/commands
> ++++ b/runtest/commands
> +@@ -5,7 +5,6 @@ ldd01 ldd01
> + nm01 nm01
> + file01 file01.sh
> + tar01 tar_tests.sh
> +-cron cron_tests.sh
> + logrotate export TCdat=$LTPROOT/testcases/bin; logrotate_tests.sh
> + cpio01 cpio_tests.sh
> + unzip01 unzip01.sh
> +diff --git a/scenario_groups/default b/scenario_groups/default
> +index 5658a618b..b1739b77e 100644
> +--- a/scenario_groups/default
> ++++ b/scenario_groups/default
> +@@ -17,7 +17,6 @@ filecaps
> + cap_bounds
> + fcntl-locktests
> + connectors
> +-admin_tools
> + timers
> + power_management_tests
> + numa
> +diff --git a/testcases/commands/.gitignore b/testcases/commands/.gitignore
> +index 9aa1caf6c..0ed343881 100644
> +--- a/testcases/commands/.gitignore
> ++++ b/testcases/commands/.gitignore
> +@@ -1,5 +1,4 @@
> + /ldd/datafiles/lddfile.out
> + /ldd/datafiles/*.obj.so
> +-/cron/cron_dirs_check
> + /eject/eject_check_tray
> + /insmod/ltp_insmod01.ko
> +diff --git a/testcases/commands/at/Makefile b/testcases/commands/at/Makefile
> +deleted file mode 100644
> +index ca3fb04fe..000000000
> +--- a/testcases/commands/at/Makefile
> ++++ /dev/null
> +@@ -1,31 +0,0 @@
> +-#
> +-# commands/at testcases Makefile.
> +-#
> +-# Copyright (C) 2009, Cisco Systems 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, write to the Free Software Foundation, Inc.,
> +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +-#
> +-# Ngie Cooper, July 2009
> +-#
> +-
> +-top_srcdir ?= ../../..
> +-
> +-include $(top_srcdir)/include/mk/env_pre.mk
> +-
> +-INSTALL_TARGETS := at_allow01 at_deny01
> +-
> +-MAKE_TARGETS :=
> +-
> +-include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +diff --git a/testcases/commands/at/at_allow01 b/testcases/commands/at/at_allow01
> +deleted file mode 100755
> +index c0e9335cf..000000000
> +--- a/testcases/commands/at/at_allow01
> ++++ /dev/null
> +@@ -1,188 +0,0 @@
> +-#!/bin/sh -u
> +-#
> +-# Copyright (C) 2008 CAI Qian <caiqian at cclom.cn>
> +-# Copyright (c) International Business Machines Corp., 2003
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
> +-# USA
> +-#
> +-# FILE: /etc/at.allow
> +-#
> +-# PURPOSE: Test that /etc/at.allow , only allows those in the file to
> +-# run cron jobs.
> +-#
> +-# HISTORY:
> +-# 04/03 Jerone Young (jyoung5 at us.ibm.com)
> +-#
> +-
> +-export TCID=at_allow01
> +-export TST_TOTAL=1
> +-export TST_COUNT=1
> +-TMP=${TMP:=/tmp}
> +-allow="/etc/at.allow"
> +-test_user1="test_user_1"
> +-test_user2="test_user_2"
> +-test_user1_home="/home/${test_user1}"
> +-test_user2_home="/home/${test_user2}"
> +-tmpfile="$TMP/at_allow_test"
> +-
> +-if [ "$(id -ru)" = 0 ]; then
> +- . cmdlib.sh
> +-fi
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup()
> +-{
> +- # Move any files that may get in the way.
> +- rm "${tmpfile}" >/dev/null 2>&1
> +- mv "${allow}" "${allow}.old" >/dev/null 2>&1
> +-
> +- # Remove users for clean enviroment.
> +- rm -rf "${test_user1_home}" "${test_user2_home}"
> +- userdel -r "${test_user1}" >/dev/null 2>&1
> +- userdel -r "${test_user2}" >/dev/null 2>&1
> +-
> +- # Create the 1st user.
> +- if ! useradd -g users -d "${test_user1_home}" -m "${test_user1}"; then
> +- echo "Could not add test user ${test_user1} to system."
> +- exit 1
> +- fi
> +-
> +- # Create the 2nd user.
> +- if ! useradd -g users -d "${test_user2_home}" -m "${test_user2}"; then
> +- echo "Could not add test user ${test_user2} to system."
> +- exit 1
> +- fi
> +-
> +- # This is the workaround for a potential bug.
> +- # [Bug 468337] At Refuse to Work with Non-login Shell
> +- # https://bugzilla.redhat.com/show_bug.cgi?id=468337
> +- # As we are running in non-login shell now, we cannot run the script
> +- # by simply given it a relative path. Therefore, we copy it to test
> +- # users' home directories, and run it from there.
> +- cp "$0" "${test_user1_home}/." &&
> +- cp "$0" "${test_user2_home}/." &&
> +- echo "export LTPROOT='$LTPROOT'" > "${test_user1_home}/cached_ltproot" &&
> +- echo "export LTPROOT='$LTPROOT'" > "${test_user2_home}/cached_ltproot"
> +- if [ $? -ne 0 ]; then
> +- tst_resm TBROK "Couldn't copy over req'd files for test users"
> +- exit 1
> +- fi
> +-
> +- restart_daemon atd
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-do_cleanup()
> +-{
> +- # We forcefully remove those files anyway. Otherwise userdel may
> +- # give us bad warnings.
> +- rm -rf "${test_user1_home}" "${test_user2_home}"
> +- userdel -r "${test_user1}" >/dev/null 2>&1
> +- userdel -r "${test_user2}" >/dev/null 2>&1
> +- rm "${allow}"
> +- mv "${allow}.old" "${allow}" >/dev/null 2>&1
> +- rm "${tmpfile}" >/dev/null 2>&1
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: run_test
> +-#-----------------------------------------------------------------------
> +-run_test()
> +-{
> +- if [ $(whoami) = "${test_user1}" ]; then
> +- . "${test_user1_home}/cached_ltproot" || exit 1
> +- export PATH="$PATH:$LTPROOT/testcases/bin"
> +-
> +- echo "TEST: $allow should allow only those who in the file to run jobs."
> +- echo "(1) TEST THAT PERSON IN ${allow} IS ABLE TO RUN JOB."
> +- echo "echo 'TEST JOB RAN' >>\"${tmpfile}\" 2>&1" |
> +- if ! at -m now + 1 minutes ; then
> +- echo "Error while adding job using at for user ${test_user1}."
> +- exit 1
> +- fi
> +- echo " Sleeping for 75 seconds...."
> +- sleep 75
> +-
> +- exit_code=1
> +- test -e "${tmpfile}" && exit_code=0
> +- if [ ${exit_code} -eq 1 ]; then
> +- tst_resm TFAIL "At did not allow user to execute job"
> +- else
> +- tst_resm TPASS "At allowed user to execute test job"
> +- fi
> +-
> +- rm -f "${tmpfile}" >/dev/null 2>&1
> +- exit ${exit_code}
> +-
> +- elif [ $(whoami) = "${test_user2}" ]; then
> +-
> +- . "${test_user2_home}/cached_ltproot" || exit 1
> +- export PATH="$PATH:$LTPROOT/testcases/bin"
> +-
> +- echo "(2) TEST PERSON THAT IS NOT IN ${allow} IS NOT ABLE TO RUN JOB."
> +-
> +- echo "echo 'TEST JOB RAN' >>\"${tmpfile}\" 2>&1" |
> +- if ! at -m now + 1 minutes; then
> +- echo "Expected error while adding job user at for user ${test_user2}"
> +- fi
> +- echo "Sleeping for 75 seconds...."
> +- sleep 75
> +-
> +- exit_code=1
> +- test -e "${tmpfile}" || exit_code=0
> +- if [ ${exit_code} -eq 1 ]; then
> +- tst_resm TFAIL "At allowed user to execute test job"
> +- else
> +- tst_resm TPASS "At did not allow user to execute job"
> +- fi
> +-
> +- rm -f "${tmpfile}" >/dev/null 2>&1
> +- exit ${exit_code}
> +-
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: main
> +-#-----------------------------------------------------------------------
> +-if ! type at > /dev/null; then
> +- tst_resm TCONF "at command not found on system"
> +-elif [ "$(id -ru)" = 0 ]; then
> +- if do_setup; then
> +-
> +- if ! echo "${test_user1}" >"${allow}"; then
> +- exit_code=1
> +- elif ! su "${test_user1}" -lc "${test_user1_home}/${0##*/}"; then
> +- exit_code=1
> +- elif ! su "${test_user2}" -lc "${test_user2_home}/${0##*/}"; then
> +- exit_code=1
> +- else
> +- exit_code=0
> +- fi
> +- do_cleanup
> +- else
> +- exit_code=1
> +- fi
> +- exit ${exit_code}
> +-else
> +- run_test
> +- exit 0
> +-fi
> +diff --git a/testcases/commands/at/at_deny01 b/testcases/commands/at/at_deny01
> +deleted file mode 100755
> +index 176da14f6..000000000
> +--- a/testcases/commands/at/at_deny01
> ++++ /dev/null
> +@@ -1,195 +0,0 @@
> +-#!/bin/sh -u
> +-#
> +-# Copyright (C) 2008 CAI Qian <caiqian at cclom.cn>
> +-# Copyright (c) International Business Machines Corp., 2003
> +-#
> +-# 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/>.
> +-#
> +-# FILE: /etc/at.deny
> +-#
> +-# PURPOSE: Test that /etc/at.deny , does not allow those in the file
> +-# to run cron jobs.
> +-#
> +-# HISTORY:
> +-# 04/03 Jerone Young (jyoung5 at us.ibm.com)
> +-#
> +-
> +-export TCID=at_deny01
> +-export TST_TOTAL=1
> +-export TST_COUNT=1
> +-TMP=${TMP:=/tmp}
> +-deny="/etc/at.deny"
> +-test_user1="test_user_1"
> +-test_user2="test_user_2"
> +-test_user1_home="/home/${test_user1}"
> +-test_user2_home="/home/${test_user2}"
> +-tmpfile="$TMP/at_deny_test"
> +-
> +-if [ "$(id -ru)" = 0 ]; then
> +- . cmdlib.sh
> +-fi
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup()
> +-{
> +- # Move any files that may get in the way.
> +- rm "${tmpfile}" >/dev/null 2>&1
> +- mv "${deny}" "${deny}.old" >/dev/null 2>&1
> +-
> +- # if /etc/at.allow is there, /etc/at.deny will be ignored. So, we
> +- # need to remove it first.
> +- if [ -f "/etc/at.allow" ]; then
> +- mv /etc/at.allow /etc/at.allow.old
> +- fi
> +-
> +- # Remove users for clean enviroment.
> +- rm -rf "${test_user1_home}" "${test_user2_home}"
> +- userdel -r "${test_user1}" >/dev/null 2>&1
> +- userdel -r "${test_user2}" >/dev/null 2>&1
> +-
> +- # Create the 1st user.
> +- if ! useradd -g users -d "${test_user1_home}" -m "${test_user1}"; then
> +- echo "Could not add test user ${test_user1} to system."
> +- exit 1
> +- fi
> +-
> +- # Create the 2nd user.
> +- if ! useradd -g users -d "${test_user2_home}" -m "${test_user2}"; then
> +- echo "Could not add test user ${test_user2} to system."
> +- exit 1
> +- fi
> +-
> +- # This is the workaround for a potential bug.
> +- # [Bug 468337] At Refuse to Work with Non-login Shell
> +- # https://bugzilla.redhat.com/show_bug.cgi?id=468337
> +- # As we are running in non-login shell now, we cannot run the script
> +- # by simply given it a relative path. Therefore, we copy it to test
> +- # users' home directories, and run it from there.
> +- cp "$0" "${test_user1_home}/." &&
> +- cp "$0" "${test_user2_home}/." &&
> +- echo "export LTPROOT='$LTPROOT'" > "${test_user1_home}/cached_ltproot" &&
> +- echo "export LTPROOT='$LTPROOT'" > "${test_user2_home}/cached_ltproot"
> +- if [ $? -ne 0 ]; then
> +- tst_resm TBROK "Couldn't copy over req'd files for test users"
> +- exit 1
> +- fi
> +-
> +- restart_daemon atd
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-do_cleanup()
> +-{
> +- # We forcefully remove those files anyway. Otherwise userdel may
> +- # give us bad warnings.
> +- rm -rf "${test_user1_home}" "${test_user2_home}"
> +- userdel -r "${test_user1}" >/dev/null 2>&1
> +- userdel -r "${test_user2}" >/dev/null 2>&1
> +- rm "${deny}"
> +- mv "${deny}.old" "${deny}" >/dev/null 2>&1
> +- rm "${tmpfile}" >/dev/null 2>&1
> +-
> +- if [ -f /etc/at.allow.old ]; then
> +- mv /etc/at.allow.old /etc/at.allow
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: run_test
> +-#-----------------------------------------------------------------------
> +-run_test()
> +-{
> +- if [ $(whoami) = "${test_user1}" ]; then
> +- . "${test_user1_home}/cached_ltproot" || exit 1
> +- export PATH="$PATH:$LTPROOT/testcases/bin"
> +-
> +- echo "TEST: ${deny} should deny only those who are not in the file to run jobs."
> +- echo "(1) TEST THAT PERSON NOT IN ${deny} IS ABLE TO RUN JOB."
> +- echo "echo 'TEST JOB RAN' >>\"${tmpfile}\" 2>&1" |
> +- if ! at -m now + 1 minutes; then
> +- echo "Error while adding job using at for user ${test_user1}."
> +- exit 1
> +- fi
> +- echo " Sleeping for 75 seconds...."
> +- sleep 75
> +-
> +- exit_code=1
> +- test -e "${tmpfile}" && exit_code=0
> +- if [ ${exit_code} -eq 1 ]; then
> +- tst_resm TFAIL "At denyed user to execute test job"
> +- else
> +- tst_resm TPASS "At did not deny user to execute job"
> +- fi
> +-
> +- rm -f "${tmpfile}" >/dev/null 2>&1
> +- exit ${exit_code}
> +-
> +- elif [ $(whoami) = "${test_user2}" ]; then
> +-
> +- . "${test_user2_home}/cached_ltproot" || exit 1
> +- export PATH="$PATH:$LTPROOT/testcases/bin"
> +-
> +- echo "(2) TEST THAT PERSON IN ${deny} IS NOT ABLE TO RUN JOB."
> +-
> +- echo "echo 'TEST JOB RAN' >>\"${tmpfile}\" 2>&1" |
> +- if ! at -m now + 1 minutes; then
> +- echo "Expected error while adding job user at for user ${test_user2}"
> +- fi
> +- echo "Sleeping for 75 seconds...."
> +- sleep 75
> +-
> +- exit_code=1
> +- test -e "${tmpfile}" || exit_code=0
> +- if [ ${exit_code} -eq 1 ]; then
> +- echo "At did not deny user to execute job, TEST FAILED."
> +- else
> +- echo "At denyed user to execute test job, TEST PASSED."
> +- fi
> +-
> +- rm -f "${tmpfile}" >/dev/null 2>&1
> +- exit ${exit_code}
> +-
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: main
> +-#-----------------------------------------------------------------------
> +-if ! type at > /dev/null; then
> +- tst_resm TCONF "at command not found on system"
> +-elif [ "$(id -ru)" = 0 ]; then
> +- if do_setup ; then
> +- if ! echo "${test_user2}" >"${deny}"; then
> +- exit_code=1
> +- elif ! su "${test_user1}" -lc "${test_user1_home}/${0##*/}"; then
> +- exit_code=1
> +- elif ! su "${test_user2}" -lc "${test_user2_home}/${0##*/}"; then
> +- exit_code=1
> +- else
> +- exit_code=0
> +- fi
> +- do_cleanup
> +- else
> +- exit_code=1
> +- fi
> +- exit ${exit_code}
> +-else
> +- run_test
> +- exit 0
> +-fi
> +diff --git a/testcases/commands/cron/00_Descriptions.txt b/testcases/commands/cron/00_Descriptions.txt
> +deleted file mode 100644
> +index 9566e0aaa..000000000
> +--- a/testcases/commands/cron/00_Descriptions.txt
> ++++ /dev/null
> +@@ -1,4 +0,0 @@
> +-cron01
> +- Test that crontab <filename> installs the cron-job-file and cron will
> +- schedule the job correctly.
> +-
> +diff --git a/testcases/commands/cron/Makefile b/testcases/commands/cron/Makefile
> +deleted file mode 100644
> +index 4969ec7bb..000000000
> +--- a/testcases/commands/cron/Makefile
> ++++ /dev/null
> +@@ -1,29 +0,0 @@
> +-#
> +-# commands/cron testcases Makefile.
> +-#
> +-# Copyright (C) 2009, Cisco Systems 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, write to the Free Software Foundation, Inc.,
> +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +-#
> +-# Ngie Cooper, July 2009
> +-#
> +-
> +-top_srcdir ?= ../../..
> +-
> +-include $(top_srcdir)/include/mk/env_pre.mk
> +-
> +-INSTALL_TARGETS := cron0[23] cron_illegal_cron_lines cron_allow01 cron_deny01 cron_dirs_checks01 *.sh
> +-
> +-include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +diff --git a/testcases/commands/cron/README.tests b/testcases/commands/cron/README.tests
> +deleted file mode 100644
> +index 0d5db7113..000000000
> +--- a/testcases/commands/cron/README.tests
> ++++ /dev/null
> +@@ -1,25 +0,0 @@
> +-This directory contains two scripts and one data file to test cron. Both
> +-shouldn't be run as root but they warn for themselves. If a username is
> +-given as parameter they run as this user.
> +-
> +-Both scripts save the current crontab and restore it after finishing.
> +-
> +-* Positive tests
> +-
> +- cron_pos_tests.sh [username]
> +-
> +- - add new job
> +- - check correct execution of job
> +- - delete job
> +-
> +-* Negative tests
> +-
> +- cron_neg_tests.sh [username]
> +-
> +- - try to edit the crontab of root
> +- - try to set illegal or nondefined execution times
> +- Here the script uses file illegal_cron_lines which contains two
> +- fields per line: the cron line to be tested (without script name),
> +- and the description of this test. The description is written to
> +- stdout during execution of the test.
> +- - try to do things you aren't allowed as non-root (cron runs as root)
> +diff --git a/testcases/commands/cron/cron02 b/testcases/commands/cron/cron02
> +deleted file mode 100755
> +index 16b425de3..000000000
> +--- a/testcases/commands/cron/cron02
> ++++ /dev/null
> +@@ -1,80 +0,0 @@
> +-#!/bin/sh
> +-#*********************************************************************
> +-# Copyright (c) International Business Machines Corp., 2000
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE : cron02
> +-#
> +-# PURPOSE: Test a postive cron job
> +-# - add new job
> +-# - check correct execution of job
> +-# - delete job
> +-#
> +-# HISTORY:
> +-# SUSE
> +-#
> +-
> +-TEST_USER="c01_user"
> +-TEST_USER_GROUP="users"
> +-TEST_USER_HOMEDIR="/home/$TEST_USER"
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup(){
> +- #erase any data from potential defunt cron test
> +- rm -rf /tmp/crontest > /dev/null 2>&1
> +-
> +- #erase user if he may exist , so we can have a clean env
> +- rm -rf /home/$TEST_USER
> +- userdel $TEST_USER
> +- sleep 1
> +-
> +- useradd -m -g $TEST_USER_GROUP $TEST_USER
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER to system $RHOST."
> +- exit 1
> +- }
> +- fi
> +-
> +- if [ -n "$CROND_DAEMON" ]; then
> +- restart_daemon $CROND_DAEMON
> +- else
> +- tst_brkm TBROK "Couldn't find crond or cron"
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-
> +-do_cleanup(){
> +- rm -rf /home/$TEST_USER
> +- userdel $TEST_USER
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: MAIN
> +-#-----------------------------------------------------------------------
> +-. cmdlib.sh
> +-
> +-do_setup
> +-cron_pos_tests.sh $TEST_USER
> +-EXIT_CODE=$?
> +-do_cleanup
> +-exit $EXIT_CODE
> +diff --git a/testcases/commands/cron/cron03 b/testcases/commands/cron/cron03
> +deleted file mode 100755
> +index 7ba7bf40c..000000000
> +--- a/testcases/commands/cron/cron03
> ++++ /dev/null
> +@@ -1,83 +0,0 @@
> +-#!/bin/sh
> +-#*********************************************************************
> +-# Copyright (c) International Business Machines Corp., 2000
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE : cron
> +-#
> +-# PURPOSE: Test a bad (negative) cron job
> +-# - try to edit the crontab of root
> +-# - try to set illegal or nondefined execution times
> +-# Here the script uses file illegal_cron_lines which contains two
> +-# fields per line: the cron line to be tested (without script name),
> +-# and the description of this test. The description is written to
> +-# stdout during execution of the test.
> +-# - try to do things you aren't allowed as non-root (cron runs as root)
> +-
> +-#
> +-# HISTORY:
> +-# SUSE
> +-#
> +-
> +-
> +-TEST_USER="c02_user"
> +-TEST_USER_GROUP="users"
> +-TEST_USER_HOMEDIR="/home/$TEST_USER"
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup(){
> +-
> +- #erase user if he may exist , so we can have a clean env
> +- rm -rf /home/$TEST_USER
> +- userdel $TEST_USER
> +- sleep 1
> +-
> +- useradd -m -g $TEST_USER_GROUP $TEST_USER
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER to system $RHOST."
> +- exit 1
> +- }
> +- fi
> +- # restart cron daemon
> +- # Red Hat uses crond, SuSE/Other uses cron.
> +- if [ -f /etc/init.d/crond ]; then
> +- /etc/init.d/crond restart
> +- else
> +- /etc/init.d/cron restart
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-
> +-do_cleanup(){
> +- rm -rf /home/$TEST_USER
> +- userdel $TEST_USER
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: MAIN
> +-#-----------------------------------------------------------------------
> +-do_setup
> +-cron_neg_tests.sh $TEST_USER
> +-EXIT_CODE=$?
> +-do_cleanup
> +-exit $EXIT_CODE
> +diff --git a/testcases/commands/cron/cron_allow01 b/testcases/commands/cron/cron_allow01
> +deleted file mode 100755
> +index 9a5e4d240..000000000
> +--- a/testcases/commands/cron/cron_allow01
> ++++ /dev/null
> +@@ -1,202 +0,0 @@
> +-#!/bin/bash
> +-#
> +-# Copyright (c) International Business Machines Corp., 2003
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE: /var/spool/cron/allow
> +-#
> +-# PURPOSE: Test that /var/spool/cron/allow , only allows those in the file to run cron jobs.
> +-#
> +-# HISTORY:
> +-# 04/03 Jerone Young (jyoung5 at us.ibm.com)
> +-#
> +-
> +-echo "This script contains bashism that needs to be fixed!"
> +-
> +-iam=`whoami`
> +-
> +-tvar=${MACHTYPE%-*}
> +-tvar=${tvar#*-}
> +-
> +-if [ "$tvar" = "redhat" -o "$tvar" = "redhat-linux" ]
> +-then
> +-CRON_ALLOW="/etc/cron.allow"
> +-else
> +-CRON_ALLOW="/var/spool/cron/allow"
> +-fi
> +-
> +-TEST_USER1="ca_user1"
> +-TEST_USER1_HOME="/home/$TEST_USER1"
> +-TEST_USER2="ca_user2"
> +-TEST_USER2_HOME="/home/$TEST_USER2"
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup() {
> +- #move any files that may get in the way
> +- rm /tmp/cron_allow_test > /dev/null 2>&1
> +- rm /tmp/cron_allow_test1 > /dev/null 2>&1
> +- mv $CRON_ALLOW $CRON_ALLOW.old > /dev/null 2>&1
> +-
> +- #remove users for clean enviroment
> +- su $TEST_USER1 -c "crontab -r"
> +- su $TEST_USER2 -c "crontab -r"
> +- rm -rf /home/$TEST_USER1
> +- rm -rf /home/$TEST_USER2
> +- userdel $TEST_USER1
> +- userdel $TEST_USER2
> +- sleep 1
> +-
> +-#create 1st user
> +- useradd -m -g users $TEST_USER1
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER1 to system."
> +- exit 1
> +- }
> +- fi
> +-
> +-#create 2nd user
> +- useradd -m -g users $TEST_USER2
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER2 to system."
> +- exit 1
> +- }
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-do_cleanup(){
> +- su $TEST_USER1 -c "crontab -r"
> +- su $TEST_USER2 -c "crontab -r"
> +- rm -rf /home/$TEST_USER1
> +- rm -rf /home/$TEST_USER2
> +- userdel $TEST_USER1
> +- userdel $TEST_USER2
> +- rm $CRON_ALLOW
> +- mv $CRON_ALLOW.old $CRON_ALLOW > /dev/null 2>&1
> +- rm /tmp/cron_allow_test >/dev/null 2>&1
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: run_test
> +-#-----------------------------------------------------------------------
> +-run_test() {
> +-
> +-if [ $iam = $TEST_USER1 ]
> +-then
> +- echo "TEST: $CRON_ALLOW should only allow those in the file to
> +-run cron jobs."
> +-
> +- echo "(1) TEST THAT PERSON IN $CRON_ALLOW IS ABLE TO RUN JOB."
> +-
> +- echo "backup crontab...."
> +- crontab -l | grep '^[^#]' > /tmp/crontab-cronallow-save-$iam
> +-
> +- crontab - << EOF
> +- `date '+%M' | awk '{ORS=""; print ($1+2)%60 " * * * * "}'` echo "TEST JOB RAN" >> /tmp/cron_allow_test 2>&1
> +-EOF
> +- if [ $? != 0 ]; then
> +- echo Error while adding crontab for user $TEST_USER1
> +- exit 1
> +- fi
> +-
> +- echo "sleeping for 130 seconds...."
> +- sleep 130
> +-
> +- EXIT_CODE=1
> +- test -e /tmp/cron_allow_test && EXIT_CODE=0
> +-
> +- if [ $EXIT_CODE = 1 ]; then
> +- echo "Cron did not allow user to execute job , TEST FAILED"
> +- else
> +- echo "Cron allowed user to execute test job, TEST PASSED"
> +- fi
> +-
> +- echo "restore old crontab..."
> +- crontab /tmp/crontab-cronallow-save-$iam
> +- rm -f /tmp/crontab-cronallow-save-$iam
> +-
> +-
> +- rm -f /tmp/cron_allow_test
> +-
> +- exit $EXIT_CODE
> +-fi
> +-
> +-if [ $iam = $TEST_USER2 ]
> +-then
> +- echo "(2) TEST THAT PERSON NOT IN $CRON_ALLOW IS NOT ABLE TO RUN JOB."
> +-
> +- echo "backup crontab...."
> +- crontab -l | grep '^[^#]' > /tmp/crontab-cronallow-save-$iam
> +-
> +- crontab - << EOF
> +- `date '+%M' | awk '{ORS=""; print ($1+2)%60 " * * * * "}'` echo "TEST JOB RAN" >> /tmp/cron_allow_test1 2>&1
> +-EOF
> +- if [ $? != 0 ]; then
> +- echo Error while adding crontab for user $TEST_USER2
> +- fi
> +-
> +- echo "sleeping for 130 seconds...."
> +- sleep 130
> +-
> +- EXIT_CODE=0
> +- test -e /tmp/cron_allow_test1 && EXIT_CODE=1
> +-
> +- if [ $EXIT_CODE = 0 ]; then
> +- echo "Cron did not allow user to execute job , TEST PASSED"
> +- else
> +- echo "Cron allowed user to execute test job, TEST FAILED"
> +- fi
> +-
> +- echo "restore old crontab..."
> +- crontab /tmp/crontab-cronallow-save-$iam
> +- rm -f /tmp/crontab-cronallow-save-$iam
> +-
> +- rm -f /tmp/cron_allow_test1
> +-
> +- exit $EXIT_CODE
> +-fi
> +-
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: main
> +-#-----------------------------------------------------------------------
> +-if [ $iam = "root" ]
> +-then
> +- do_setup
> +- echo $TEST_USER1 > $CRON_ALLOW
> +- EXIT_CODE=0
> +- su $TEST_USER1 -c "$0"
> +- if [ $? != 0 ]
> +- then
> +- EXIT_CODE=1
> +- fi
> +- su $TEST_USER2 -c "$0"
> +- if [ $? != 0 ]
> +- then EXIT_CODE=1
> +- fi
> +- do_cleanup
> +- exit $EXIT_CODE
> +-else
> +- run_test
> +-fi
> +diff --git a/testcases/commands/cron/cron_deny01 b/testcases/commands/cron/cron_deny01
> +deleted file mode 100755
> +index 9d3203925..000000000
> +--- a/testcases/commands/cron/cron_deny01
> ++++ /dev/null
> +@@ -1,192 +0,0 @@
> +-#!/bin/bash
> +-#
> +-# Copyright (c) International Business Machines Corp., 2003
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE: /var/spool/cron/allow
> +-#
> +-# PURPOSE: Test that /var/spool/cron/deny , does not allow those in the file to run cron jobs.
> +-#
> +-# HISTORY:
> +-# 04/03 Jerone Young (jyoung5 at us.ibm.com)
> +-#
> +-
> +-echo "This script contains bashism that needs to be fixed!"
> +-
> +-iam=`whoami`
> +-
> +-tvar=${MACHTYPE%-*}
> +-tvar=${tvar#*-}
> +-
> +-if [ "$tvar" = "redhat" -o "$tvar" = "redhat-linux" ]
> +-then
> +-CRON_DENY="/etc/cron.deny"
> +-CRON_ALLOW="/etc/cron.allow"
> +-else
> +-CRON_DENY="/var/spool/cron/deny"
> +-CRON_ALLOW="/var/spool/cron/allow"
> +-fi
> +-
> +-TEST_USER1="cd_user1"
> +-TEST_USER1_HOME="/home/$TEST_USER1"
> +-TEST_USER2="cd_user2"
> +-TEST_USER2_HOME="/home/$TEST_USER2"
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup() {
> +- #move any files that may get in the way
> +- rm /tmp/cron_deny_test > /dev/null 2>&1
> +- rm /tmp/cron_deny_test1 > /dev/null 2>&1
> +-
> +- mv $CRON_DENY $CRON_DENY.old > /dev/null 2>&1
> +- mv $CRON_ALLOW $CRON_ALLOW.old > /dev/null 2>&1
> +-
> +- #remove users for clean enviroment
> +- su $TEST_USER1 -c "crontab -r"
> +- su $TEST_USER2 -c "crontab -r"
> +- rm -rf /home/$TEST_USER1
> +- rm -rf /home/$TEST_USER2
> +- userdel $TEST_USER1
> +- userdel $TEST_USER2
> +- sleep 1
> +-
> +-#create 1st user
> +- useradd -m -g users $TEST_USER1
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER1 to system."
> +- exit 1
> +- }
> +- fi
> +-
> +-#create 2nd user
> +- useradd -m -g users $TEST_USER2
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER2 to system."
> +- exit 1
> +- }
> +- fi
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-do_cleanup(){
> +- su $TEST_USER1 -c "crontab -r"
> +- su $TEST_USER2 -c "crontab -r"
> +- rm -rf /home/$TEST_USER1
> +- rm -rf /home/$TEST_USER2
> +- userdel $TEST_USER1
> +- userdel $TEST_USER2
> +- rm $CRON_DENY
> +- mv $CRON_DENY.old $CRON_DENY > /dev/null 2>&1
> +- mv $CRON_ALLOW.old $CRON_ALLOW > /dev/null 2>&1
> +- rm /tmp/cron_allow_test >/dev/null 2>&1
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: run_test
> +-#-----------------------------------------------------------------------
> +-run_test() {
> +-
> +-if [ $iam = $TEST_USER1 ]
> +-then
> +- echo "TEST: $CRON_DENY should allow only allow those who are not in the file to
> +-run cron jobs."
> +-
> +- echo "(1) TEST THAT PERSON NOT IN $CRON_DENY IS ABLE TO RUN JOB."
> +-
> +- crontab - << EOF
> +- `date '+%M' | awk '{ORS=""; print ($1+2)%60" * * * * "}'` echo "TEST JOB RAN" >> /tmp/cron_deny_test 2>&1
> +-EOF
> +- if [ $? != 0 ]; then
> +- echo Error while adding crontab for user $TEST_USER1
> +- exit 1
> +- fi
> +-
> +- echo "sleeping for 130 seconds...."
> +- sleep 130
> +-
> +- EXIT_CODE=1
> +- test -e /tmp/cron_deny_test && EXIT_CODE=0
> +-
> +- if [ $EXIT_CODE = 1 ]; then
> +- echo "Cron did not allow user to execute job , TEST FAILED"
> +- else
> +- echo "Cron allowed user to execute test job, TEST PASSED"
> +- fi
> +-
> +- rm -f /tmp/cron_deny_test
> +-
> +- exit $EXIT_CODE
> +-fi
> +-
> +-if [ $iam = $TEST_USER2 ]
> +-then
> +- echo "(2) TEST THAT PERSON IN $CRON_DENY IS NOT ABLE TO RUN JOB."
> +-
> +- crontab - << EOF
> +- `date '+%M' | awk '{ORS=""; print ($1+2)%60 " * * * * "}'` echo "TEST JOB RAN" >> /tmp/cron_deny_test 2>&1
> +-EOF
> +- if [ $? != 0 ]; then
> +- echo Error while adding crontab for user $TEST_USER2
> +- fi
> +-
> +- echo "sleeping for 130 seconds...."
> +- sleep 130
> +-
> +- EXIT_CODE=0
> +- test -e /tmp/cron_deny_test1 && EXIT_CODE=1
> +-
> +- if [ $EXIT_CODE = 0 ]; then
> +- echo "Cron did not allow user to execute job , TEST PASSED"
> +- else
> +- echo "Cron allowed user to execute test job, TEST FAILED"
> +- fi
> +-
> +- rm -f /tmp/cron_deny_test1
> +-
> +- exit $EXIT_CODE
> +-fi
> +-
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: main
> +-#-----------------------------------------------------------------------
> +-if [ $iam = "root" ]
> +-then
> +- do_setup
> +- echo $TEST_USER2 > $CRON_DENY
> +- EXIT_CODE=0
> +- su $TEST_USER1 -c "$0"
> +- if [ $? != 0 ]
> +- then
> +- EXIT_CODE=1
> +- fi
> +- su $TEST_USER2 -c "$0"
> +- if [ $? != 0 ]
> +- then EXIT_CODE=1
> +- fi
> +- do_cleanup
> +- exit $EXIT_CODE
> +-else
> +- run_test
> +-fi
> +diff --git a/testcases/commands/cron/cron_dirs_check.c b/testcases/commands/cron/cron_dirs_check.c
> +deleted file mode 100644
> +index cc9e0ad25..000000000
> +--- a/testcases/commands/cron/cron_dirs_check.c
> ++++ /dev/null
> +@@ -1,44 +0,0 @@
> +-#include <sys/types.h>
> +-#include <sys/param.h>
> +-#include <sys/stat.h>
> +-#include <stdio.h>
> +-#include <unistd.h>
> +-
> +-/* Check directory Access */
> +-int check_directory_access(char *directory)
> +-{
> +-
> +- struct stat statbuf;
> +-
> +- printf("Checking %s\n", directory);
> +-
> +- if (stat(directory, &statbuf) == -1) {
> +- printf("FAIL: %s. Could not obtain directory status\n",
> +- directory);
> +- return 1;
> +- }
> +-
> +- if (statbuf.st_uid != 0) {
> +- printf("FAIL: %s. Invalid owner\n", directory);
> +- return 1;
> +- }
> +-
> +- if ((statbuf.st_mode & S_IWGRP) || (statbuf.st_mode & S_IWOTH)) {
> +- printf("FAIL: %s. Invalid write access\n", directory);
> +- return 1;
> +- }
> +-
> +- printf("PASS: %s\n", directory);
> +- return 0;
> +-}
> +-
> +-int main(int argc, char *argv[])
> +-{
> +-
> +- if (argc != 2) {
> +- printf("Please enter target directory");
> +- return 1;
> +- }
> +-
> +- return check_directory_access(argv[1]);
> +-}
> +diff --git a/testcases/commands/cron/cron_dirs_checks01 b/testcases/commands/cron/cron_dirs_checks01
> +deleted file mode 100755
> +index ea1215e8d..000000000
> +--- a/testcases/commands/cron/cron_dirs_checks01
> ++++ /dev/null
> +@@ -1,46 +0,0 @@
> +-#!/bin/sh
> +-#*********************************************************************
> +-# Copyright (c) International Business Machines Corp., 2000
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE : cron
> +-#
> +-# PUROPOSE: Ensure that the following directories only have root write access
> +-# /etc/cron.d
> +-# /etc/cron.daily
> +-# /etc/cron.hourly
> +-# /etc/cron.monthly
> +-# /etc/cron.weekly
> +-# /var/spool/cron
> +-# HISTORY:
> +-# Jerone Young (jyoung5 at us.ibm.com)
> +-#
> +-
> +-DIRS="/etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly /var/spool/cron"
> +-
> +-EXIT_CODE=0
> +-for i in $DIRS
> +-do
> +- cron_dirs_check $i
> +- if [ $? != 0 ]
> +- then
> +- echo "$i FAILED TEST!!!!!"
> +- EXIT_CODE=1
> +- fi
> +-
> +-done
> +-
> +-exit $EXIT_CODE
> +diff --git a/testcases/commands/cron/cron_illegal_cron_lines b/testcases/commands/cron/cron_illegal_cron_lines
> +deleted file mode 100644
> +index 3b32dc844..000000000
> +--- a/testcases/commands/cron/cron_illegal_cron_lines
> ++++ /dev/null
> +@@ -1,39 +0,0 @@
> +-# Collection of illegal cron lines
> +-# Comment lines must habe its '#' as first character.
> +-# The cron conf line and its description is seperated by '|'.
> +-# cron job command 'true' is appended automatically
> +-
> +-# Illegal Minutes
> +-61 * * * * | Minute 61
> +--1 * * * * | Minute -1 (might be interpreted as range)
> +-0.5 * * * * | Minute 0.5
> +--1-10 * * * *| Minute Range -1-10
> +-0-61 * * * * | Minute Range 0-61
> +-
> +-# Illegal hours
> +-0 25 * * * | Hour 25
> +-0 -2 * * * | Hour -2
> +-0 3.5 * * *| Hour 3.5
> +-0 -4-10 * * *| Hour Range -4-10
> +-0 0-25 * * * | Hour Range 0-25
> +-
> +-# Illegal day of month
> +-0 0 32 * * | Day 32
> +-0 0 -1 * * | Day -1
> +-0 0 3.5 * *| Day 3.5
> +-0 0 -3-3 * *| Day Range -3-3
> +-0 0 0-32 * *| Day Range 0-32
> +-
> +-# Illegal month
> +-0 0 1 13 * | Month 13
> +-0 0 1 -1 * | Month -1
> +-0 0 1 2.5 * | Month 2.5
> +-0 0 1 -2-3 * | Month Range -2-3
> +-0 0 1 0-13 * | Month Range 0-13
> +-
> +-# Illegal day of week
> +-0 0 * * 8 | Day of Week 8
> +-0 0 * * -2 | Day of Week -2
> +-0 0 * * 2.5 | Day of Week 2.5
> +-0 0 * * -7-7 | Day of Week Range -7-7
> +-0 0 * * 0-8 | Day of Week Range 0-8
> +diff --git a/testcases/commands/cron/cron_neg_tests.sh b/testcases/commands/cron/cron_neg_tests.sh
> +deleted file mode 100755
> +index 9c3d6f6c7..000000000
> +--- a/testcases/commands/cron/cron_neg_tests.sh
> ++++ /dev/null
> +@@ -1,141 +0,0 @@
> +-#!/bin/bash
> +-########################################################
> +-#
> +-# CHANGE ACTIVITY
> +-#
> +-# 10/01/04 Kris Wilson RHEL4 only allows super user
> +-# to use crontab.
> +-# to use crontab.
> +-# 12/03/04 Marty Ridgeway Pull RHEl4 tests out from script
> +-########################################################
> +-
> +-iam=`whoami`
> +-
> +-if [ $iam = "root" ]; then
> +- if [ $# -lt 1 ] ; then
> +- echo Either do not run this script as root or start it like
> +- echo " $0 <user>"
> +- exit 1
> +- fi
> +-
> +- su $1 -c "$0 $*"
> +- exit $?
> +-fi
> +-
> +-#
> +-# 1. root einen cronjob unterjubeln
> +-#
> +-
> +-finalrc=0
> +-
> +-
> +-crontab -u root - << EOF
> +-0 * * * * true
> +-EOF
> +-
> +-rc=$?
> +-
> +-if [ $rc = "0" ]; then
> +- echo root has now an interesting cron job
> +- echo "crontab has a severe security breach (FAIL)"
> +- echo
> +- finalrc=1
> +-else
> +- echo "Editing a crontab of another user failed successfully (PASS)"
> +- echo
> +-fi
> +-
> +-
> +-#
> +-# 2. write some illegal crontabs
> +-#
> +-
> +-# Save crontab
> +-
> +-#crontab -l > /dev/null 2> /dev/null
> +-#if [ $? = "0" ]; then
> +-# echo Saving current crontab...
> +-# echo
> +-# crontab -l > /tmp/save-crontab-`whoami`
> +-# savedcrontab=1
> +-# crontab -r
> +-#fi
> +-
> +-#for line in `cat cron_illegal_cron_lines | grep '^[^#]' | sed -e 's/[ \t][ \t]*/_/g'` ; do
> +-# line=`echo $line | sed -e 's/_/ /g'`
> +- # echo Line: "$line"
> +-# cronconf=`echo "$line" | cut -f 1 -d '|'`
> +-# desc=`echo "$line" | cut -f 2 -d '|'`
> +-
> +-# echo "Test: $desc"
> +-# echo "$cronconf true" | crontab -
> +- # echo "$cronconf"
> +-# if [ $? = "0" ]; then
> +-# echo 'Test FAILED (or crontab returned wrong exit code)'
> +-# echo 'crontab -l:'
> +-# crontab -l
> +-# finalrc=1
> +-# fi
> +-# echo
> +-#done
> +-
> +-
> +-# Test whether cron uses setuid correctly
> +-
> +-echo
> +-echo setuid test
> +-echo
> +-
> +-tmpscript=cron_neg01_test
> +-rm -rf $tmpscript.out >/dev/null 2>&1
> +-
> +-
> +-cat > /tmp/$tmpscript << EOF
> +-touch /root/halloichwarhier
> +-sleep 1
> +-cat /root/halloichwarhier ; echo "res:$?"
> +-rm /root/halloichwarhier
> +-EOF
> +-
> +-chmod 755 /tmp/$tmpscript
> +-
> +-#
> +-cronline=`date '+%M' | awk '{print ($1+2)%60 " * * * * "}'`
> +-(echo "$cronline /tmp/$tmpscript >> /tmp/$tmpscript.out 2>> /tmp/$tmpscript.out" ; \
> +- echo "$cronline /tmp/$tmpscript >> /$tmpscript.out 2>> /$tmpscript.out") \
> +- | crontab -
> +-
> +-echo "sleeping 130 secs..."
> +-sleep 130
> +-
> +-echo
> +-echo "Results:"
> +-if [ "1" = `cat /tmp/$tmpscript.out | grep "res:0" | wc -l` ]; then
> +- echo "setuid test part 1 successfully failed (PASS)"
> +-else
> +- echo "cron executed scripts have root privileges! (FAIL)"
> +- finalrc=1
> +-fi
> +-
> +-CODE=0
> +-test -e /tmp/$tmpscript.out && CODE=1
> +-if [ $CODE = "1" ]; then
> +- echo "setuid test part 2 successfully failed (PASS)"
> +-else
> +- echo "cron writes script output with root privileges! (FAIL)"
> +- finalrc=1
> +-fi
> +-echo
> +-
> +-rm /tmp/$tmpscript* >/dev/null 2>&1
> +-crontab -r
> +-
> +-# Restore crontab
> +-
> +-if [ "$savedcrontab" = "1" ]; then
> +- echo "Restoring crontab..."
> +- cat /tmp/save-crontab-`whoami` | grep '^[^#]' | crontab -
> +- # rm -r /tmp/save-crontab-`whoami`
> +-fi
> +-
> +-exit $finalrc
> +diff --git a/testcases/commands/cron/cron_pos_tests.sh b/testcases/commands/cron/cron_pos_tests.sh
> +deleted file mode 100755
> +index ece114c84..000000000
> +--- a/testcases/commands/cron/cron_pos_tests.sh
> ++++ /dev/null
> +@@ -1,118 +0,0 @@
> +-#!/bin/bash
> +-
> +-# Positive tests for cron, that means these tests have to pass
> +-
> +-iam=`whoami`
> +-
> +-tvar=${MACHTYPE%-*}
> +-tvar=${tvar#*-}
> +-
> +-if [ "$tvar" = "redhat" -o "$tvar" = "redhat-linux" ]
> +-then
> +- CRON_ALLOW="/etc/cron.allow"
> +-else
> +- CRON_ALLOW="/var/spool/cron/allow"
> +-fi
> +-
> +-
> +-if [ $iam = "root" ]; then
> +- if [ $# -lt 1 ] ; then
> +- echo Either do not run this script as root or start it like
> +- echo " $0 <user>"
> +- exit 1
> +- fi
> +-
> +- mv $CRON_ALLOW $CRON_ALLOW.old >/dev/null 2>&1
> +- su $1 -c "$0 $*"
> +- RC=$?
> +- mv $CRON_ALLOW.old $CRON_ALLOW >/dev/null 2>&1
> +- exit $RC
> +-fi
> +-
> +-function restorecrontab () {
> +- test -e /tmp/crontab-save-$iam && \
> +- crontab /tmp/crontab-save-$iam && \
> +- rm -f /tmp/crontab-save-$iam && \
> +- echo restored old crontab
> +-}
> +-
> +-echo Running as user $iam...
> +-
> +-# Save current users crontab
> +-
> +-test -e /tmp/crontab-save-$iam && rm -f /tmp/crontab-save-$iam
> +-
> +-if [ "0" -lt `crontab -l 2>/dev/null | wc -l` ]; then
> +-
> +- echo 'crontab of this user exists -> creating backup'
> +- crontab -l | grep '^[^#]' > /tmp/crontab-save-$iam
> +-fi
> +-
> +-
> +-# Do tests
> +-
> +-# 1. Add new job
> +-
> +-rm -rf /tmp/crontest >/dev/null 2>&1
> +-mkdir -p /tmp/crontest
> +-
> +-cat > /tmp/crontest/testjob_cron01 << EOF
> +-echo Testjob running
> +-date
> +-EOF
> +-
> +-chmod 755 /tmp/crontest/testjob_cron01
> +-
> +-crontab - << EOF
> +-`date '+%M' | awk '{ print ($1+2)%60 " * * * * "
> +-}'` /tmp/crontest/testjob_cron01 >> /tmp/crontest/output_cron01 2>&1
> +-EOF
> +-
> +-rc=$?
> +-
> +-if [ $rc = "1" ]; then
> +- echo Error while adding crontab for user $iam
> +- restorecrontab
> +- exit 1
> +-fi
> +-
> +-echo new job added successfully
> +-
> +-# 2. Wait for execution of job
> +-
> +-echo 'sleeping for 130 seconds...'
> +-sleep 130
> +-
> +-rc=1
> +-test -e /tmp/crontest/output_cron01 && rc=0
> +-
> +-if [ $rc = "1" ]; then
> +- echo Job has not been executed
> +- restorecrontab
> +- exit 1
> +-fi
> +-
> +-grep "Testjob running" /tmp/crontest/output_cron01
> +-rc=$?
> +-if [ $rc = "1" ]; then
> +- echo Job has not produced valid output
> +- restorecrontab
> +-fi
> +-
> +-echo 'job has been executed :-)'
> +-echo "testjob's output:"
> +-echo
> +-
> +-rm -rf /tmp/crontest
> +-
> +-# 3. Delete crontab
> +-
> +-crontab -r
> +-
> +-echo removed crontab
> +-
> +-# Restore old crontab file
> +-
> +-restorecrontab
> +-
> +-exit $rc
> +diff --git a/testcases/commands/cron/cron_tests.sh b/testcases/commands/cron/cron_tests.sh
> +deleted file mode 100644
> +index 47614f9e3..000000000
> +--- a/testcases/commands/cron/cron_tests.sh
> ++++ /dev/null
> +@@ -1,276 +0,0 @@
> +-#!/bin/sh
> +-
> +-# Copyright (c) International Business Machines Corp., 2001
> +-# Copyright (c) 2017 Petr Vorel <pvorel at suse.cz>
> +-#
> +-# 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 would 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 the Free Software Foundation,
> +-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# Author: Manoj Iyer <manjo at mail.utexas.edu>
> +-
> +-TST_CNT=3
> +-TST_TESTFUNC=do_test
> +-TST_NEEDS_TMPDIR=1
> +-TST_SETUP=setup
> +-TST_CLEANUP=cleanup
> +-. tst_test.sh
> +-
> +-. daemonlib.sh
> +-
> +-SYSLOG_STARTED=
> +-CROND_STARTED=
> +-LOGS=
> +-
> +-grep_logs()
> +-{
> +- local pattern="$1"
> +- local fail_msg="$2"
> +- local pass_msg="${3:-}"
> +- local n="${4:-10}"
> +-
> +- local lines=10
> +- local out=out.$$
> +- local err=err.$$
> +- local i ret
> +-
> +- for i in $(seq 1 $n); do
> +- if [ "$LOGS" ]; then
> +- tail -n $lines $LOGS | grep "$pattern" > $out 2> $err
> +- else
> +- journalctl -n $lines | grep "$pattern" > $out 2> $err
> +- fi
> +- ret=$?
> +- [ $ret -eq 0 ] && break
> +- sleep 1
> +- done
> +-
> +- if [ $ret -ne 0 ]; then
> +- tst_res TFAIL "$fail_msg: `cat $err`"
> +- else
> +- [ "$pass_msg" ] && tst_res TPASS "$pass_msg"
> +- fi
> +-}
> +-
> +-create_crontab()
> +-{
> +- local crontab=cronjob.cron
> +- local script=$1
> +- local out=out.$$
> +-
> +- tst_res TINFO "creating crontab: $script"
> +-
> +- cat > $crontab <<EOF
> +-* * * * * $script
> +-EOF
> +-
> +- tst_res TINFO "installing crontab file"
> +- crontab $crontab > $out 2>&1
> +- if [ $? -ne 0 ]; then
> +- tst_brk TBROK "crontab: error while installing crontab file: `cat $out`"
> +- return 1
> +- fi
> +- return 0
> +-}
> +-
> +-remove_crontab()
> +-{
> +- local out=out.$$
> +- tst_res TINFO "removing crontab file"
> +- crontab -r > $out 2>&1
> +- if [ $? -ne 0 ]; then
> +- tst_brk TBROK "crontab: error while removing crontab file `cat $out`"
> +- return 1
> +- fi
> +- return 0
> +-}
> +-
> +-create_hello_script()
> +-{
> +- local script=$1
> +-
> +- cat > $script <<EOF
> +-#!/bin/sh
> +-echo "Hello Hell"
> +-exit 0
> +-EOF
> +- chmod +x $script
> +-}
> +-
> +-install_cron_test()
> +-{
> +- local script=$PWD/cronprg.sh
> +- local cron_out=$PWD/tst1_cron.out
> +- local err=err.log
> +- local sleep_sec
> +- local ts_min1 ts_min2 fail
> +-
> +- tst_res TINFO "test install cron job"
> +-
> +- cat > $script <<EOF
> +-#! /bin/sh
> +-DATE=\`LC_ALL=C date\`
> +-echo "Hello Hell today is \$DATE" > $cron_out 2>&1
> +-exit 0
> +-EOF
> +- chmod +x $script
> +-
> +- create_crontab $script 2> $err
> +-
> +- if [ $? -ne 0 ]; then
> +- tst_brk TBROK "crontab: error while creating cron job: `cat $err`"
> +- else
> +- tst_res TINFO "cron job installed successfully"
> +- fi
> +-
> +- grep_logs 'crontab.*REPLACE' \
> +- "cron activity not recorded" \
> +- "cron activity logged"
> +-
> +- # Sleep 3s after next minute since the loop below sleeps for 62 seconds, we
> +- # should start this 5-iteration loop closely following the start of a
> +- # minute.
> +- sleep_sec=$((123-`date +%-S`))
> +- tst_res TINFO "sleep for ${sleep_sec}s"
> +- sleep $sleep_sec
> +-
> +- # $script executed by the cron job will record the date and time into file
> +- # $cron_out. Get the minute recorded by the program, sleep to allow the cron
> +- # job to update file after 1m, and check if the value is advanced by 1.
> +- for i in $(seq 1 5); do
> +- tst_res TINFO "loop: $i: start"
> +-
> +- if [ ! -f "$cron_out" ]; then
> +- tst_res TFAIL "loop $i: file $cron_out doesn't exist"
> +- fail=1
> +- break
> +- fi
> +-
> +- ts_min1=$(awk '{print $8}' $cron_out | awk -F: '{printf("%d", $2);}')
> +-
> +- # wait for the cron job to update output file
> +- sleep 62
> +-
> +- # Check the time recorded in output file, this should be 1 minute ahead of
> +- # what was recored earlier.
> +- ts_min2=$(awk '{print $8}' $cron_out | awk -F: '{printf("%d", $2);}')
> +-
> +- if [ "x${ts_min1}" = "x" ] || [ "x${ts_min2}" = "x" ]; then
> +- tst_res TFAIL "loop $i: failed to get time: ts_min1: $ts_min1, ts_min2: $ts_min2"
> +- fail=1
> +- break
> +- fi
> +-
> +- [ $ts_min1 -eq 59 ] && ts_min1=0 || ts_min1=$(( $ts_min1+1 ))
> +-
> +- if [ $ts_min2 -ne $ts_min1 ]; then
> +- tst_res TFAIL "loop $i: failed to update every minute: expected: $ts_min1, received: $ts_min2"
> +- fail=1
> +- break
> +- fi
> +- done
> +-
> +- if [ ! "$fail" ]; then
> +- grep_logs "CMD ($script)" \
> +- "failed to install cron job installed and execute it" \
> +- "cron job installed and executed" 1
> +- fi
> +-
> +- remove_crontab
> +-}
> +-
> +-remove_cron_job_test()
> +-{
> +- local script=$PWD/cronprg.sh
> +-
> +- tst_res TINFO "test remove cron job"
> +-
> +- create_hello_script $script
> +- create_crontab $script
> +-
> +- grep_logs 'crontab.*REPLACE' \
> +- "crontab activity not recorded"
> +-
> +- remove_crontab && grep_logs DELETE \
> +- "crontab activity not recorded" \
> +- "crontab removed the cron job" 1
> +-}
> +-
> +-list_cron_jobs_test()
> +-{
> +- local script=$PWD/cronprg.sh
> +- local out=cron.out
> +-
> +- tst_res TINFO "test list installed cron jobs"
> +-
> +- create_hello_script $script
> +- create_crontab $script
> +-
> +- tst_res TINFO "crontab: listing cron jobs"
> +- crontab -l | grep "$script" > $out 2>&1 || \
> +- tst_brk TBROK "crontab failed while listing installed cron jobs: `cat $out`"
> +-
> +- remove_crontab
> +-
> +- crontab -l > $out 2>&1
> +- if [ $? -ne 0 ]; then
> +- grep -q "no crontab for" $out
> +- if [ $? -ne 0 ]; then
> +- tst_res TFAIL "crontab failed removing cron job: `cat $out`"
> +- else
> +- tst_res TPASS "crontab did not list any cron jobs"
> +- fi
> +- else
> +- tst_res TFAIL "crontab failed removing cron job: `cat $out`"
> +- fi
> +-}
> +-
> +-setup()
> +-{
> +- if [ "$SYSLOG_DAEMON" ]; then
> +- status_daemon $SYSLOG_DAEMON
> +- if [ $? -ne 0 ]; then
> +- restart_daemon $SYSLOG_DAEMON
> +- SYSLOG_STARTED=1
> +- fi
> +- fi
> +-
> +- if [ "$CROND_DAEMON" ]; then
> +- status_daemon $CROND_DAEMON
> +- if [ $? -ne 0 ]; then
> +- restart_daemon $CROND_DAEMON
> +- CROND_STARTED=1
> +- fi
> +- fi
> +-
> +- for f in /var/log/syslog /var/log/messages /var/log/cron /var/log/cron.log; do
> +- [ -f "$f" ] && LOGS="$f $LOGS"
> +- done
> +-}
> +-
> +-cleanup()
> +-{
> +- [ "$SYSLOG_STARTED" = "1" ] && stop_daemon $SYSLOG_DAEMON
> +- [ "$CROND_STARTED" = "1" ] && stop_daemon $CROND_DAEMON
> +-}
> +-
> +-do_test()
> +-{
> +- case $1 in
> +- 1) install_cron_test;;
> +- 2) remove_cron_job_test;;
> +- 3) list_cron_jobs_test;;
> +- esac
> +-}
> +-
> +-tst_run
> +diff --git a/testcases/commands/su/Makefile b/testcases/commands/su/Makefile
> +deleted file mode 100644
> +index da2ff036f..000000000
> +--- a/testcases/commands/su/Makefile
> ++++ /dev/null
> +@@ -1,31 +0,0 @@
> +-#
> +-# commands/su testcases Makefile.
> +-#
> +-# Copyright (C) 2009, Cisco Systems 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, write to the Free Software Foundation, Inc.,
> +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +-#
> +-# Ngie Cooper, July 2009
> +-#
> +-
> +-top_srcdir ?= ../../..
> +-
> +-include $(top_srcdir)/include/mk/env_pre.mk
> +-
> +-INSTALL_TARGETS := su01 su01_s1 su_set_passwd
> +-
> +-MAKE_TARGETS :=
> +-
> +-include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +diff --git a/testcases/commands/su/su01 b/testcases/commands/su/su01
> +deleted file mode 100755
> +index 34386d937..000000000
> +--- a/testcases/commands/su/su01
> ++++ /dev/null
> +@@ -1,181 +0,0 @@
> +-#!/bin/bash
> +-#*********************************************************************
> +-# Copyright (c) International Business Machines Corp., 2003, 2004
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE : su
> +-#
> +-# PURPOSE: Tests the basic functionality of `su`.
> +-#
> +-# SETUP: The program `/usr/bin/expect' MUST be installed.
> +-#
> +-# HISTORY:
> +-# 03/03 Dustin Kirkland (dkirklan at us.ibm.com)
> +-# 03/03 Jerone Young (jeroney at us.ibm.com)
> +-# 10/01/04 Kris Wilson Port to Red Hat
> +-#
> +-#*********************************************************************
> +-
> +-echo "This script contains bashism that needs to be fixed!"
> +-
> +-if [ -z ${TCbin} ]
> +-then
> +- export TCbin=$PWD
> +-fi
> +-
> +-export TEST_USER1="su_usr1"
> +-
> +-tvar=${MACHTYPE%-*}
> +-tvar=${tvar#*-}
> +-
> +-# need to export tvar for su01_s1
> +-export tvar
> +-printf "Machine type is: $tvar\n\n"
> +-
> +-if [ "$tvar" = "redhat" -o "$tvar" = "redhat-linux" ]
> +-# Need to also set group for TEST_USER2
> +-then
> +-export TEST_USER1_GROUP="wheel"
> +-export TEST_USER2_GROUP="wheel"
> +-else
> +-export TEST_USER1_GROUP="trusted"
> +-export TEST_USER2_GROUP="trusted"
> +-fi
> +-export TEST_USER1_PASSWD="eal"
> +-export TEST_USER1_ENCRYPTED_PASSWD="42VmxaOByKwlA"
> +-export TEST_USER1_NEW_PASSWD="a_very_good_and_long_password"
> +-export TEST_USER1_HOMEDIR="/home/$TEST_USER1"
> +-
> +-export TEST_USER2="su_usr2"
> +-# Group needs to be trusted for Red Hat.
> +-#export TEST_USER2_GROUP="trusted"
> +-export TEST_USER2_PASSWD="eal"
> +-export TEST_USER2_ENCRYPTED_PASSWD="42VmxaOByKwlA"
> +-export TEST_USER2_HOMEDIR="/home/$TEST_USER2"
> +-
> +-#This is for enviroment test
> +-export TEST_LINE="YOU_HAVE_THE_VARIABLE"
> +-export TEST_ENV_FILE="/tmp/TEST_ENV_FILE_ROOT"
> +-export TEST_ENV_FILE_USER="/tmp/TEST_ENV_FILE_USER"
> +-export TEST_ENV_FILE2="/tmp/TEST_ENV_FILE_ROOT2"
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_setup
> +-#-----------------------------------------------------------------------
> +-
> +-do_setup(){
> +-
> +-#REMOVE ANY TEMPOARY FILES THAT MAY STILL BE AROUND
> +-rm -f $TEST_ENV_FILE_USER > /dev/null 2>&1
> +-rm -f $TEST_ENV_FILE2 > /dev/null 2>&1
> +-rm -f $TEST_ENV_FILE > /dev/null 2>&1
> +-
> +-
> +-#Create 1st test user
> +- #erase user if he may exist , so we can have a clean en
> +- rm -rf /home/$TEST_USER1
> +- getent passwd $TEST_USER1 > /dev/null 2>&1 && userdel $TEST_USER1
> +- sleep 1
> +-
> +- useradd -m -g users $TEST_USER1
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER1."
> +- exit 1
> +- }
> +- fi
> +-
> +- usermod -G users,$TEST_USER1_GROUP $TEST_USER1
> +-
> +- #create users home directory (SLES 8 does not do this, even when specified in adduser)
> +-# Only do this if not RH; RH creates the directory.
> +- if [ "$tvar" != "redhat" -a "$tvar" != "redhat-linux" ]
> +- then {
> +- USER_UID=`id -u $TEST_USER1`
> +- USER_GID=`id -g $TEST_USER1`
> +- mkdir -p $TEST_USER1_HOMEDIR
> +- chown -R $USER_UID.$USER_GID $TEST_USER1_HOMEDIR
> +- }
> +- fi
> +-
> +- usermod -p $TEST_USER1_ENCRYPTED_PASSWD $TEST_USER1 > /dev/null 2>&1
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not set password for test user $TEST_USER1"
> +- exit 1
> +- }
> +- fi
> +-
> +-#Create 2nd test user
> +- #erase user if he may exist , so we can have a clean en
> +- rm -rf /home/$TEST_USER2
> +- getent passwd $TEST_USER2 > /dev/null 2>&1 && userdel $TEST_USER2
> +- sleep 1
> +-
> +- useradd -m -g users $TEST_USER2
> +-
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not add test user $TEST_USER2."
> +- exit 1
> +- }
> +- fi
> +-
> +- usermod -G users,$TEST_USER2_GROUP $TEST_USER2
> +-
> +- #create users home diretory (SLES 8 does not do this, even when specified in adduser)
> +-# Only do this if not RH; RH creates the directory.
> +- if [ "$tvar" != "redhat" -a "$tvar" != "redhat-linux" ]
> +- then {
> +- USER_UID=`id -u $TEST_USER2`
> +- USER_GID=`id -g $TEST_USER2`
> +- mkdir -p $TEST_USER2_HOMEDIR
> +- chown -R $USER_UID.$USER_GID $TEST_USER2_HOMEDIR
> +- }
> +- fi
> +-
> +- usermod -p $TEST_USER2_ENCRYPTED_PASSWD $TEST_USER2 > /dev/null 2>&1
> +- if [ $? != 0 ]
> +- then {
> +- echo "Could not set password for test user $TEST_USER2"
> +- exit 1
> +- }
> +- fi
> +-}
> +-
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: do_cleanup
> +-#-----------------------------------------------------------------------
> +-
> +-do_cleanup() {
> +- rm -rf /home/$TEST_USER1
> +- rm -rf /home/$TEST_USER2
> +- userdel $TEST_USER1
> +- userdel $TEST_USER2
> +- #REMOVE ANY TEMPOARY FILES THAT MAY STILL BE AROUND
> +- rm -f $TEST_ENV_FILE_USER > /dev/null 2>&1
> +- rm -f $TEST_ENV_FILE2 > /dev/null 2>&1
> +- rm -f $TEST_ENV_FILE > /dev/null 2>&1
> +-}
> +-
> +-#-----------------------------------------------------------------------
> +-# FUNCTION: MAIN
> +-#-----------------------------------------------------------------------
> +-do_setup
> +-/bin/su $TEST_USER1 -c ${TCbin}/su01_s1
> +-EXIT_CODE=$?
> +-do_cleanup
> +-exit $EXIT_CODE
> +diff --git a/testcases/commands/su/su01_s1 b/testcases/commands/su/su01_s1
> +deleted file mode 100755
> +index 313207b64..000000000
> +--- a/testcases/commands/su/su01_s1
> ++++ /dev/null
> +@@ -1,486 +0,0 @@
> +-#! /usr/bin/expect -f
> +-#*********************************************************************
> +-# Copyright (c) International Business Machines Corp., 2003, 2004, 2007
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-# FILE : su
> +-#
> +-# PURPOSE: Tests the basic functionality of `su`.
> +-#
> +-# SETUP: The program `/usr/bin/expect' MUST be installed.
> +-# The user invoking this test script must NOT be "root".
> +-# The PASSWD variable should be set prior to execution
> +-#
> +-# HISTORY:
> +-# 03/03 Dustin Kirkland (dkirklan at us.ibm.com)
> +-# 03/03 Jerone Young (jeroney at us.ibm.com)
> +-# 10/01/04 Kris Wilson Skip test 7 if RedHat; no -e option.
> +-# 05/23/07 Kris Wilson Make test 7 work for SLES.
> +-########################################################################
> +-
> +-# The root user cannot succesfully execute su test because the root user
> +-# is able to become anyone without entering passwords
> +-set whoami [ exec whoami ]
> +-if { $whoami=="root" } {
> +- send_user "ERROR: You must execute the 'su' tests as a non-root user\n"
> +- exit 1
> +-}
> +-
> +-#Grab input from enviroment
> +-if [info exists env(PASSWD)] {
> +- set PASSWD $env(PASSWD)
> +-} else {
> +- send_user "YOU NEED TO SET ENVIROMENT VARIABLE PASSWD. \n"
> +- exit 1
> +-}
> +-
> +-if [info exists env(TEST_USER2)] {
> +- set USER1 $env(TEST_USER2)
> +-} else {
> +- send_user "YOU MUST SET ENVIRONMENT VARIABLE TEST_USER2"
> +- exit 1
> +-}
> +-
> +-# Need the release type from su01
> +-if [info exists env(tvar)] {
> +- set distro $env(tvar)
> +-} else {
> +- send_user "YOU MUST SET ENVIORMENT VARIABLE tvar"
> +- exit 1
> +-}
> +-
> +-if [info exists env(TEST_USER2_PASSWD)] {
> +- set USER1_PASSWORD $env(TEST_USER2_PASSWD)
> +-} else {
> +- send_user "YOU MUST SET ENVIROMENT VARIABLE TEST_USER2_PASSWD"
> +- exit 1
> +-}
> +-
> +-if [info exists env(TEST_LINE)] {
> +- set TEST_LINE_ENV $env(TEST_LINE)
> +-} else {
> +- send_user "YOU MUST SET ENVIROMENT VARIABLE TEST_LINE"
> +- exit 1
> +-}
> +-
> +-
> +-if [info exists env(TEST_ENV_FILE)] {
> +- set TEST_ENV_FILE $env(TEST_ENV_FILE)
> +-} else {
> +- send_user "YOU MUST SET ENVIROMENT VARIABLE TEST_ENV_FILE_USER"
> +- exit 1
> +-}
> +-
> +-if [info exists env(TEST_ENV_FILE2)] {
> +- set TEST_ENV_FILE2 $env(TEST_ENV_FILE2)
> +-} else {
> +- send_user "YOU MUST SET ENVIROMENT VARIABLE TEST_ENV_FILE2"
> +- exit 1
> +-}
> +-
> +-
> +-if [info exists env(TEST_ENV_FILE_USER)] {
> +- set TEST_ENV_FILE_USER1 $env(TEST_ENV_FILE_USER)
> +-} else {
> +- send_user "YOU MUST SET ENVIROMENT VARIABLE TEST_ENV_FILE_USER"
> +- exit 1
> +-}
> +-
> +-if [info exists env(TEST_USER1_NEW_PASSWD)] {
> +- set USER1_NEW_PASSWORD $env(TEST_USER1_NEW_PASSWD)
> +-} else {
> +- send_user "YOU MUST SET ENVIROMENT VARIABLE TEST_USER1_NEW_PASSWD"
> +- exit 1
> +-}
> +-
> +-
> +-set script_exit_code 0
> +-set i_can_root 0
> +-
> +-send_user "Starting 'su' Testing\n"
> +-
> +-# 1) su with no parameters and correct password.
> +-# - The su command should return a result code of 0
> +-# - The user ID should be root
> +-# - The user environment should be that of the invoking process
> +-# - The command should create a new shell with a new process ID
> +-
> +-send_user "\nTEST: su with no parameters and correct password\n"
> +-
> +-set i_am_root 0
> +-# run "whoami" to test user ID inside su shell
> +-spawn /bin/su -c whoami
> +-set i_am_root 0
> +-expect {
> +- "Password:" {
> +- send "$PASSWD\r"
> +- expect {
> +- "root" { set i_am_root 1
> +- set i_can_root 1
> +- }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-
> +-#Check that su user has same enviroment as current user
> +-set i_have_env 0
> +-set test_env_var " "
> +-if { $i_am_root==1 } {
> +- spawn su -c "/bin/su root -c \"echo \\\$TEST_LINE > $TEST_ENV_FILE\""
> +- expect {
> +- "Password:" {
> +- send "$PASSWD\r"
> +- }
> +- }
> +- expect eof
> +- wait
> +-
> +- set test_env_var [exec cat $TEST_ENV_FILE]
> +-
> +- if { $test_env_var==$TEST_LINE_ENV } {
> +- set i_have_env 1
> +- } else {
> +- send_user "/bin/su with correct password (FAILED), the enviroment was not kept after su.\n"
> +- }
> +-}
> +-
> +-
> +-#this variable is for any test, it can't run correctly if this test fails
> +-set test_one_passed 0
> +-
> +-if { ($i_am_root==1) && ($exit_code==0) && ($pid>0) && ($i_have_env==1) } {
> +- send_user "/bin/su with correct password & enviroment check ( PASSED )\n"
> +- set test_one_passed 1
> +-} else {
> +- send_user "/bin/su with correct password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-
> +-# 2) su with no parameters and incorrect password.
> +-# - The su command should return a result code of non-0
> +-# - The user should be returned to the invoking shell
> +-# - An appropriate failure message should be displayed
> +-
> +-send_user "\nTEST: su with no parameters and incorrect password \n"
> +-
> +-set displayed_error 0
> +-# run "whoami" to test user ID inside su shell
> +-spawn /bin/su -c whoami
> +-set displayed_error 0
> +-expect {
> +- "Password:" {
> +- send "wrong_$PASSWD\r"
> +- expect {
> +- "su: incorrect password" { set displayed_error 1 }
> +- "su: Authentication failure" { set displayed_error 1 }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-
> +-#Added for arm architecture
> +-
> +-send_user "\ndisplayed_error=$displayed_error"
> +-send_user "\nexit_code=$exit_code"
> +-send_user "\npid=$pid\n"
> +-
> +-if { ($displayed_error==1) && ($exit_code!=0) && ($pid>0) } {
> +- send_user "/bin/su with incorrect password ( PASSED )\n"
> +-} else {
> +- send_user "/bin/su with incorrect password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-# 3) su to root using name parameter and correct password.
> +-# - The su command should return a result code of 0
> +-# - The user ID should be root
> +-# - The user environment should be that of the invoking process
> +-# - The command should create a new shell with a new process ID
> +-
> +-send_user "\nTEST: su to root using name parameter and correct password. \n"
> +-
> +-set i_am_root 0
> +-# run "whoami" to test user ID inside su shell
> +-spawn /bin/su -l root -c whoami
> +-expect {
> +- "Password:" {
> +- send "$PASSWD\r"
> +- expect {
> +- "root" { set i_am_root 1 }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-
> +-
> +-#Check that su user does not have the same enviroment as current user
> +-set i_have_env 0
> +-set test_env " "
> +-if { $i_am_root==1 } {
> +- spawn /bin/sh -c "/bin/su -l root -c \"echo \"\\\$TEST_LINE > $TEST_ENV_FILE2\"\""
> +- expect {
> +- "Password:" {
> +- send "$PASSWD\r"
> +- }
> +- }
> +-
> +- set test_env [exec cat $TEST_ENV_FILE2]
> +-
> +- if { $test_env==$TEST_LINE_ENV } {
> +- set i_have_env 1
> +- send_user "/bin/su -l root with correct password (FAILED), because it did not change enviroment\n"
> +- }
> +-}
> +-
> +-
> +-if { ($i_am_root==1) && ($exit_code==0) && ($pid>0) && ($i_have_env==0) } {
> +- send_user "/bin/su -l root with correct password & enviroment check ( PASSED )\n"
> +-} else {
> +- send_user "/bin/su -l root with correct password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-
> +-# 4) su to root with name parameter and incorrect password.
> +-# - The su command should return a result code of non-0
> +-# - The user should be returned to the invoking shell
> +-# - An appropriate failure message should be displayed
> +-
> +-send_user "\nTEST: su to root with name parameter and incorrect password. \n"
> +-
> +-set displayed_error 0
> +-# run "whoami" to test user ID inside su shell
> +-spawn /bin/su -l root -c whoami
> +-expect {
> +- "Password:" {
> +- send "wrong_$PASSWD\r"
> +- expect {
> +- "su: incorrect password" { set displayed_error 1 }
> +- "su: Authentication failure" { set displayed_error 1 }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-if { ($displayed_error==1) && ($exit_code!=0) && ($pid>0) } {
> +- send_user "/bin/su -l root with incorrect password ( PASSED )\n"
> +-} else {
> +- send_user "/bin/su -l root with incorrect password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-
> +-# 5) su to user1 with name parameter and correct password.
> +-# - The su command should return a result code of 0
> +-# - The user ID should be user1
> +-# - The user environment should be that of the invoking process, in this case,that of user1
> +-# - The command should create a new shell with a new process ID
> +-# - Run "whoami" to test user ID inside su shell
> +-
> +-send_user "TEST: su to user1 with name parameter and correct password.\n"
> +-
> +-set i_am_correct 0
> +-spawn /bin/su -l $USER1 -c whoami
> +-expect {
> +- "Password:" {
> +- send "$USER1_PASSWORD\r"
> +- expect {
> +- "$USER1\r" { set i_am_correct 1 }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-
> +-set i_have_env 0
> +-set test_env_var 0
> +-#Check to see that su user does not have the same enviroment
> +-if { $i_am_correct==1 } {
> +- spawn /bin/sh -c "/bin/su -l $USER1 -c \"echo \"\\\$TEST_LINE > $TEST_ENV_FILE_USER1\"\""
> +- expect {
> +- "Password:" {
> +- send "$USER1_PASSWORD\r"
> +- }
> +- }
> +-
> +-}
> +-
> +-set test_env_var [exec cat $TEST_ENV_FILE_USER1]
> +-
> +-set i_have_env 0
> +-if { $test_env_var==$TEST_LINE_ENV } {
> +- set i_have_env 1
> +- send_user "/bin/su -l $USER1 with correct password (FAILED), because it did not change enviroment\n"
> +- set i_have_env 0
> +- if { $test_env_var==$TEST_LINE_ENV } {
> +- set i_have_env 1
> +- send_user "su -l $USER1 with correct password (FAILED), because it did not change enviroment\n"
> +- }
> +-}
> +-
> +-if { ($i_am_correct==1) && ($exit_code==0) && ($pid>0) && ($i_have_env==0) } {
> +- send_user "/bin/su -l $USER1 with correct password & enviroment check ( PASSED )\n"
> +-} else {
> +- send_user "/bin/su -l $USER1 with correct password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-
> +-
> +-# 6)su to user1 with name parameter and incorrect password.
> +-# - The su command should return a result code of non-0
> +-# - The user should be returned to the invoking shell
> +-# - An appropriate failure message should be displayed.
> +-
> +-send_user "TEST: su to user1 with name parameter and incorrect password.\n"
> +-spawn /bin/su -l $USER1 -c whoami
> +-set displayed_error 0
> +-expect {
> +- "Password:" {
> +- send "wrong_$USER1_PASSWORD\r"
> +- expect {
> +- "su: incorrect password" { set displayed_error 1 }
> +- "su: Authentication failure" { set displayed_error 1 }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-if { ($displayed_error==1) && ($exit_code!=0) && ($pid>0) } {
> +- send_user "/bin/su -l $USER1 with incorrect password ( PASSED )\n"
> +-} else {
> +- send_user "/bin/su -l $USER1 with incorrect password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-
> +-# 7) su to user1 with the user1 password expired
> +-# - user1 should not be allowed to log in
> +-# - The su command should return a result code of non-0
> +-# - The user should be returned to the invoking shell
> +-# - An appropriate failure message should be displayed.
> +-
> +-# Become root and expire $USER1 password
> +-
> +-# Skip this if Red Hat; -e option not supported.
> +-if { $distro != "redhat" && $distro != "redhat-linux" } {
> +-
> +-if { $test_one_passed==1} {
> +-send_user "TEST: su to user1 with the user1 password expired.\n"
> +-
> +-spawn /bin/su -l root -c "passwd -e $USER1"
> +-expect {
> +- "Password:" {
> +- send "$PASSWD\r"
> +- expect {
> +- "Password expiry information changed."
> +- }
> +- }
> +-}
> +-
> +-set i_am_correct 0
> +-spawn /bin/su -l $USER1 -c whoami
> +-expect {
> +- "Password:" {
> +- send "$USER1_PASSWORD\r"
> +- expect {
> +- -re "current.*password|Old Password" {
> +- send "wrong_$USER1_PASSWORD\r"
> +- expect {
> +- -re "current.*password|Old Password" {
> +- send "wrong_$USER1_PASSWORD\r"
> +- expect {
> +- "su: incorrect password" { set i_am_correct 1 }
> +- "su: Authentication failure" { set i_am_correct 1 }
> +- "su: Authentication token manipulation error" { set i_am_correct 1 }
> +- }
> +- }
> +- "su: incorrect password" { set i_am_correct 1 }
> +- "su: Authentication failure" { set i_am_correct 1 }
> +- "su: Authentication token manipulation error" { set i_am_correct 1 }
> +- }
> +- }
> +- }
> +- }
> +-}
> +-
> +-# capture result code
> +-set codes [wait]
> +-set pid [lindex $codes 0]
> +-set exit_code [lindex $codes 3]
> +-if { ($i_am_correct==1) && ($exit_code!=0) && ($pid>0) } {
> +- send_user "/bin/su -l $USER1 with expired correct password ( PASSED )\n"
> +-} else {
> +- send_user "/bin/su -l $USER1 with expired correct password ( FAILED )\n"
> +- set script_exit_code 1
> +-}
> +-
> +-
> +-#Become root and set $USER1 password back to previous value
> +-spawn /bin/su -l root -c "passwd $USER1"
> +-expect {
> +- "Password: " {
> +- send "$PASSWD\r"
> +- expect {
> +- "Enter new password: " {
> +- send "$USER1_NEW_PASSWORD\r"
> +- expect {
> +- "Re-type new password: " {
> +- send "$USER1_NEW_PASSWORD\r"
> +- expect {
> +- "Password changed" {}
> +- }
> +- }
> +- }
> +- }
> +- }
> +- }
> +-}
> +-
> +-} else {
> +-
> +- send_user "TEST: su to user1 with the user1 password expired. (FAILED),see more next line.\n"
> +- send_user "This test cannot be run because the first test to su as root failed\n"
> +-
> +-}
> +-# If RH let the tester know why only 6 tests were run.
> +-} else {
> +- send_user "TEST 7 skipped if running on Red Hat; -e not supported \n"
> +-}
> +-exit $script_exit_code
> +diff --git a/testcases/commands/su/su_set_passwd b/testcases/commands/su/su_set_passwd
> +deleted file mode 100755
> +index e8f0d2f50..000000000
> +--- a/testcases/commands/su/su_set_passwd
> ++++ /dev/null
> +@@ -1,14 +0,0 @@
> +-#!/bin/sh
> +-#
> +-# Set Password for a specific new user
> +-# This script should be run as 'root'
> +-#
> +-# Example:
> +-# ./su_set_passwd USER ENCRYPTED_PASSWD
> +-#
> +-
> +-USER=$1
> +-ENCRYPTED_PASSWD=$2
> +-
> +-usermod -p $ENCRYPTED_PASSWD $USER
> +-exit $?
> +diff --git a/testcases/kernel/fs/acls/.gitignore b/testcases/kernel/fs/acls/.gitignore
> +deleted file mode 100644
> +index 5fa2fc654..000000000
> +--- a/testcases/kernel/fs/acls/.gitignore
> ++++ /dev/null
> +@@ -1,2 +0,0 @@
> +-/acl_file_test
> +-/acl_link_test
> +diff --git a/testcases/kernel/fs/acls/Makefile b/testcases/kernel/fs/acls/Makefile
> +deleted file mode 100644
> +index 4f1564377..000000000
> +--- a/testcases/kernel/fs/acls/Makefile
> ++++ /dev/null
> +@@ -1,40 +0,0 @@
> +-#
> +-# kernel/fs/acls testcases Makefile.
> +-#
> +-# Copyright (C) 2009, Cisco Systems 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, write to the Free Software Foundation, Inc.,
> +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +-#
> +-# Ngie Cooper, July 2009
> +-#
> +-
> +-top_srcdir ?= ../../../..
> +-
> +-include $(top_srcdir)/include/mk/env_pre.mk
> +-
> +-check_header = $(shell \
> +- if echo "\#include <$(1)>" | $(CC) -E - > /dev/null 2>&1 ; \
> +- then echo yes ; \
> +- else echo no ; fi)
> +-
> +-INSTALL_TARGETS := acl_test01
> +-
> +-RESULT := $(call check_header,sys/xattr.h)
> +-
> +-ifneq ($(RESULT),yes)
> +-MAKE_TARGETS :=
> +-endif
> +-
> +-include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +diff --git a/testcases/kernel/fs/acls/acl_file_test.c b/testcases/kernel/fs/acls/acl_file_test.c
> +deleted file mode 100644
> +index eb30d28ef..000000000
> +--- a/testcases/kernel/fs/acls/acl_file_test.c
> ++++ /dev/null
> +@@ -1,73 +0,0 @@
> +-#include <unistd.h>
> +-#include <stdio.h>
> +-#include <sys/types.h>
> +-#include <errno.h>
> +-#include <sys/syscall.h>
> +-#include <fcntl.h>
> +-#include <sys/xattr.h>
> +-#include <string.h>
> +-
> +-int main(int argc, char *argv[])
> +-{
> +- ssize_t s;
> +- char *tok;
> +- char value[1024];
> +- char list[1024];
> +- int rc = 0;
> +- char *file;
> +- int fd;
> +-
> +- if (argc < 2) {
> +- printf("Please enter a file name as argument.\n");
> +- return -1;
> +- }
> +-
> +- file = argv[1];
> +-
> +- fd = open(file, O_RDONLY);
> +- if (fd < 0) {
> +- printf("Unable to open file %s !", file);
> +- return -1;
> +- }
> +-
> +- if (-1 == (s = flistxattr(fd, list, 1024))) {
> +- perror("flistxattr");
> +- return 1;
> +- }
> +- if (s == 0) {
> +- printf("No xattrs defined for %s, further testcase useless\n",
> +- file);
> +- return 1;
> +- }
> +- tok = strtok(list, "\0");
> +- s = fgetxattr(fd, tok, (void *)value, 1024);
> +- if (s == -1) {
> +- perror("fgetxattr");
> +- return 1;
> +- }
> +- s = fsetxattr(fd, tok, (void *)value, s, 0);
> +-
> +- if (s == -1) {
> +- printf
> +- ("User unable to change extended attributes on file %s !\n",
> +- argv[1]);
> +- printf("errno = %i\n", errno);
> +- rc = 1;
> +- }
> +- //s = syscall(237, fd,tok); //fremovexattr
> +-#ifdef __NR_fremovexattr
> +- s = syscall(__NR_fremovexattr, fd, tok); //fremovexattr
> +-#else
> +- s = -1;
> +- errno = ENOSYS;
> +-#endif
> +- if (s == -1) {
> +- printf("User unable to remove extended attributes file %s !\n",
> +- argv[1]);
> +- printf("errno = %i\n", errno);
> +- rc = 1;
> +- }
> +-
> +- close(fd);
> +- return rc;
> +-}
> +diff --git a/testcases/kernel/fs/acls/acl_link_test.c b/testcases/kernel/fs/acls/acl_link_test.c
> +deleted file mode 100644
> +index 312f686a1..000000000
> +--- a/testcases/kernel/fs/acls/acl_link_test.c
> ++++ /dev/null
> +@@ -1,56 +0,0 @@
> +-#include <unistd.h>
> +-#include <stdio.h>
> +-#include <sys/types.h>
> +-#include <errno.h>
> +-#include <sys/syscall.h>
> +-#include <string.h>
> +-#include <sys/xattr.h>
> +-
> +-int main(int argc, char *argv[])
> +-{
> +- ssize_t s;
> +- char *tok;
> +- char value[1024];
> +- char list[1024];
> +- int rc = 0;
> +-
> +- if (argc < 2) {
> +- printf("Please enter a file name as argument.\n");
> +- return -1;
> +- }
> +-
> +- if (-1 == (s = listxattr(argv[1], list, 1024))) {
> +- perror("listxattr");
> +- return 1;
> +- }
> +- if (s == 0) {
> +- printf("No xattrs defined for %s, further testcase useless\n",
> +- argv[1]);
> +- return 1;
> +- }
> +- tok = strtok(list, "\0");
> +- s = getxattr(argv[1], tok, (void *)value, 1024);
> +- if (-1 == s) {
> +- perror("getxattr");
> +- return -1;
> +- }
> +-
> +- s = lsetxattr(argv[1], tok, (void *)value, s, 0);
> +-
> +- if (s == -1) {
> +- printf("User unable to change extended attributes %s !\n",
> +- argv[1]);
> +- printf("errno = %i\n", errno);
> +- rc = 1;
> +- }
> +-
> +- s = lremovexattr(argv[1], tok);
> +- if (s == -1) {
> +- printf("User unable to remove extended attributes %s !\n",
> +- argv[1]);
> +- printf("errno = %i\n", errno);
> +- rc = 1;
> +- }
> +-
> +- return rc;
> +-}
> +diff --git a/testcases/kernel/fs/acls/acl_test01 b/testcases/kernel/fs/acls/acl_test01
> +deleted file mode 100755
> +index 4fbd72f75..000000000
> +--- a/testcases/kernel/fs/acls/acl_test01
> ++++ /dev/null
> +@@ -1,186 +0,0 @@
> +-#!/bin/sh
> +-#*********************************************************************
> +-# Copyright (c) International Business Machines Corp., 2003
> +-#
> +-# 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, write to the Free Software
> +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
> +-#
> +-#
> +-#
> +-# FILE : acls
> +-#
> +-# PURPOSE: Tests extended acls
> +-#
> +-# HISTORY:
> +-# 03/03 Jerone Young (jyoung5 at us.ibm.com)
> +-# 09/08 Jacky Malcles changing the setup to have this TC started by runltp
> +-#*********************************************************************
> +-#
> +-################################################################
> +-#
> +-# Make sure that uid=root is running this script.
> +-# Make sure that loop device is built into the kernel
> +-# Make sure that ACL(Access Control List) and Extended Attribute are
> +-# built into the kernel
> +-#
> +-#
> +-################################################################
> +-
> +-export TCID=acltest01
> +-export TST_TOTAL=5
> +-export TST_COUNT=1
> +-
> +-. test.sh
> +-
> +-TMP=${TMP:=/tmp}
> +-
> +-TEST_USER1="acltest1"
> +-TEST_USER1_GROUP="users"
> +-TEST_USER1_PASSWD="ltp_test_pass1"
> +-TEST_USER1_HOMEDIR="$TMP/tacl/mount-ext3/$TEST_USER1"
> +-
> +-FILE_ACL="$TMP/tacl/mount-ext3/test_file"
> +-FILE_ACL_LINK="$TMP/tacl/mount-ext3/test_file_link"
> +-TCbin=`pwd`
> +-
> +-COMMAND=$(command -v "getenforce" "setenforce" |wc -l)
> +-if [ $COMMAND -eq 2 ]; then
> +- SELINUX=$(getenforce)
> +-else
> +- SELINUX=""
> +-fi
> +-
> +-do_setup()
> +-{
> +- tst_require_root
> +- tst_test_cmds setfacl
> +-
> +- if ! ( test -d $TMP/tacl || mkdir -m 777 $TMP/tacl) ; then
> +- tst_brkm TBROK "Failed to create $TMP/tacl directory."
> +- fi
> +-
> +- dd if=/dev/zero of=$TMP/tacl/blkext3 bs=1k count=10240 && chmod 777 $TMP/tacl/blkext3
> +- if [ $? -ne 0 ] ; then
> +- tst_brkm TBROK "Failed to create $TMP/tacl/blkext3"
> +- fi
> +-
> +- if ! LOOP_DEV=$(losetup -f) || [ "x$LOOP_DEV" = x ]; then
> +- tst_brkm TCONF "[ losetup.1 ] Failed to find an available loopback device -- is the required support compiled in your kernel?"
> +- fi
> +-
> +- if ! losetup $LOOP_DEV $TMP/tacl/blkext3 > /dev/null 2>&1; then
> +- echo ""
> +- tst_brkm TCONF "[ losetup.2 ] Failed to setup the device."
> +- fi
> +-
> +- mount | grep ext2
> +- if [ $? -ne 0 ]; then
> +- mkfs -t ext3 $LOOP_DEV #> /dev/null 2>&1
> +- mkdir -m 777 $TMP/tacl/mount-ext3
> +- mount -t ext3 -o defaults,acl,user_xattr $LOOP_DEV $TMP/tacl/mount-ext3
> +- if [ $? -ne 0 ]; then
> +- tst_resm TCONF "[ mount ] Make sure that ACL (Access Control List)"
> +- tst_resm TCONF "\t and Extended Attribute are built into the kernel\n"
> +- tst_brkm TCONF "\t Can not mount ext3 file system with acl and user_xattr options\n"
> +- fi
> +- else
> +- mkfs -t ext2 $LOOP_DEV
> +- mkdir -m 777 $TMP/tacl/mount-ext3
> +- mount -t ext2 -o defaults,acl,user_xattr $LOOP_DEV $TMP/tacl/mount-ext3
> +- if [ $? -ne 0 ]; then
> +- tst_resm TCONF "FAILED: [ mount ] Make sure that ACL (Access Control List)"
> +- tst_resm TCONF "\t and Extended Attribute are built into the kernel\n"
> +- tst_brkm TCONF "\t Can not mount ext2 file system with acl and user_xattr options\n"
> +- fi
> +- fi
> +-
> +- # We couldn't consider whether the SElinux is Disable or Permissive.
> +- # We only set it to Permissive when it it Enforcing.
> +- if [ "$SELINUX" = "Enforcing" ]; then
> +- echo "set the SElinux to Permissive."
> +- setenforce 0
> +- fi
> +-
> +- userdel $TEST_USER1 > /dev/null 2>&1
> +- useradd -d $TEST_USER1_HOMEDIR -m -g $TEST_USER1_GROUP $TEST_USER1 -s /bin/sh
> +- if [ $? -ne 0 ]; then
> +- tst_brkm TBROK "Could not add test user $TEST_USER1."
> +- fi
> +-}
> +-
> +-do_cleanup()
> +-{
> +- userdel $TEST_USER1 > /dev/null 2>&1
> +- rm -f $FILE_ACL > /dev/null 2>&1
> +- rm -f $FILE_ACL_LINK > /dev/null 2>&1
> +- mount | grep -q "$TMP/tacl/mount-ext3" && umount -d $TMP/tacl/mount-ext3
> +- rm -rf $TMP/tacl
> +-
> +- # We set it back to Enforcing.
> +- if [ "$SELINUX" = "Enforcing" ]; then
> +- echo "set the SElinux back to Enforcing."
> +- setenforce 1
> +- fi
> +-}
> +-
> +-do_setup
> +-TST_CLEANUP=do_cleanup
> +-
> +-tst_resm TINFO "Testing ACL for root"
> +-
> +-touch $FILE_ACL
> +-touch $FILE_ACL_LINK
> +-
> +-#setup files for extended attributes
> +-setfacl -mu:root:r $FILE_ACL_LINK
> +-setfacl -mu:root:r $FILE_ACL
> +-
> +-acl_file_test $FILE_ACL
> +-if [ $? -ne 0 ]; then
> +- tst_resm TFAIL "Extended acls for files."
> +-else
> +- tst_resm TPASS "Extended acls for files."
> +-fi
> +-
> +-acl_link_test $FILE_ACL_LINK
> +-if [ $? -ne 0 ]; then
> +- tst_resm TFAIL "Extended acls for links."
> +-else
> +- tst_resm TPASS "Extended acls for links."
> +-fi
> +-
> +-chown $TEST_USER1 $FILE_ACL
> +-chown $TEST_USER1 $FILE_ACL_LINK
> +-
> +-tst_resm TINFO "Testing ACL for $TEST_USER1"
> +-
> +-#setup files for extended attributes
> +-setfacl -m u:$TEST_USER1:r $FILE_ACL_LINK
> +-setfacl -m u:$TEST_USER1:r $FILE_ACL
> +-
> +-tst_su $TEST_USER1 "acl_file_test $FILE_ACL"
> +-if [ $? -ne 0 ]; then
> +- tst_resm TFAIL "Extended acls for files."
> +-else
> +- tst_resm TPASS "Extended acls for files."
> +-fi
> +-
> +-tst_su $TEST_USER1 "acl_link_test $FILE_ACL_LINK"
> +-if [ $? -ne 0 ]; then
> +- tst_resm TFAIL "Extended acls for links."
> +-else
> +- tst_resm TPASS "Extended acls for links."
> +-fi
> +-
> +-tst_exit
> +--
> +2.11.0
> +
> diff --git a/meta/recipes-extended/ltp/ltp_20180926.bb b/meta/recipes-extended/ltp/ltp_20180926.bb
> index 99e7023b25..f65bc36d4c 100644
> --- a/meta/recipes-extended/ltp/ltp_20180926.bb
> +++ b/meta/recipes-extended/ltp/ltp_20180926.bb
> @@ -53,6 +53,7 @@ SRC_URI = "git://github.com/linux-test-project/ltp.git \
> file://0001-statx-fix-compile-errors.patch \
> file://0001-setrlimit05-Use-another-method-to-get-bad-address.patch \
> file://0001-getcpu01-Rename-getcpu-to-avoid-conflict-with-glibc-.patch \
> + file://0001-Remove-admin_tools-test.patch \
> "
>
> S = "${WORKDIR}/git"
More information about the Openembedded-core
mailing list