如何将所有用户的默认shell更改为bash?


38

我希望从现在开始,每个新用户都默认将bash作为其外壳。

我知道要将自己的shell更改为bash,可以使用命令“ chsh -s / bin / bash”,但是默认情况下如何自动将所有将来用户的shell设置为bash?

Answers:


63

添加用户

adduser默认文件/etc/adduser.conf。默认情况下,DSHELL变量定义的默认外壳程序是/bin/bash

用户添加

您很有可能不需要此功能,因为useradd是一个非常低级的实用程序,几乎从未直接使用过。

如果您使用useradd,请编辑/etc/default/useradd框架文件(不过请不要忘记进行备份)。

SHELL变量设置为/bin/bash而不是/bin/sh

现在,每次您useradd用来添加新用户时bash,它们的默认外壳都会自动出现。

已经存在的用户

如果要更改现有用户的外壳,则必须编辑/etc/passwd文件(请确保备份了该文件)。

这是各列的说明

  1. 登录名
  2. 可选的加密密码
  3. 数字用户ID
  4. 数字组ID
  5. 用户名或评论字段
  6. 用户主目录
  7. 可选的用户命令解释器

像这样用冒号(:)分隔。

root:x:0:0:root:/root:/bin/bash

有关该文件的更多信息,请参考手册页man 5 passwd


4
我认为更安全的方式来更改另一个用户的外壳将类似于sudo -u $USER chsh -s $SHELL
Jack O'Connor

1
@ JackO'Connor您也应该将其发布为答案。
Octavian Damiean

在Ubuntu 16.04中似乎无法正常工作。有谁知道解决办法。
Harshdeep

26

正如Octavian所指出的,更改默认值的方式取决于您创建用户的方式。我刚刚尝试通过我的Gnome设置创建一个新用户,并且似乎遵循/etc/default/useradd,所以这可能是最好的选择。对于现有用户,更改其他人的登录shell的最安全方法是使用usermod

usermod -s /bin/bash $USERNAME

如果您不是root用户,则需要对其进行sudo。另一种方法是对要修改的用户使用sudo,然后仅运行chsh,如下所示:

sudo -u $USERNAME chsh -s /bin/bash

最好避免/etc/passwd手动编辑,因为其中的错误可能会破坏各种情况。


1

如果您实际上希望服务器上的所有用户都使用bash(这是实际提出的问题),则可以运行以下命令:

sudo dpkg-reconfigure dash

然后选择“不破折号”。如该答案中所述,

如何使/ bin / sh指向/ bin / bash?

这不仅将bash设置为默认外壳,而且正确地指向了sh和手册页。

希望这可以帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.