#!/bin/bash # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # runtest.sh of /CoreOS/pam/Sanity/pam_unix # Description: Test for module pam_unix # Author: David Spurek # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Copyright (c) 2012 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing # to use, modify, copy, or redistribute it subject to the terms # and conditions of the GNU General Public License version 2. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Include Beaker environment . /usr/bin/rhts-environment.sh . /usr/share/beakerlib/beakerlib.sh PACKAGE="pam" PACKAGES=( "pam" "expect" ) _PASSWORD1="jf@#Faffo" _PASSWORD2="0m4nchU!!F" function do_passwd { expect </etc/security/opasswd tcfFin; } rlPhaseEnd; } tcfTry "Tests" --no-assert && { tcfChk && { rlPhaseStartTest "test option remember" && { tcfChk "setup" && { CleanupRegister --mark 'rlRun "testUserCleanup"' rlRun "testUserSetup 2" PWA=( ':3533tjh^397*:~21081^*p@w!~18374_0' ':4273tjh^397*:~3709^*p@w!~19467_1' ':31388tjh^397*:~32486^*p@w!~12258_2' ':10233tjh^397*:~620^*p@w!~19779_3' ':26151tjh^397*:~8077^*p@w!~29968_4' ':26593tjh^397*:~4665^*p@w!~16428_5' ':23163tjh^397*:~16784^*p@w!~4822_6' ':4065tjh^397*:~14355^*p@w!~4119_7' ':16312tjh^397*:~30577^*p@w!~26223_8' ) rlRun "echo ${PWA[0]} | passwd --stdin ${testUser[1]}" CleanupRegister 'rlRun "pamRestoreFiles"' rlRun "pamBackupFiles" #rlRun "sed -i -e 's/^password\s\+sufficient\s\+pam_unix.so/\0 remember=5/' $sys_auth" rlRun "pamReplaceServiceModuleRule su password pam_unix.so '' '' '' '$(pamGetServiceRuleAgruments su password pam_unix.so) remember=5'" #rlRun "cat $sys_auth" rlRun "pamGetServiceRules --prefix su password" tcfFin; } tcfTry "test remember option" && { NEWPW=${PWA[0]} for i in `seq 6`; do rlLog "change passwrd #$i" OLDPW=$NEWPW; NEWPW=${PWA[$i]} rlRun "do_passwd ${testUser[1]} ${OLDPW} ${NEWPW}" 0 done rlLog "change passwrd #$i" rlLog "Try change to password that have been alredy used (should fail)" OLDPW=$NEWPW; rlRun "do_passwd ${testUser[1]} ${OLDPW} ${PWA[1]}" 6 for i in 7 8 1; do rlLog "change passwrd #$i" OLDPW=$NEWPW; NEWPW=${PWA[$i]} rlRun "do_passwd ${testUser[1]} ${OLDPW} ${NEWPW}" 0 done tcfFin; } tcfTry "test vhange the password to a previous password of test1" && { # change the password to a previous password of test1, the password change should be allowed. rlLog "Change the password to a previous password of test1, the password change should be allowed" echo ${PWA[0]} | passwd --stdin $testUser rlRun "do_passwd $testUser ${PWA[0]} ${PWA[5]}" 0 tcfFin; } tcfChk "cleanup" && { CleanupDo --mark tcfFin; } rlPhaseEnd; }; : tcfFin; } # Run the test for >=RHEL-6.9 and >=RHEL-7.3 and <>RHEL(Fedora) ! rlIsRHEL '<6.9' && { ! rlIsRHEL '<7.3' || rlIsRHEL 6; } && tcfChk && { rlPhaseStartTest "test option no_pass_expiry" && { tcfChk "setup" && { CleanupRegister --mark 'rlRun "testUserCleanup"' rlRun "testUserSetup" CleanupRegister 'rlRun "sshCleanup"' rlRun "sshSetup" rlRun "sshKeyGen" rlRun "sshCopyID --user $testUser --password $testUserPasswd" CleanupRegister 'rlRun "sshdRestore"' rlRun "sshdStart" CleanupRegister 'rlRun "pamRestoreFiles"' rlRun "pamBackupFiles" rlRun "pamGetServiceRules --prefix su account" tcfFin; } tcfTry "test" && { rlRun "sshRun --user $testUser --key 'id'" rlRun "chage -d 0 $testUser" rlRun "sshRun --user $testUser --key 'id'" 1-255 rlRun "pamReplaceServiceModuleRule sshd account pam_unix.so '' '' '' '$(pamGetServiceRuleAgruments su password pam_unix.so) no_pass_expiry'" rlRun "pamGetServiceRules --prefix sshd account" rlRun "sshRun --user $testUser --key 'id'" tcfFin; } tcfChk "cleanup" && { CleanupDo --mark tcfFin; } rlPhaseEnd; }; : tcfFin; }; : tcfFin; } rlPhaseStartCleanup && { tcfChk "Cleanup phase" && { CleanupDo tcfFin; } tcfCheckFinal rlPhaseEnd; } rlJournalPrintText rlJournalEnd; }