chsh 总是询问密码,并得到 `PAM: Authentication failure`

Mit*_*ril 36 command-line password chsh

今天我尝试切换到另一个shell。

首先我尝试了fish,并用于chsh -s fish将fish更改为默认值。过了一段时间我发现它不能用~/.bashrc(&&需要用and代替)。

因为我更喜欢重用~/.bashrc,我发现zsh这似乎更容易,并按照此文档切换到zsh.

当我正在跑步时sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)",突然它要求我进入Password:。我输入了 root 密码,但得到了PAM: Authentication failure.

然后我试图chsh -s bashchsh -s zsh,它总是让我输入密码,抛PAM: Authentication failure(不系统密码)。我想不通。

Mit*_*ril 55

感谢Server Fault 上的这个问题,我通过以下方式解决了这个问题:

更改/etc/pam.d/chsh:自:

auth       required   pam_shells.so
Run Code Online (Sandbox Code Playgroud)

auth       sufficient   pam_shells.so
Run Code Online (Sandbox Code Playgroud)

然后它不再要求输入密码。但我认为切换shell后恢复chsh设置更好。

  • 使用 sed: sudo sed s/required/sufficient/g -i /etc/pam.d/chsh (2认同)

小智 6

  1. 使用which zsh找到你的zsh位置。

    $ which zsh
    /usr/bin/zsh
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加/usr/bin/zsh/etc/shells

  3. 检查/etc/passwd您的配置是否为/usr/bin/zsh

  4. chsh -s /usr/bin/zsh

  • 请您详细说明第 3 步,如果不存在怎么办? (2认同)

小智 5

尝试这个:

sudo chsh -s $(which zsh) $(whoami)
Run Code Online (Sandbox Code Playgroud)

  • 就是这样 (4认同)