From: Peng H. <pe...@cn...> - 2012-02-27 05:29:25
|
The series patches will test the following options in sssd.conf: override_homedir override_gid allowed_shells vetoed_shells shell_fallback Peng Haitao (4): A library used to test SSSD Add test option override_homedir Add test option override_gid Add test option allowed_shells, vetoed_shells and shell_fallback runtest/commands | 3 + testcases/commands/sssd/Makefile | 25 ++++ testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++ testcases/commands/sssd/sssd01 | 143 +++++++++++++++++++++++ testcases/commands/sssd/sssd02 | 75 ++++++++++++ testcases/commands/sssd/sssd03 | 217 +++++++++++++++++++++++++++++++++++ 6 files changed, 672 insertions(+), 0 deletions(-) create mode 100644 testcases/commands/sssd/Makefile create mode 100755 testcases/commands/sssd/sssd-lib.sh create mode 100755 testcases/commands/sssd/sssd01 create mode 100755 testcases/commands/sssd/sssd02 create mode 100755 testcases/commands/sssd/sssd03 -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 05:29:26
|
This library includes a set of functions used to test SSSD(System Security Services Daemon). Signed-off-by: Peng Haitao <pe...@cn...> --- testcases/commands/sssd/Makefile | 25 ++++ testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+), 0 deletions(-) create mode 100644 testcases/commands/sssd/Makefile create mode 100755 testcases/commands/sssd/sssd-lib.sh diff --git a/testcases/commands/sssd/Makefile b/testcases/commands/sssd/Makefile new file mode 100644 index 0000000..6539f14 --- /dev/null +++ b/testcases/commands/sssd/Makefile @@ -0,0 +1,25 @@ +# +# Copyright (c) International Business Machines Corp., 2012 +# +# 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 St, Fifth Floor, Boston, MA 02110-1301 USA +# + +top_srcdir ?= ../../.. + +include $(top_srcdir)/include/mk/testcases.mk + +INSTALL_TARGETS := sssd0* sssd-lib.sh + +include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/commands/sssd/sssd-lib.sh b/testcases/commands/sssd/sssd-lib.sh new file mode 100755 index 0000000..84a7581 --- /dev/null +++ b/testcases/commands/sssd/sssd-lib.sh @@ -0,0 +1,209 @@ +#! /bin/sh +# +# Copyright (c) Linux Test Project, 2012 +# +# 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 +# +################################################################## + +export TST_TOTAL=${TST_TOTAL:=1} +export TST_COUNT=1 +export TCID=${TCID:="$(basename "$0")"} + +if [ -z "$LTPTMP" -a -z "$TMPBASE" ]; then + LTPTMP=/tmp +else + LTPTMP=$TMPBASE +fi + +if ! which sss_useradd >/dev/null 2>&1; then + tst_brkm TCONF NULL \ + "sss_useradd does not exist. Skipping all testcases." + exit 0 +fi + +# Signals to trap. +readonly TRAP_SIGS="2 3 6 11 15" + +CONFIG_FILE="/etc/sssd/sssd.conf" +NSS_CONFIG_FILE="/etc/nsswitch.conf" +SSSD_INIT_SCRIPT="/etc/init.d/sssd" + +# Command to restart sssd daemon. +SSSD_RESTART_CMD= + +# number of seconds to wait for another sssd test to complete +WAIT_COUNT=30 + +# running under systemd? +if command -v systemctl >/dev/null 2>&1; then + HAVE_SYSTEMCTL=1 +else + HAVE_SYSTEMCTL=0 +fi + +cleanup() +{ + disable_traps + exit_code=$1 + + # Restore the previous sssd daemon state. + if [ -f "$CONFIG_FILE.ltpback" ]; then + if mv "$CONFIG_FILE.ltpback" "$CONFIG_FILE"; then + mv $NSS_CONFIG_FILE.ltpback $NSS_CONFIG_FILE + # Make sure that restart_sssd_daemon doesn't loop + # back to cleanup again. + restart_sssd_daemon "return 1" + # Maintain any nonzero exit codes + if [ $exit_code -ne $? ]; then + exit_code=1 + fi + else + exit_code=1 + fi + fi + + exit $exit_code +} + +setup() +{ + is_root || exit 1 + + trap ' disable_traps + tst_resm TBROK "Testing is terminating due to a signal" + cleanup 1' $TRAP_SIGS || exit 1 + + # Check to see if sssd exists + if [ ! -e /usr/sbin/sssd ]; then + tst_resm TCONF "couldn't find sssd" + cleanup 0 + fi + + # Check to see if nscd exists + if [ ! -e /usr/sbin/nscd ]; then + tst_resm TCONF "couldn't find nscd" + cleanup 0 + fi + + SVCNAME=$(basename $SSSD_INIT_SCRIPT) + if [ $HAVE_SYSTEMCTL == 1 ]; then + for svc in "$SVCNAME" "sssd"; do + if systemctl is-enabled $svc.service >/dev/null 2>&1 + then + SSSD_RESTART_CMD="systemctl restart $svc.service" + break + fi + done + else + for SSSD_INIT_SCRIPT in "$SSSD_INIT_SCRIPT" "/etc/init.d/sssd" + do + if [ -x "$SSSD_INIT_SCRIPT" ]; then + SSSD_RESTART_CMD="$SSSD_INIT_SCRIPT restart" + break + fi + done + fi + + if [ -z "$SSSD_RESTART_CMD" ]; then + tst_resm TBROK "Don't know how to restart $SVCNAME" + cleanup 1 + fi + + # Back up configuration file + if [ -f "$CONFIG_FILE" ]; then + # Pause if another LTP sssd test is running + while [ -f "$CONFIG_FILE.ltpback" -a $WAIT_COUNT -gt 0 ]; do + : $(( WAIT_COUNT -= 1 )) + sleep 1 + done + # Oops -- $CONFIG_FILE.ltpback is still there! + if [ $WAIT_COUNT -eq 0 ]; then + tst_resm TBROK "another sssd test is stuck" + cleanup 1 + elif ! cp "$CONFIG_FILE" "$CONFIG_FILE.ltpback"; then + tst_resm TBROK "failed to backup $CONFIG_FILE" + cleanup 1 + fi + + cp $NSS_CONFIG_FILE $NSS_CONFIG_FILE.ltpback + grep "passwd: files sss" $NSS_CONFIG_FILE > /dev/null + if [ $? -ne 0 ]; then + sed -i "s/passwd: files/passwd: files sss/" \ + $NSS_CONFIG_FILE + fi + else + tst_brkm TBROK NULL "$CONFIG_FILE not found!" + fi +} + +disable_traps() +{ + trap - $TRAP_SIGS +} + +restart_sssd_daemon() +{ + # Default to running `cleanup 1' when dealing with error cases. + if [ $# -eq 0 ]; then + cleanup_command="cleanup 1" + else + cleanup_command=$1 + fi + + tst_resm TINFO "restarting sssd daemon via $SSSD_RESTART_CMD" + $SSSD_RESTART_CMD > /dev/null 2>&1 + if [ $? -eq 0 ]; then + # wait sssd restart success. + sleep 1 + else + $cleanup_command + fi +} + +# sssd.conf should contain: +# [sssd] +# config_file_version = 2 +# services = nss, pam +# domains = LOCAL +# +#[nss] +# +#[pam] +# +#[domain/LOCAL] +#id_provider = local +make_config_file() +{ + echo -e "[sssd]\nconfig_file_version = 2" > $CONFIG_FILE + echo -e "services = nss, pam\ndomains = LOCAL" >> $CONFIG_FILE + echo -e "\n[nss]\n\n[pam]\n" >> $CONFIG_FILE + echo -e "[domain/LOCAL]\nid_provider = local" >> $CONFIG_FILE +} + +. cmdlib.sh + +# determine sssd.conf can support override_gid? +setup +make_config_file +sed -i -e "/\[domain\/LOCAL\]/ a\override_gid = error" $CONFIG_FILE +# make sure config file is OK +sleep 1 +$SSSD_RESTART_CMD > /dev/null 2>&1 + +if [ $? -ne 1 ]; then + tst_resm TCONF "override_gid does not exist. Skipping all testcases" + cleanup 0 +fi -- 1.7.9 |
From: Wanlong G. <gao...@cn...> - 2012-02-27 07:32:22
|
On 02/27/2012 01:28 PM, Peng Haitao wrote: > This library includes a set of functions used to test SSSD(System Security Services Daemon). > > Signed-off-by: Peng Haitao <pe...@cn...> > --- > testcases/commands/sssd/Makefile | 25 ++++ > testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++++ > 2 files changed, 234 insertions(+), 0 deletions(-) > create mode 100644 testcases/commands/sssd/Makefile > create mode 100755 testcases/commands/sssd/sssd-lib.sh > > diff --git a/testcases/commands/sssd/Makefile b/testcases/commands/sssd/Makefile > new file mode 100644 > index 0000000..6539f14 > --- /dev/null > +++ b/testcases/commands/sssd/Makefile > @@ -0,0 +1,25 @@ > +# > +# Copyright (c) International Business Machines Corp., 2012 Why not Copyright(c) Fujitsu in this series? Thanks -Wanlong Gao > +# > +# 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 St, Fifth Floor, Boston, MA 02110-1301 USA > +# > + > +top_srcdir ?= ../../.. > + > +include $(top_srcdir)/include/mk/testcases.mk > + > +INSTALL_TARGETS := sssd0* sssd-lib.sh > + > +include $(top_srcdir)/include/mk/generic_leaf_target.mk > diff --git a/testcases/commands/sssd/sssd-lib.sh b/testcases/commands/sssd/sssd-lib.sh > new file mode 100755 > index 0000000..84a7581 > --- /dev/null > +++ b/testcases/commands/sssd/sssd-lib.sh > @@ -0,0 +1,209 @@ > +#! /bin/sh > +# > +# Copyright (c) Linux Test Project, 2012 > +# > +# 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 > +# > +################################################################## > + > +export TST_TOTAL=${TST_TOTAL:=1} > +export TST_COUNT=1 > +export TCID=${TCID:="$(basename "$0")"} > + > +if [ -z "$LTPTMP" -a -z "$TMPBASE" ]; then > + LTPTMP=/tmp > +else > + LTPTMP=$TMPBASE > +fi > + > +if ! which sss_useradd >/dev/null 2>&1; then > + tst_brkm TCONF NULL \ > + "sss_useradd does not exist. Skipping all testcases." > + exit 0 > +fi > + > +# Signals to trap. > +readonly TRAP_SIGS="2 3 6 11 15" > + > +CONFIG_FILE="/etc/sssd/sssd.conf" > +NSS_CONFIG_FILE="/etc/nsswitch.conf" > +SSSD_INIT_SCRIPT="/etc/init.d/sssd" > + > +# Command to restart sssd daemon. > +SSSD_RESTART_CMD= > + > +# number of seconds to wait for another sssd test to complete > +WAIT_COUNT=30 > + > +# running under systemd? > +if command -v systemctl >/dev/null 2>&1; then > + HAVE_SYSTEMCTL=1 > +else > + HAVE_SYSTEMCTL=0 > +fi > + > +cleanup() > +{ > + disable_traps > + exit_code=$1 > + > + # Restore the previous sssd daemon state. > + if [ -f "$CONFIG_FILE.ltpback" ]; then > + if mv "$CONFIG_FILE.ltpback" "$CONFIG_FILE"; then > + mv $NSS_CONFIG_FILE.ltpback $NSS_CONFIG_FILE > + # Make sure that restart_sssd_daemon doesn't loop > + # back to cleanup again. > + restart_sssd_daemon "return 1" > + # Maintain any nonzero exit codes > + if [ $exit_code -ne $? ]; then > + exit_code=1 > + fi > + else > + exit_code=1 > + fi > + fi > + > + exit $exit_code > +} > + > +setup() > +{ > + is_root || exit 1 > + > + trap ' disable_traps > + tst_resm TBROK "Testing is terminating due to a signal" > + cleanup 1' $TRAP_SIGS || exit 1 > + > + # Check to see if sssd exists > + if [ ! -e /usr/sbin/sssd ]; then > + tst_resm TCONF "couldn't find sssd" > + cleanup 0 > + fi > + > + # Check to see if nscd exists > + if [ ! -e /usr/sbin/nscd ]; then > + tst_resm TCONF "couldn't find nscd" > + cleanup 0 > + fi > + > + SVCNAME=$(basename $SSSD_INIT_SCRIPT) > + if [ $HAVE_SYSTEMCTL == 1 ]; then > + for svc in "$SVCNAME" "sssd"; do > + if systemctl is-enabled $svc.service >/dev/null 2>&1 > + then > + SSSD_RESTART_CMD="systemctl restart $svc.service" > + break > + fi > + done > + else > + for SSSD_INIT_SCRIPT in "$SSSD_INIT_SCRIPT" "/etc/init.d/sssd" > + do > + if [ -x "$SSSD_INIT_SCRIPT" ]; then > + SSSD_RESTART_CMD="$SSSD_INIT_SCRIPT restart" > + break > + fi > + done > + fi > + > + if [ -z "$SSSD_RESTART_CMD" ]; then > + tst_resm TBROK "Don't know how to restart $SVCNAME" > + cleanup 1 > + fi > + > + # Back up configuration file > + if [ -f "$CONFIG_FILE" ]; then > + # Pause if another LTP sssd test is running > + while [ -f "$CONFIG_FILE.ltpback" -a $WAIT_COUNT -gt 0 ]; do > + : $(( WAIT_COUNT -= 1 )) > + sleep 1 > + done > + # Oops -- $CONFIG_FILE.ltpback is still there! > + if [ $WAIT_COUNT -eq 0 ]; then > + tst_resm TBROK "another sssd test is stuck" > + cleanup 1 > + elif ! cp "$CONFIG_FILE" "$CONFIG_FILE.ltpback"; then > + tst_resm TBROK "failed to backup $CONFIG_FILE" > + cleanup 1 > + fi > + > + cp $NSS_CONFIG_FILE $NSS_CONFIG_FILE.ltpback > + grep "passwd: files sss" $NSS_CONFIG_FILE > /dev/null > + if [ $? -ne 0 ]; then > + sed -i "s/passwd: files/passwd: files sss/" \ > + $NSS_CONFIG_FILE > + fi > + else > + tst_brkm TBROK NULL "$CONFIG_FILE not found!" > + fi > +} > + > +disable_traps() > +{ > + trap - $TRAP_SIGS > +} > + > +restart_sssd_daemon() > +{ > + # Default to running `cleanup 1' when dealing with error cases. > + if [ $# -eq 0 ]; then > + cleanup_command="cleanup 1" > + else > + cleanup_command=$1 > + fi > + > + tst_resm TINFO "restarting sssd daemon via $SSSD_RESTART_CMD" > + $SSSD_RESTART_CMD > /dev/null 2>&1 > + if [ $? -eq 0 ]; then > + # wait sssd restart success. > + sleep 1 > + else > + $cleanup_command > + fi > +} > + > +# sssd.conf should contain: > +# [sssd] > +# config_file_version = 2 > +# services = nss, pam > +# domains = LOCAL > +# > +#[nss] > +# > +#[pam] > +# > +#[domain/LOCAL] > +#id_provider = local > +make_config_file() > +{ > + echo -e "[sssd]\nconfig_file_version = 2" > $CONFIG_FILE > + echo -e "services = nss, pam\ndomains = LOCAL" >> $CONFIG_FILE > + echo -e "\n[nss]\n\n[pam]\n" >> $CONFIG_FILE > + echo -e "[domain/LOCAL]\nid_provider = local" >> $CONFIG_FILE > +} > + > +. cmdlib.sh > + > +# determine sssd.conf can support override_gid? > +setup > +make_config_file > +sed -i -e "/\[domain\/LOCAL\]/ a\override_gid = error" $CONFIG_FILE > +# make sure config file is OK > +sleep 1 > +$SSSD_RESTART_CMD > /dev/null 2>&1 > + > +if [ $? -ne 1 ]; then > + tst_resm TCONF "override_gid does not exist. Skipping all testcases" > + cleanup 0 > +fi |
From: Peng H. <pe...@cn...> - 2012-02-27 05:29:26
|
Add test cases of override_gid. Signed-off-by: Peng Haitao <pe...@cn...> --- runtest/commands | 1 + testcases/commands/sssd/sssd02 | 75 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 0 deletions(-) create mode 100755 testcases/commands/sssd/sssd02 diff --git a/runtest/commands b/runtest/commands index 0a1254b..95ccfda 100644 --- a/runtest/commands +++ b/runtest/commands @@ -18,3 +18,4 @@ mkdir_tests01 mkdir_tests.sh mv_tests01 mv_tests.sh size01 size01 sssd01 sssd01 +sssd02 sssd02 diff --git a/testcases/commands/sssd/sssd02 b/testcases/commands/sssd/sssd02 new file mode 100755 index 0000000..3616969 --- /dev/null +++ b/testcases/commands/sssd/sssd02 @@ -0,0 +1,75 @@ +#! /bin/sh + +# Copyright (c) International Business Machines Corp., 2012 +# +# 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 +# +# Description: Test override_gid in the configuration file. +# Author: Peng Haitao <pe...@cn...> +# History: 2012/02/08 - Created. +# + +. ./sssd-lib.sh || exit 1 + +sssd_case1() +{ + tst_resm TINFO "test override_gid with gid+1 in [domain/LOCAL]" + + # Create the configuration file specific to this test case. + make_config_file + gid=`id -g $username` + gid_add_one=$(( gid+1 )) + sed -i -e "/\[domain\/LOCAL\]/ a\override_gid = $gid_add_one" \ + $CONFIG_FILE + sleep 1 + + getent passwd $username@LOCAL | grep "$gid_add_one" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user GID should be not $gid_add_one." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$gid_add_one" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user GID is $gid_add_one." + else + tst_resm TFAIL "sssd: user GID should be $gid_add_one." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +export TST_TOTAL=1 +export TST_COUNT=1 +export TCID=sssd02 + +TFAILCNT=0 +username="sssd_test_user" + +make_config_file +# make sure config file is OK +sleep 1 +restart_sssd_daemon +sss_useradd $username + +sssd_case1 + +sss_userdel $username +cleanup ${TFAILCNT:=0} -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 05:29:28
|
Add test cases of allowed_shells, vetoed_shells and shell_fallback. Signed-off-by: Peng Haitao <pe...@cn...> --- runtest/commands | 1 + testcases/commands/sssd/sssd03 | 217 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+), 0 deletions(-) create mode 100755 testcases/commands/sssd/sssd03 diff --git a/runtest/commands b/runtest/commands index 95ccfda..193c7e4 100644 --- a/runtest/commands +++ b/runtest/commands @@ -19,3 +19,4 @@ mv_tests01 mv_tests.sh size01 size01 sssd01 sssd01 sssd02 sssd02 +sssd03 sssd03 diff --git a/testcases/commands/sssd/sssd03 b/testcases/commands/sssd/sssd03 new file mode 100755 index 0000000..dbff664 --- /dev/null +++ b/testcases/commands/sssd/sssd03 @@ -0,0 +1,217 @@ +#! /bin/sh + +# Copyright (c) International Business Machines Corp., 2012 +# +# 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 +# +# Description: Test allowed_shells, vetoed_shells and shell_fallback +# in the configuration file. +# Author: Peng Haitao <pe...@cn...> +# History: 2012/02/09 - Created. +# + +. ./sssd-lib.sh || exit 1 + +sssd_case1() +{ + export TST_COUNT=1 + + tst_resm TINFO "test allowed_shells with the shell in \"/etc/shells\"." + + sss_usermod -s $line_shell $username + getent passwd $username@LOCAL | grep "$line_shell" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user login shell is $line_shell." + else + tst_resm TFAIL "sssd: user login shell should be $line_shell." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case2() +{ + export TST_COUNT=2 + + tst_resm TINFO "test not set allowed_shells" + + make_config_file + sleep 1 + + restart_sssd_daemon + + # When not set allowed_shells, the user shell is used even if is wrong + sss_usermod -s $LTPTMP/noshell $username + getent passwd $username@LOCAL | grep "$LTPTMP/noshell" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $LTPTMP/noshell." + else + tst_resm TFAIL "sssd: user home dir should be $LTPTMP/noshell." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case3() +{ + export TST_COUNT=3 + + tst_resm TINFO "test use shell_fallback when set allowed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\allowed_shells = $LTPTMP/noshell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $LTPTMP/noshell $username + + restart_sssd_daemon + + # When the shell is in the allowed_shells list but not in "/etc/shells" + # use the value of the shell_fallback parameter. + # shell_fallback's default value is /bin/sh. + getent passwd $username@LOCAL | grep "/bin/sh" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is /bin/sh." + else + tst_resm TFAIL "sssd: user home dir should be /bin/sh." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case4() +{ + export TST_COUNT=4 + + tst_resm TINFO "test use shell_fallback when set allowed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\allowed_shells = $LTPTMP/noshell" $CONFIG_FILE + sed -i -e "/\[nss\]/ a\shell_fallback = $line_shell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $LTPTMP/noshell $username + + restart_sssd_daemon + + # When the shell is in the allowed_shells list but not in "/etc/shells" + # use the value of the shell_fallback parameter. + # shell_fallback's value is set $line_shell. + getent passwd $username@LOCAL | grep "$line_shell" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $line_shell." + else + tst_resm TFAIL "sssd: user home dir should be $line_shell." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case5() +{ + export TST_COUNT=5 + + tst_resm TINFO "test use shell_fallback when set vetoed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\vetoed_shells = $line_shell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $line_shell $username + + restart_sssd_daemon + + # When the shell is in the vetoed_shells list, + # use the value of the shell_fallback parameter. + # shell_fallback's default value is /bin/sh. + getent passwd $username@LOCAL | grep "/bin/sh" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is /bin/sh." + else + tst_resm TFAIL "sssd: user home dir should be /bin/sh." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case6() +{ + export TST_COUNT=6 + + tst_resm TINFO "test use nologin when not in allowed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\allowed_shells = $line_shell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $LTPTMP/noshell $username + + restart_sssd_daemon + + # When the shell is not in the allowed_shells list, and not in + # "/etc/shells", a nologin shell is used. + getent passwd $username@LOCAL | grep "/sbin/nologin" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is /sbin/nologin." + else + tst_resm TFAIL "sssd: user home dir should be /sbin/nologin." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +export TST_TOTAL=6 +export TCID=sssd03 + +grep -v -w -E "nologin|sh|bash" /etc/shells > $LTPTMP/all_shells +line_shell=`sed -n '1p' $LTPTMP/all_shells` +if [ -z "$line_shell" ]; then + rm -f $LTPTMP/all_shells + tst_brkm TCONF NULL "Please install another shell." + return 0 +fi +rm -f $LTPTMP/all_shells + +TFAILCNT=0 +username="sssd_test_user" + +make_config_file +# make sure config file is OK +sleep 1 +restart_sssd_daemon +sss_useradd $username + +for i in $(seq 1 $TST_TOTAL); do + sssd_case$i +done + +sss_userdel $username +cleanup ${TFAILCNT:=0} -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 05:29:28
|
Add test cases of override_homedir. Signed-off-by: Peng Haitao <pe...@cn...> --- runtest/commands | 1 + testcases/commands/sssd/sssd01 | 143 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 0 deletions(-) create mode 100755 testcases/commands/sssd/sssd01 diff --git a/runtest/commands b/runtest/commands index a25df83..0a1254b 100644 --- a/runtest/commands +++ b/runtest/commands @@ -17,3 +17,4 @@ ln_tests01 ln_tests.sh mkdir_tests01 mkdir_tests.sh mv_tests01 mv_tests.sh size01 size01 +sssd01 sssd01 diff --git a/testcases/commands/sssd/sssd01 b/testcases/commands/sssd/sssd01 new file mode 100755 index 0000000..b958ad5 --- /dev/null +++ b/testcases/commands/sssd/sssd01 @@ -0,0 +1,143 @@ +#! /bin/sh + +# Copyright (c) International Business Machines Corp., 2012 +# +# 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 +# +# Description: Test override_homedir in the configuration file. +# Author: Peng Haitao <pe...@cn...> +# History: 2012/02/17 - Created. +# + +. ./sssd-lib.sh || exit 1 + +sssd_case1() +{ + export TST_COUNT=1 + + tst_resm TINFO "test override_homedir with absolute path in [nss]" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\override_homedir = $LTPTMP" $CONFIG_FILE + sleep 1 + + getent passwd $username@LOCAL | grep "$LTPTMP" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user home dir should be not $LTPTMP." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$LTPTMP" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $LTPTMP." + else + tst_resm TFAIL "sssd: user home dir should be $LTPTMP." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case2() +{ + export TST_COUNT=2 + + tst_resm TINFO "test override_homedir with template in [domain/LOCAL]" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[domain\/LOCAL\]/ a\override_homedir = $LTPTMP/%u_%U@%d" \ + $CONFIG_FILE + sleep 1 + + uid=`id -u $username` + home_dir="$LTPTMP/${username}_$uid@LOCAL" + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user home dir should be not $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $home_dir." + else + tst_resm TFAIL "sssd: user home dir should be $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case3() +{ + export TST_COUNT=3 + + tst_resm TINFO "test override_homedir with absolute path in [nss]" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\override_homedir = $LTPTMP/%f" $CONFIG_FILE + sleep 1 + + home_dir="$LTPTMP/$username@LOCAL" + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user home dir should be not $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $home_dir." + else + tst_resm TFAIL "sssd: user home dir should be $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +export TST_TOTAL=3 +export TCID=sssd01 + +TFAILCNT=0 +username="sssd_test_user" + +make_config_file +# make sure config file is OK +sleep 1 +restart_sssd_daemon +sss_useradd $username + +for i in $(seq 1 $TST_TOTAL); do + sssd_case$i +done + +sss_userdel $username +cleanup ${TFAILCNT:=0} -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 09:06:42
|
The series patches will test the following options in sssd.conf: override_homedir override_gid allowed_shells vetoed_shells shell_fallback Peng Haitao (4): A library used to test SSSD Add test option override_homedir Add test option override_gid Add test option allowed_shells, vetoed_shells and shell_fallback runtest/commands | 3 + testcases/commands/sssd/Makefile | 25 ++++ testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++ testcases/commands/sssd/sssd01 | 143 +++++++++++++++++++++++ testcases/commands/sssd/sssd02 | 75 ++++++++++++ testcases/commands/sssd/sssd03 | 217 +++++++++++++++++++++++++++++++++++ 6 files changed, 672 insertions(+), 0 deletions(-) create mode 100644 testcases/commands/sssd/Makefile create mode 100755 testcases/commands/sssd/sssd-lib.sh create mode 100755 testcases/commands/sssd/sssd01 create mode 100755 testcases/commands/sssd/sssd02 create mode 100755 testcases/commands/sssd/sssd03 -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 07:50:32
|
Add test cases of override_homedir. Signed-off-by: Peng Haitao <pe...@cn...> --- runtest/commands | 1 + testcases/commands/sssd/sssd01 | 143 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 0 deletions(-) create mode 100755 testcases/commands/sssd/sssd01 diff --git a/runtest/commands b/runtest/commands index a25df83..0a1254b 100644 --- a/runtest/commands +++ b/runtest/commands @@ -17,3 +17,4 @@ ln_tests01 ln_tests.sh mkdir_tests01 mkdir_tests.sh mv_tests01 mv_tests.sh size01 size01 +sssd01 sssd01 diff --git a/testcases/commands/sssd/sssd01 b/testcases/commands/sssd/sssd01 new file mode 100755 index 0000000..3e8dfc8 --- /dev/null +++ b/testcases/commands/sssd/sssd01 @@ -0,0 +1,143 @@ +#! /bin/sh + +# Copyright (c) 2012 FUJITSU LIMITED +# +# 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 +# +# Description: Test override_homedir in the configuration file. +# Author: Peng Haitao <pe...@cn...> +# History: 2012/02/17 - Created. +# + +. ./sssd-lib.sh || exit 1 + +sssd_case1() +{ + export TST_COUNT=1 + + tst_resm TINFO "test override_homedir with absolute path in [nss]" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\override_homedir = $LTPTMP" $CONFIG_FILE + sleep 1 + + getent passwd $username@LOCAL | grep "$LTPTMP" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user home dir should be not $LTPTMP." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$LTPTMP" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $LTPTMP." + else + tst_resm TFAIL "sssd: user home dir should be $LTPTMP." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case2() +{ + export TST_COUNT=2 + + tst_resm TINFO "test override_homedir with template in [domain/LOCAL]" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[domain\/LOCAL\]/ a\override_homedir = $LTPTMP/%u_%U@%d" \ + $CONFIG_FILE + sleep 1 + + uid=`id -u $username` + home_dir="$LTPTMP/${username}_$uid@LOCAL" + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user home dir should be not $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $home_dir." + else + tst_resm TFAIL "sssd: user home dir should be $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case3() +{ + export TST_COUNT=3 + + tst_resm TINFO "test override_homedir with absolute path in [nss]" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\override_homedir = $LTPTMP/%f" $CONFIG_FILE + sleep 1 + + home_dir="$LTPTMP/$username@LOCAL" + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user home dir should be not $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$home_dir" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $home_dir." + else + tst_resm TFAIL "sssd: user home dir should be $home_dir." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +export TST_TOTAL=3 +export TCID=sssd01 + +TFAILCNT=0 +username="sssd_test_user" + +make_config_file +# make sure config file is OK +sleep 1 +restart_sssd_daemon +sss_useradd $username + +for i in $(seq 1 $TST_TOTAL); do + sssd_case$i +done + +sss_userdel $username +cleanup ${TFAILCNT:=0} -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 07:50:33
|
This library includes a set of functions used to test SSSD(System Security Services Daemon). Signed-off-by: Peng Haitao <pe...@cn...> --- testcases/commands/sssd/Makefile | 25 ++++ testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+), 0 deletions(-) create mode 100644 testcases/commands/sssd/Makefile create mode 100755 testcases/commands/sssd/sssd-lib.sh diff --git a/testcases/commands/sssd/Makefile b/testcases/commands/sssd/Makefile new file mode 100644 index 0000000..9fadfae --- /dev/null +++ b/testcases/commands/sssd/Makefile @@ -0,0 +1,25 @@ +# +# Copyright (c) 2012 FUJITSU LIMITED +# +# 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 St, Fifth Floor, Boston, MA 02110-1301 USA +# + +top_srcdir ?= ../../.. + +include $(top_srcdir)/include/mk/testcases.mk + +INSTALL_TARGETS := sssd0* sssd-lib.sh + +include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/commands/sssd/sssd-lib.sh b/testcases/commands/sssd/sssd-lib.sh new file mode 100755 index 0000000..c1d42d3 --- /dev/null +++ b/testcases/commands/sssd/sssd-lib.sh @@ -0,0 +1,209 @@ +#! /bin/sh +# +# Copyright (c) 2012 FUJITSU LIMITED +# +# 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 +# +################################################################## + +export TST_TOTAL=${TST_TOTAL:=1} +export TST_COUNT=1 +export TCID=${TCID:="$(basename "$0")"} + +if [ -z "$LTPTMP" -a -z "$TMPBASE" ]; then + LTPTMP=/tmp +else + LTPTMP=$TMPBASE +fi + +if ! which sss_useradd >/dev/null 2>&1; then + tst_brkm TCONF NULL \ + "sss_useradd does not exist. Skipping all testcases." + exit 0 +fi + +# Signals to trap. +readonly TRAP_SIGS="2 3 6 11 15" + +CONFIG_FILE="/etc/sssd/sssd.conf" +NSS_CONFIG_FILE="/etc/nsswitch.conf" +SSSD_INIT_SCRIPT="/etc/init.d/sssd" + +# Command to restart sssd daemon. +SSSD_RESTART_CMD= + +# number of seconds to wait for another sssd test to complete +WAIT_COUNT=30 + +# running under systemd? +if command -v systemctl >/dev/null 2>&1; then + HAVE_SYSTEMCTL=1 +else + HAVE_SYSTEMCTL=0 +fi + +cleanup() +{ + disable_traps + exit_code=$1 + + # Restore the previous sssd daemon state. + if [ -f "$CONFIG_FILE.ltpback" ]; then + if mv "$CONFIG_FILE.ltpback" "$CONFIG_FILE"; then + mv $NSS_CONFIG_FILE.ltpback $NSS_CONFIG_FILE + # Make sure that restart_sssd_daemon doesn't loop + # back to cleanup again. + restart_sssd_daemon "return 1" + # Maintain any nonzero exit codes + if [ $exit_code -ne $? ]; then + exit_code=1 + fi + else + exit_code=1 + fi + fi + + exit $exit_code +} + +setup() +{ + is_root || exit 1 + + trap ' disable_traps + tst_resm TBROK "Testing is terminating due to a signal" + cleanup 1' $TRAP_SIGS || exit 1 + + # Check to see if sssd exists + if [ ! -e /usr/sbin/sssd ]; then + tst_resm TCONF "couldn't find sssd" + cleanup 0 + fi + + # Check to see if nscd exists + if [ ! -e /usr/sbin/nscd ]; then + tst_resm TCONF "couldn't find nscd" + cleanup 0 + fi + + SVCNAME=$(basename $SSSD_INIT_SCRIPT) + if [ $HAVE_SYSTEMCTL == 1 ]; then + for svc in "$SVCNAME" "sssd"; do + if systemctl is-enabled $svc.service >/dev/null 2>&1 + then + SSSD_RESTART_CMD="systemctl restart $svc.service" + break + fi + done + else + for SSSD_INIT_SCRIPT in "$SSSD_INIT_SCRIPT" "/etc/init.d/sssd" + do + if [ -x "$SSSD_INIT_SCRIPT" ]; then + SSSD_RESTART_CMD="$SSSD_INIT_SCRIPT restart" + break + fi + done + fi + + if [ -z "$SSSD_RESTART_CMD" ]; then + tst_resm TBROK "Don't know how to restart $SVCNAME" + cleanup 1 + fi + + # Back up configuration file + if [ -f "$CONFIG_FILE" ]; then + # Pause if another LTP sssd test is running + while [ -f "$CONFIG_FILE.ltpback" -a $WAIT_COUNT -gt 0 ]; do + : $(( WAIT_COUNT -= 1 )) + sleep 1 + done + # Oops -- $CONFIG_FILE.ltpback is still there! + if [ $WAIT_COUNT -eq 0 ]; then + tst_resm TBROK "another sssd test is stuck" + cleanup 1 + elif ! cp "$CONFIG_FILE" "$CONFIG_FILE.ltpback"; then + tst_resm TBROK "failed to backup $CONFIG_FILE" + cleanup 1 + fi + + cp $NSS_CONFIG_FILE $NSS_CONFIG_FILE.ltpback + grep "passwd: files sss" $NSS_CONFIG_FILE > /dev/null + if [ $? -ne 0 ]; then + sed -i "s/passwd: files/passwd: files sss/" \ + $NSS_CONFIG_FILE + fi + else + tst_brkm TBROK NULL "$CONFIG_FILE not found!" + fi +} + +disable_traps() +{ + trap - $TRAP_SIGS +} + +restart_sssd_daemon() +{ + # Default to running `cleanup 1' when dealing with error cases. + if [ $# -eq 0 ]; then + cleanup_command="cleanup 1" + else + cleanup_command=$1 + fi + + tst_resm TINFO "restarting sssd daemon via $SSSD_RESTART_CMD" + $SSSD_RESTART_CMD > /dev/null 2>&1 + if [ $? -eq 0 ]; then + # wait sssd restart success. + sleep 1 + else + $cleanup_command + fi +} + +# sssd.conf should contain: +# [sssd] +# config_file_version = 2 +# services = nss, pam +# domains = LOCAL +# +#[nss] +# +#[pam] +# +#[domain/LOCAL] +#id_provider = local +make_config_file() +{ + echo -e "[sssd]\nconfig_file_version = 2" > $CONFIG_FILE + echo -e "services = nss, pam\ndomains = LOCAL" >> $CONFIG_FILE + echo -e "\n[nss]\n\n[pam]\n" >> $CONFIG_FILE + echo -e "[domain/LOCAL]\nid_provider = local" >> $CONFIG_FILE +} + +. cmdlib.sh + +# determine sssd.conf can support override_gid? +setup +make_config_file +sed -i -e "/\[domain\/LOCAL\]/ a\override_gid = error" $CONFIG_FILE +# make sure config file is OK +sleep 1 +$SSSD_RESTART_CMD > /dev/null 2>&1 + +if [ $? -ne 1 ]; then + tst_resm TCONF "override_gid does not exist. Skipping all testcases" + cleanup 0 +fi -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 07:50:35
|
Add test cases of override_gid. Signed-off-by: Peng Haitao <pe...@cn...> --- runtest/commands | 1 + testcases/commands/sssd/sssd02 | 75 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 0 deletions(-) create mode 100755 testcases/commands/sssd/sssd02 diff --git a/runtest/commands b/runtest/commands index 0a1254b..95ccfda 100644 --- a/runtest/commands +++ b/runtest/commands @@ -18,3 +18,4 @@ mkdir_tests01 mkdir_tests.sh mv_tests01 mv_tests.sh size01 size01 sssd01 sssd01 +sssd02 sssd02 diff --git a/testcases/commands/sssd/sssd02 b/testcases/commands/sssd/sssd02 new file mode 100755 index 0000000..a0e5aa6 --- /dev/null +++ b/testcases/commands/sssd/sssd02 @@ -0,0 +1,75 @@ +#! /bin/sh + +# Copyright (c) 2012 FUJITSU LIMITED +# +# 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 +# +# Description: Test override_gid in the configuration file. +# Author: Peng Haitao <pe...@cn...> +# History: 2012/02/08 - Created. +# + +. ./sssd-lib.sh || exit 1 + +sssd_case1() +{ + tst_resm TINFO "test override_gid with gid+1 in [domain/LOCAL]" + + # Create the configuration file specific to this test case. + make_config_file + gid=`id -g $username` + gid_add_one=$(( gid+1 )) + sed -i -e "/\[domain\/LOCAL\]/ a\override_gid = $gid_add_one" \ + $CONFIG_FILE + sleep 1 + + getent passwd $username@LOCAL | grep "$gid_add_one" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TFAIL "sssd: user GID should be not $gid_add_one." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + restart_sssd_daemon + + getent passwd $username@LOCAL | grep "$gid_add_one" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user GID is $gid_add_one." + else + tst_resm TFAIL "sssd: user GID should be $gid_add_one." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +export TST_TOTAL=1 +export TST_COUNT=1 +export TCID=sssd02 + +TFAILCNT=0 +username="sssd_test_user" + +make_config_file +# make sure config file is OK +sleep 1 +restart_sssd_daemon +sss_useradd $username + +sssd_case1 + +sss_userdel $username +cleanup ${TFAILCNT:=0} -- 1.7.9 |
From: Peng H. <pe...@cn...> - 2012-02-27 07:50:39
|
Add test cases of allowed_shells, vetoed_shells and shell_fallback. Signed-off-by: Peng Haitao <pe...@cn...> --- runtest/commands | 1 + testcases/commands/sssd/sssd03 | 217 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+), 0 deletions(-) create mode 100755 testcases/commands/sssd/sssd03 diff --git a/runtest/commands b/runtest/commands index 95ccfda..193c7e4 100644 --- a/runtest/commands +++ b/runtest/commands @@ -19,3 +19,4 @@ mv_tests01 mv_tests.sh size01 size01 sssd01 sssd01 sssd02 sssd02 +sssd03 sssd03 diff --git a/testcases/commands/sssd/sssd03 b/testcases/commands/sssd/sssd03 new file mode 100755 index 0000000..417ab53 --- /dev/null +++ b/testcases/commands/sssd/sssd03 @@ -0,0 +1,217 @@ +#! /bin/sh + +# Copyright (c) 2012 FUJITSU LIMITED +# +# 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 +# +# Description: Test allowed_shells, vetoed_shells and shell_fallback +# in the configuration file. +# Author: Peng Haitao <pe...@cn...> +# History: 2012/02/09 - Created. +# + +. ./sssd-lib.sh || exit 1 + +sssd_case1() +{ + export TST_COUNT=1 + + tst_resm TINFO "test allowed_shells with the shell in \"/etc/shells\"." + + sss_usermod -s $line_shell $username + getent passwd $username@LOCAL | grep "$line_shell" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user login shell is $line_shell." + else + tst_resm TFAIL "sssd: user login shell should be $line_shell." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case2() +{ + export TST_COUNT=2 + + tst_resm TINFO "test not set allowed_shells" + + make_config_file + sleep 1 + + restart_sssd_daemon + + # When not set allowed_shells, the user shell is used even if is wrong + sss_usermod -s $LTPTMP/noshell $username + getent passwd $username@LOCAL | grep "$LTPTMP/noshell" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $LTPTMP/noshell." + else + tst_resm TFAIL "sssd: user home dir should be $LTPTMP/noshell." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case3() +{ + export TST_COUNT=3 + + tst_resm TINFO "test use shell_fallback when set allowed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\allowed_shells = $LTPTMP/noshell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $LTPTMP/noshell $username + + restart_sssd_daemon + + # When the shell is in the allowed_shells list but not in "/etc/shells" + # use the value of the shell_fallback parameter. + # shell_fallback's default value is /bin/sh. + getent passwd $username@LOCAL | grep "/bin/sh" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is /bin/sh." + else + tst_resm TFAIL "sssd: user home dir should be /bin/sh." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case4() +{ + export TST_COUNT=4 + + tst_resm TINFO "test use shell_fallback when set allowed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\allowed_shells = $LTPTMP/noshell" $CONFIG_FILE + sed -i -e "/\[nss\]/ a\shell_fallback = $line_shell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $LTPTMP/noshell $username + + restart_sssd_daemon + + # When the shell is in the allowed_shells list but not in "/etc/shells" + # use the value of the shell_fallback parameter. + # shell_fallback's value is set $line_shell. + getent passwd $username@LOCAL | grep "$line_shell" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is $line_shell." + else + tst_resm TFAIL "sssd: user home dir should be $line_shell." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case5() +{ + export TST_COUNT=5 + + tst_resm TINFO "test use shell_fallback when set vetoed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\vetoed_shells = $line_shell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $line_shell $username + + restart_sssd_daemon + + # When the shell is in the vetoed_shells list, + # use the value of the shell_fallback parameter. + # shell_fallback's default value is /bin/sh. + getent passwd $username@LOCAL | grep "/bin/sh" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is /bin/sh." + else + tst_resm TFAIL "sssd: user home dir should be /bin/sh." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +sssd_case6() +{ + export TST_COUNT=6 + + tst_resm TINFO "test use nologin when not in allowed_shells" + + # Create the configuration file specific to this test case. + make_config_file + sed -i -e "/\[nss\]/ a\allowed_shells = $line_shell" $CONFIG_FILE + sleep 1 + + sss_usermod -s $LTPTMP/noshell $username + + restart_sssd_daemon + + # When the shell is not in the allowed_shells list, and not in + # "/etc/shells", a nologin shell is used. + getent passwd $username@LOCAL | grep "/sbin/nologin" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + tst_resm TPASS "sssd: user home dir is /sbin/nologin." + else + tst_resm TFAIL "sssd: user home dir should be /sbin/nologin." + : $(( TFAILCNT += 1 )) + return $TFAILCNT + fi + + return 0 +} + +export TST_TOTAL=6 +export TCID=sssd03 + +grep -v -w -E "nologin|sh|bash" /etc/shells > $LTPTMP/all_shells +line_shell=`sed -n '1p' $LTPTMP/all_shells` +if [ -z "$line_shell" ]; then + rm -f $LTPTMP/all_shells + tst_brkm TCONF NULL "Please install another shell." + return 0 +fi +rm -f $LTPTMP/all_shells + +TFAILCNT=0 +username="sssd_test_user" + +make_config_file +# make sure config file is OK +sleep 1 +restart_sssd_daemon +sss_useradd $username + +for i in $(seq 1 $TST_TOTAL); do + sssd_case$i +done + +sss_userdel $username +cleanup ${TFAILCNT:=0} -- 1.7.9 |
From: Caspar Z. <ca...@ca...> - 2012-02-27 12:32:51
|
On 02/27/2012 03:49 PM, Peng Haitao wrote: > The series patches will test the following options in sssd.conf: > override_homedir > override_gid > allowed_shells > vetoed_shells > shell_fallback > > Peng Haitao (4): > A library used to test SSSD > Add test option override_homedir > Add test option override_gid > Add test option allowed_shells, vetoed_shells and shell_fallback > > runtest/commands | 3 + > testcases/commands/sssd/Makefile | 25 ++++ > testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++ > testcases/commands/sssd/sssd01 | 143 +++++++++++++++++++++++ > testcases/commands/sssd/sssd02 | 75 ++++++++++++ > testcases/commands/sssd/sssd03 | 217 +++++++++++++++++++++++++++++++++++ > 6 files changed, 672 insertions(+), 0 deletions(-) > create mode 100644 testcases/commands/sssd/Makefile > create mode 100755 testcases/commands/sssd/sssd-lib.sh > create mode 100755 testcases/commands/sssd/sssd01 > create mode 100755 testcases/commands/sssd/sssd02 > create mode 100755 testcases/commands/sssd/sssd03 > As always, if you can provide outputs of `runltp -f` that will be helpful for review. >From reviewing the codes, I think they're OK. Reviewed-by: Caspar Zhang <ca...@ca...> |
From: Peng H. <pe...@cn...> - 2012-02-28 00:57:19
|
Caspar Zhang said the following on 2012-2-27 20:31: > On 02/27/2012 03:49 PM, Peng Haitao wrote: >> The series patches will test the following options in sssd.conf: >> override_homedir >> override_gid >> allowed_shells >> vetoed_shells >> shell_fallback >> >> Peng Haitao (4): >> A library used to test SSSD >> Add test option override_homedir >> Add test option override_gid >> Add test option allowed_shells, vetoed_shells and shell_fallback >> >> runtest/commands | 3 + >> testcases/commands/sssd/Makefile | 25 ++++ >> testcases/commands/sssd/sssd-lib.sh | 209 +++++++++++++++++++++++++++++++++ >> testcases/commands/sssd/sssd01 | 143 +++++++++++++++++++++++ >> testcases/commands/sssd/sssd02 | 75 ++++++++++++ >> testcases/commands/sssd/sssd03 | 217 +++++++++++++++++++++++++++++++++++ >> 6 files changed, 672 insertions(+), 0 deletions(-) >> create mode 100644 testcases/commands/sssd/Makefile >> create mode 100755 testcases/commands/sssd/sssd-lib.sh >> create mode 100755 testcases/commands/sssd/sssd01 >> create mode 100755 testcases/commands/sssd/sssd02 >> create mode 100755 testcases/commands/sssd/sssd03 >> > > As always, if you can provide outputs of `runltp -f` that will be > helpful for review. > >>From reviewing the codes, I think they're OK. > > Reviewed-by: Caspar Zhang <ca...@ca...> > Thanks. The output of `runltp -f` is as following: INFO: creating /opt/ltp/results directory If some fields are empty or look unusual you may have an old version. Compare to the current minimal requirements in Documentation/Changes. Red Hat Enterprise Linux Server release 6.2 (Santiago) Red Hat Enterprise Linux Server release 6.2 (Santiago) Linux RHEL6U2GA-Intel64-150 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux Gnu C gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) Gnu make 3.81 util-linux ng 2.17.2) mount ng 2.17.2 (with libblkid and selinux support) modutils 3.9 e2fsprogs 1.41.12 PPP 2.4.5 Linux C Library > libc.2.12 Dynamic linker (ldd) 2.12 Procps 3.2.8 Net-tools 1.60 iproute2 iproute2-ss091226 Kbd 1.15 Sh-utils 8.4 Modules Loaded nfs lockd fscache nfs_acl auth_rpcgss veth lzo_decompress lzo_compress snd_seq_dummy ext3 jbd fuse nls_utf8 ip6table_filter ip6_tables ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT xt_CHECKSUM iptable_mangle iptable_filter ip_tables bridge autofs4 sunrpc target_core_iblock target_core_file target_core_pscsi target_core_mod configfs bnx2fc cnic uio fcoe libfcoe 8021q garp stp libfc scsi_transport_fc scsi_tgt llc cpufreq_ondemand acpi_cpufreq freq_table mperf ipv6 vhost_net macvtap macvlan tun kvm_intel kvm uinput ppdev parport_pc parport sg microcode i2c_i801 iTCO_wdt iTCO_vendor_support sky2 snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc ext4 mbcache jbd2 sd_mod crc_t10dif pata_acpi ata_generic ata_piix i915 drm_kms_helper drm i2c_algo_bit i2c_core video output dm_mirror dm_region_hash dm_log dm_mo d free reports: total used free shared buffers cached Mem: 2045108 1693044 352064 0 268512 340340 -/+ buffers/cache: 1084192 960916 Swap: 2047992 156196 1891796 /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz stepping : 10 cpu MHz : 2800.000 cache size : 3072 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dts tpr_shadow vnmi flexpriority bogomips : 5586.47 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz stepping : 10 cpu MHz : 2800.000 cache size : 3072 KB physical id : 0 siblings : 2 core id : 1 cpu cores : 2 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dts tpr_shadow vnmi flexpriority bogomips : 5585.70 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: remove test cases which require the block device. You can specify it with option -b COMMAND: /opt/ltp/bin/ltp-pan -e -S -a 26997 -n 26997 -p -f /tmp/ltp-kvMrIZ9Nyk/alltests -l /opt/ltp/results/LTP_RUN_ON-2012_Feb_28-08h_47m_58s.log -C /opt/ltp/output/LTP_RUN_ON-2012_Feb_28-08h_47m_58s.failed LOG File: /opt/ltp/results/LTP_RUN_ON-2012_Feb_28-08h_47m_58s.log FAILED COMMAND File: /opt/ltp/output/LTP_RUN_ON-2012_Feb_28-08h_47m_58s.failed Running tests....... <<<test_start>>> tag=sssd01 stime=1330390079 cmdline="sssd01" contacts="" analysis=exit <<<test_output>>> sssd01 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd01 0 TINFO : test override_homedir with absolute path in [nss] sssd01 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd01 1 TPASS : sssd: user home dir is /tmp. sssd01 0 TINFO : test override_homedir with template in [domain/LOCAL] sssd01 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd01 2 TPASS : sssd: user home dir is /tmp/sssd_test_user_1038@LOCAL. sssd01 0 TINFO : test override_homedir with absolute path in [nss] sssd01 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd01 3 TPASS : sssd: user home dir is /tmp/sssd_test_user@LOCAL. sssd01 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart <<<execution_status>>> initiation_status="ok" duration=12 termination_type=exited termination_id=0 corefile=no cutime=9 cstime=17 <<<test_end>>> <<<test_start>>> tag=sssd02 stime=1330390091 cmdline="sssd02" contacts="" analysis=exit <<<test_output>>> sssd02 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd02 0 TINFO : test override_gid with gid+1 in [domain/LOCAL] sssd02 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd02 1 TPASS : sssd: user GID is 1040. sssd02 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart <<<execution_status>>> initiation_status="ok" duration=8 termination_type=exited termination_id=0 corefile=no cutime=8 cstime=14 <<<test_end>>> <<<test_start>>> tag=sssd03 stime=1330390099 cmdline="sssd03" contacts="" analysis=exit <<<test_output>>> sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd03 0 TINFO : test allowed_shells with the shell in "/etc/shells". sssd03 1 TPASS : sssd: user login shell is /bin/tcsh. sssd03 0 TINFO : test not set allowed_shells sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd03 2 TPASS : sssd: user home dir is /tmp/noshell. sssd03 0 TINFO : test use shell_fallback when set allowed_shells sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd03 3 TPASS : sssd: user home dir is /bin/sh. sssd03 0 TINFO : test use shell_fallback when set allowed_shells sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd03 4 TPASS : sssd: user home dir is /bin/tcsh. sssd03 0 TINFO : test use shell_fallback when set vetoed_shells sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd03 5 TPASS : sssd: user home dir is /bin/sh. sssd03 0 TINFO : test use nologin when not in allowed_shells sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart sssd03 6 TPASS : sssd: user home dir is /sbin/nologin. sssd03 0 TINFO : restarting sssd daemon via /etc/init.d/sssd restart incrementing stop <<<execution_status>>> initiation_status="ok" duration=17 termination_type=exited termination_id=0 corefile=no cutime=17 cstime=27 <<<test_end>>> INFO: ltp-pan reported all tests PASS LTP Version: 20120104-92-g687703b ###############################################################" Done executing testcases." LTP Version: 20120104-92-g687703b ###############################################################" -- Best Regards, Peng |