Answers:
我的计算机是使用分布式身份验证的网络的一部分,因此我的用户详细信息不会显示在本地/ etc / passwd文件中(但使用getent passwd userid可以看到)。(感谢@steeldriver)对于我来说,我必须在核心计算机上执行chsh。
如果您正在通过PAM或其他方式使用LDAP身份验证,则必须在LDAP服务器中找到答案。让我们将其针对Microsoft AD,在这种情况下,/etc/passwd
登录时您的域帐户未登录,但是您可以通过看到您在AD中的用户属性getent passwd | grep user
。
如果最后显示您的shell是/bin/csh
,那是因为在您的广告中有一个属性。因此,如果您在AD上拥有管理员帐户,则可以自己进行修复。否则,只需告诉您的AD管理员在Active Directory用户和计算机的“ 视图”选项卡中启用高级功能>用户属性> UNIX属性即可。在那里,您可以将登录shell更改为/bin/bash
。
确保您不要忘记运行:
sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash
如果要为用户更改外壳程序,则无需成为root用户。只需输入:
chsh
没有sudo
和没有参数。
另请参阅man chsh
:
chsh命令更改用户登录外壳。这决定了名字 用户的初始登录命令。普通用户只能更改 用自己的帐户登录shell ; 超级用户可以更改登录名 任何帐户的外壳。
> whoami userid > chsh You may not change the shell for 'userid'.
如果忘记了用户名,则可以使用whoami
command来记住您。
因此,尝试:
sudo chsh $(whoami)
如果确实存在,则在/etc/passwd
文件中不存在以您的用户名开头的行(这似乎是无法解释的),您可以添加一个新的行,如下所示:
用户名:x:1000:1000:您的真实姓名 ,,,:/ home / 用户名:/ bin / bash
另请参阅:了解/ etc / passwd文件格式。
getent passwd <userid>
)。我认为chsh
在这种情况下是否支持运行可能取决于/etc/pam.d/