chsh:PAM身份验证失败


13

我想更改默认的外壳环境

chsh -s /bin/zsh以root用户身份运行,

但出现错误消息:chsh: PAM authentication failed

我发现这个线程http://ubuntuforums.org/showthread.php?t=1702833

但是答案并不能解决我的问题

任何帮助,将不胜感激


这是/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       required   pam_shells.so

# This allows root to change user shell without being
# prompted for a password
auth            sufficient      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的内容

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen
/bin/zsh
/usr/bin/zsh

我发现我曾经运行过chsh -s zsh 它会改变/etc/passwdas的第一行

root:x:0:0:root:/root:zsh

chsh无论您尝试使用什么方式,都将要求输入密码

我只是/etc/passwd手动编辑文件,一切正常。

愚蠢的错误,感谢您的答复


您可以提供/etc/pam.d/chsh吗?(顺便说一句,通常认为root登录shell最小/稳定是个好主意-是否有区域要zsh作为默认shell而不是在登录后启动它?)
symcbean 2013年

我只想在刚登录时自动输入zsh shell,也许这不好。
txworking

Answers:


5

检查您的/ etc / shells文件,如果此行不存在,则将/ bin / zsh添加到文件中。


3
这个答案启发了我检查/etc/passwd文件是否输入了正确的shell名称格式。Thx
txworking

对我来说,使用无所事事的VM,我需要进行更改/etc/passwd。谢谢@txworking!
wulftone 2014年

对我来说,这个问题是由/etc/passwdroot用户的shell内部错误配置引起的……

3

检查您的/etc/passwd。在我的情况下,我以前指定的外壳无效chsh,这就是导致问题的原因。

我将其从zsh外壳改为/bin/zsh,这使问题消失了。


1

看来你的道路我错了。要检查它:

[nick ~]$ which zsh
/usr/bin/zsh

如果结果是/ usr / bin / zch,则应该这样做:

[nick ~]$ chsh -s /usr/bin/zsh

*编辑错字。


1

我遇到了同样的问题。每当我输入chsh时,它都会提示

chsh: PAM authentication failed

但是我通过在/etc/passwd文件中进行一些修改解决了它

Users of kali-linux

只需打开您的根终端并修改/etc/passwd文件,您就可以使用pico,nano或vi编辑器来完成这项工作,而我正在使用vi

vi /etc/passwd

然后搜索用户帐户。并将外壳程序更改为所需的外壳程序,确保新发行版的Linux发行版中已安装所需的外壳程序,以供新用户查看其Linux中存在的外壳程序,只需键入

cat /etc/shells

它列出了它们。如果您已经安装了外壳,却看不到它,则/etc/shell需要创建一个链接并放置外壳的路径,以便手动假设/bin/ksh/etc/shells文件中...

例如,您在bash中,并且想要将其更改为ksh

只需进入/etc/passwd文件中的帐户,然后在最后一个字段中编辑

/bin/bash/bin/ksh/bin/ksh93(如您的cat /etc/shells

只需注销并登录就可以了...

对于其他发行版(例如)ubuntu的用户

输入

sudo -H gnome-terminal (获得根终端)

并且过程与上述相同,因为您也拥有像kali-linux用户这样的root终端。


1

您必须以sudo运行代码:

sudo chsh -s /bin/zsh

我也遇到同样的问题,并且有效!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.