this feels like an selinux issue with the files related to passwd. If something has changed the passwd files when selinux was not active it can have the wrong labels and selinux will deny access to the file. (You can probably confirm if selinux is on by examining the kickstart file)
Follow the instructions from here to boot into rescue mode.
After you gain access to the rescue enviroment perform the following instructions to force selinux to relabel the filesystem at next boot
# mount -o remount,rw /mnt/sysimage
# chroot /mnt/sysimage
# touch /.autorelabel
# reboot
Another approach: If you can boot into single user mode u can check if selinux is running.
# getenforce
this will can either say enforcing, permissive or disabled. You can then decide to disable it while you repair the damage. If you need to turn it off follow these instructions
vi /etc/sysconfig/selinux
Look for the line that says SELINUX=ENFORCING
and replace ENFORCING
with DISABLED
. After that save/exit the file and reboot. If selinux was the culprit you should be able to login like normal.