#!/bin/sh set -e cd $(dirname $0) . ../../../common/config.sh . ../../../common/log.sh log_start "$0" "usermod does not create /var/log/faillog" save_config # restore the files on exit trap 'log_status "$0" "FAILURE"; restore_config' 0 change_config echo -n "Create an empty /var/log/faillog (it will not be restored)..." touch /var/log/faillog echo "OK" echo -n "Trigger a connection as foo..." ./login.exp echo "OK" faillog > tmp/faillog.out echo "faillog :" echo "=======================================================================" cat tmp/faillog.out echo "=======================================================================" rm -f tmp/faillog.out echo -n "Manually delete the user foo (to keep the faillog entry)..." sed -e '/^foo:/d' -i /etc/passwd sed -e '/^foo:/d' -i /etc/shadow sed -e '/^foo:/d' -i /etc/group sed -e '/^foo:/d' -i /etc/gshadow echo "OK" echo -n "Change the user's UID to reuse foo's (usermod -u 1000 bar)..." usermod -u 1000 bar echo "OK" echo -n "Check the passwd file..." ../../../common/compare_file.pl data/passwd /etc/passwd echo "OK" echo -n "Check the group file..." ../../../common/compare_file.pl data/group /etc/group echo "OK" echo -n "Check the shadow file..." ../../../common/compare_file.pl data/shadow /etc/shadow echo "OK" echo -n "Check the gshadow file..." ../../../common/compare_file.pl config/etc/gshadow /etc/gshadow echo "OK" faillog > tmp/faillog.out2 echo "faillog:" echo "=======================================================================" cat tmp/faillog.out2 echo "=======================================================================" echo -n "Check the faillog message..." c=$(cat tmp/faillog.out2 | wc -c) test $c = "0" echo "empty faillog OK." rm -f tmp/faillog.out2 log_status "$0" "SUCCESS" restore_config trap '' 0