尝试更改默认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有一个解决方法:

  1. 转到编辑 – > 配置文件首选项 – > 标题和命令
  2. 选中运行自定义命令而不是我的shell
  3. 提供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

如果你同样使用或……

完成了! http://fereidonian.net/?p=52

如果您忘记了用户名,可以使用whoami命令记住您。

所以,尝试:

 sudo chsh $(whoami) 

如果确实不存在以/etc/passwd文件中的用户名开头的行(这似乎是无法解释的),您可以添加一个这样的新行:

  用户名 :x:1000:1000: 您的真实姓名 ,,,:/ home / username :/ bin / bash 

另请参阅: 了解/ etc / passwd文件格式 。

Interesting Posts