当我输入“chsh -s SHELL”时,chsh 执行了什么操作以及如何返回到上一个 SHELL?

当我输入“chsh -s SHELL”时,chsh 执行了什么操作以及如何返回到上一个 SHELL?

我错误地将我的用户登录 shell 设置为某个未知目录:([1]。现在,我无法以该用户身份登录。每次我尝试 ssh 时,总是会失败,就像我输入了错误的密码一样。我尝试使用 root 登录,然后su --shell=/bin/tcsh username我得到了

su: /path/to/shell/i/set/previously: permission denied

要清楚,/path/to/shell/i/set/previously请指向某个目录,而不是 shell 可执行文件。我尝试将我的登录 shell 改回来,/etc/passwd/bin/tcsh没有成功 :(。总是得到相同的权限被拒绝错误 :(。

现在,我想知道 chsh 做了什么,导致我即使在更改了 上的条目后也无法登录/etc/passwd。另外,我如何恢复以前的 shell ( /bin/tcsh)

谢谢。

答案1

以 root 身份登录并使用:

chpass username

您将进入一个包含用户设置的 vi 缓冲区。将 shell 更改为 /bin/tcsh,一切就绪了。

至于为什么这些设置实际上是密码保护./etc/passwd 是从该文件生成的。 阅读精细手册了解更多信息。

相关内容