Symptom: the system refuses logins from all accounts, including root.
Because it is impossible to login using any account, in such a situation I need to use an iso to boot from and chroot into the system.
Another way is to boot with init=/bin/bash appended to the kernel line in grub.
The logs will show something like this
archlinux login[1028]: FAILED LOGIN 2 FROM tty1 FOR root, Authentication failure
archlinux login[1028]: pam_shells(login:auth): /etc/shells is either world writable or not a normal file
archlinux login[1028]: pam_shells(login:auth): /etc/shells is either world writable or not a normal file
To fix this I had to check /etc/shells permissions, that have been changed by mistake.
[root@linux /]# ls -l /etc/shells
-rwxrwxrwx 1 root root 52 May 31 2013 /etc/shells
[root@linux /]# cat /etc/shells
#
# /etc/shells
#
/bin/sh
/bin/bash
# End of file
[root@linux /]# chmod 644 /etc/shells
After setting the correct permissions users can login again.
-rwxrwxrwx 1 root root 52 May 31 2013 /etc/shells
[root@linux /]# cat /etc/shells
#
# /etc/shells
#
/bin/sh
/bin/bash
# End of file
[root@linux /]# chmod 644 /etc/shells
After setting the correct permissions users can login again.