OpenWrt的默认外壳为ash
,但我想将其更改为fish
。
当我运行chsh -s /usr/bin/fish
(fish
的绝对路径时,它返回了-ash: chsh: not found
。
我从[]更改了/etc/passwd
的第一行:
root:x:0:0:root:/root:/bin/ash
至:
root:x:0:0:root:/root:/usr/bin/fish
我无法再次登录(密码错误,并且系统日志显示:
authpriv.warn dropbear[14288]: User 'root' has invalid shell, rejected
还有其他方法可以更改默认外壳吗?
(顺便说一下,我使用的是a popular fork of OpenWrt而不是the official,但这似乎不是此问题的原因)
有两种解决方法。您可以:
/usr/bin/fish
添加到/etc/shells
此解决方案由上面的@glenn-jackman在注释中提供。
或:
dropbear
替换openssh-server
我想出了另一种方法:如果您碰巧安装了openssh-server
,建议您选择use it as default following this tutorial。
并且记住将/ etc / passwd的第一行更改为:
root:x:0:0:root:/root:/usr/bin/fish