我已经使用更改了用户(user1)的密码root
passwd user1
但当我尝试ssh user@localhost
或通过gdm
或tty
总是失败
日志journalctl
显示
Failed password for user1 from ::1
FAILED LOGIN 1 FROM tty3 FOR user1, Authentication failure
pam_unix(gdm-password:auth): conversation failed
pam_unix(gdm-password:auth): auth could not identify password for [user1]
我正在使用全新的 Arch Linux 安装(64 位)
答案1
所以解决方案是,更改/etc/passwd
文件
foruser1
的 shell from /usr/bin/bash
into/bin/bash
答案2
/etc/shells
解决方案位于中记录的文件中man 5 shells
。
简而言之“[that] 是一个文本文件,其中包含有效登录 shell 的完整路径名”。
传统上/etc/shells
仅包含/bin/sh
和/bin/bash
。
因此,为了“修复”该问题,您可以添加/usr/bin/bash
或/etc/shells
更改用户的 shell,例如/bin/bash
使用chsh
.
现代发行版具有/bin
符号链接,/usr/bin
因此前一个修复应该是正确的。请注意,这可能会破坏许多程序不使用该getusershell()
调用但具有硬编码的 shell 路径。
不过,您应该依赖的唯一的 shell 是/bin/sh
。
答案3
1.以 root 身份登录
以 root 身份输入用户名,为了简单起见,我更喜欢文本(tty# ex: tty2)模式。通过
Ctrl + Alt + F#(任意功能键 F2-F7)打开它
username : root
password :
2.检查用户的 shell
$less /etc/passwd
你可能会看到类似的东西
mr_rathod:x:1000:1000:Abhay Raj Singh Rathod:/home/mr_rathod:/usr/bin/bash (unaccessible shell)
mr_rathod:x:1000:1000:Abhay Raj Singh Rathod:/home/mr_rathod:/bin/zsh (unvailable shell)
3.更改密码文件通过编辑 passwd 文件修复它
# nano /etc/passwd
将外壳更改为/bin/bash可以像大多数基于 UNIX 的系统中一样工作