chsh always asking a password , and get `PAM: Authentication failure`
Today I tried to switch to another shell.
First I tried fish, and used chsh -s fish
to change fish to default. After some time I found it cannot use ~/.bashrc
(&& needs to be replaced by and).
Because I prefer to reusing ~/.bashrc
, I found zsh
which seems an easier one and followed this documentation to switch to zsh
.
While I was running sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
, suddenly it asked me to enter Password:
. I entered the root password but got PAM: Authentication failure
.
Then I tried chsh -s bash
and chsh -s zsh
, it always asked me for a password and threw PAM: Authentication failure
(not system password). I can't figure this out.
Thanks to this question on Server Fault, I worked around this by:
Changing /etc/pam.d/chsh:
from:
auth required pam_shells.so
to
auth sufficient pam_shells.so
Then it doesn't ask for a password anymore. But I think it better to restore chsh settings after switching the shell.
Try this:
sudo chsh -s $(which zsh) $(whoami)
-
Use
which zsh
to find yourzsh
location.$ which zsh /usr/bin/zsh
Add
/usr/bin/zsh
to/etc/shells
Check in
/etc/passwd
that your config is/usr/bin/zsh
Run
chsh -s /usr/bin/zsh
An alternate work around –
My /etc/pam.d/chsh
file has this section:
# This allows root to change user shell without being
# prompted for a password
auth sufficient pam_rootok.so
As the comment suggests, it lets root change the shell without needing to product the password. As such I was able to change my shell (to zsh) by running chsh
as root and specifying my user account, eg:
sudo chsh $USER -s $(which zsh)