尝试更改默认shell时,/ etc / passwd中不存在用户
我想将我的默认shell从tcsh更改为bash。 所以我试过,这就是发生的事情:
>sudo chsh userid Changing the login shell for userid Enter the new value, or press ENTER for the default Login Shell [/xhbin/tcsh]: /bin/bash chsh: user 'userid' does not exist in /etc/passwd
确实,我不在/ etc / passwd中。 我不知道为什么。
我能做什么?
我的计算机是使用分布式身份validation的网络的一部分,因此我的用户详细信息不会出现在本地/ etc / passwd文件中(但使用getent passwd userid可见)。 (感谢@steeldriver)在我的情况下,我不得不在核心机器上执行chsh。
gnome-terminal
有一个解决方法:
- 转到编辑 – > 配置文件首选项 – > 标题和命令
- 选中运行自定义命令而不是我的shell
- 提供
bash
作为自定义命令 (或fish
,或任何东西)
如果要为用户更改shell,则无需成为root用户。 只需输入:
chsh
没有sudo
和没有参数。
另见man chsh
:
chsh命令更改用户登录shell。 这决定了名称 用户的初始登录命令。 普通用户只能更改 登录shell为她自己的帐户 ; 超级用户可以更改登录 任何帐户的shell。
如果您使用PAM或其他东西进行LDAP身份validation,则必须在LDAP服务器中找到答案,我们的目标是针对Microsoft AD,在这种情况下,当您登录时,您的域帐户不在/ etc / passwd中,但您可以看到您在AD中的用户属性,通过#getent passwd | grep用户,如果最后它显示你的shell是/ bin / csh,那是因为在你的AD中有一个属性,所以id你在AD上有管理员帐号,你可以自己解决它,否则就把它告诉你的AD admin,在Active Directory用户和计算机的“查看”选项卡中启用高级function>用户属性> UNIX属性>将登录shell更改为/ bin / bash
确保你没有忘记:sudo / opt / pbis / bin / config LoginShellTemplate / bin / bash
如果你同样使用或……
如果您忘记了用户名,可以使用whoami
命令记住您。
所以,尝试:
sudo chsh $(whoami)
如果确实不存在以/etc/passwd
文件中的用户名开头的行(这似乎是无法解释的),您可以添加一个这样的新行:
用户名 :x:1000:1000: 您的真实姓名 ,,,:/ home / username :/ bin / bash
另请参阅: 了解/ etc / passwd文件格式 。