我无法使用 chsh 将我的 bash shell 更改为 fish,因为它要求输入密码,而这不是我的 root 密码,输入一些内容后,我得到了以下信息:chsh: PAM: Authentication failure
这是我的/etc/pam.d/chsh
配置文件:
#
# The PAM configuration file for the Shadow `chsh' service
#
# This will not allow a user to change their shell unless
# their current one is listed in /etc/shells. This keeps
# accounts with special shells from changing them.
auth sufficent pam_shells.so
# This allows root to change user shell without being
# prompted for a password
auth sufficent pam_rootok.so
# The standard Unix authentication modules, used with
# NIS (man nsswitch) as well as normal /etc/passwd and
# /etc/shadow entries.
@include common-auth
@include common-account
@include common-session
我的/etc/shells
文件也包含/bin/fish
和/usr/bin/fish
,它仍然要求输入密码。我也知道我的sudo
密码,但在我输入密码后,它要求输入另一个我不知道的密码。像这样:
gergo@odin:~$ sudo chsh -s /usr/bin/fish
[sudo] password for gergo:
Password:
chsh: PAM: Authentication failure
如果有人能想到什么请告诉我。
答案1
在 中/etc/pam.d/chsh
,您需要更改:
auth sufficent pam_shells.so
到:
auth required pam_shells.so
并改变:
auth sufficent pam_rootok.so
到:
auth sufficient pam_rootok.so
然后,无需 更改您自己的 shell sudo
,如下所示:
chsh -s /bin/fish
简要说明:
sufficent
不是有效的 PAM 模块控制标志并且必须更正为sufficient
,而且,您不希望它出现在第一个模块中,因为它将禁用进一步的正确用户身份验证(例如要求输入密码) 立即将成功返回给应用程序并阻止进一步的堆栈处理,所以使用required
... 另外,使用sudo chsh -s /usr/bin/fish
而不指定用户就像sudo chsh -s /usr/bin/fish username
会改变root
的登录shell而不是你的,你不需要sudo
改变你自己的登录shell,所以不要使用它。