如何让一个用户的 SSH 体验与另一个用户的相同

如何让一个用户的 SSH 体验与另一个用户的相同

我创建了一个新的 Ubuntu 服务器。当我以 root 身份通过 SSH 登录时,我看到:

root@server:

我创建了一个用户。当我以新用户身份通过​​ SSH 登录时,我看到:

$

当我以 root 身份按下向上箭头键时,我会看到我输入的最后一个命令。当我以新用户身份按下向上箭头键时,我会看到:

$^[[A

删除操作按 root 身份正常运行。作为新用户,删除键插入:

^[[3~

LS 为 root 用户提供颜色编码结果,而为新用户提供无颜色。还存在其他小烦恼。

我假设某个地方有一个针对 root 的配置文件,其中设置了所有这些内容。我如何将这些 UI 细节也应用于我创建的新用户?

答案1

您的新用户没有与您的 root 用户相同的 shell。

以 root 身份打开/etc/passwd

找到你的 root 用户行。它位于顶部附近,如下所示:

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

/bin/bash 部分很重要。

现在找到你的新用户。他们可能/bin/sh和 root 位于同一个位置/bin/bash

替换/bin/sh/bin/bash,然后以新用户身份再次登录。这样应该可以解决问题。

/bin/bash要使所有用户永久使用默认 shell ,请以 root 身份执行以下操作:

useradd -D -s /bin/bash

useradd -D您可以通过键入并观察 的值来验证此项已设置SHELL= line

答案2

为了确保每个人都获得相似的用户体验,您必须执行两个步骤:

  1. 骨架/配置文件
    • 编辑或替换 shell 骨架文件 (/etc/skel) 为你想要的新的用户获得
    • 手动复制已添加用户的骨架文件。确保将文件的所有权分配给用户,以便他们自己进行更改!
    • 编辑 /etc/default/useradd 以确保每个新用户都使用你希望他们使用的 shell
  2. 更改当前用户使用的 shell。有两种方法:
    • 推荐一个:chsh -s /path/to/shell username. cat /etc/shells 查看你的系统有哪一个
    • 另外推荐一个:usermod -s /path/to/shell username
    • 绝对不推荐的是:vipw您以这种方式直接编辑用户数据库。在错误的地方删除一个角色,您就会被锁定。我们警告您。

关于 vipw 的一个相关提示 - 许多人不知道如何使用 vi。除了为了使用 vipw 而学习它之外,您还可以在启动 vipw 之前在环境中导出不同的编辑器。示例:

# export EDITOR=nano
# vipw

然后这将通过 nano 启动 vipw 包装器

答案3

对于 useradd,您不想每次创建新用户时都这样做,您可以这样做“

编辑 /etc/default/useradd 框架文件(但不要忘记备份)。

将 SHELL 变量编辑为 /bin/bash 而不是 /bin/sh。

现在,每次使用 useradd 添加新用户时,bash 都会自动成为他们的默认 shell。“如果要更改现有用户的 shell,则必须编辑 /etc/passwd 文件(请确保备份该文件)。

相关内容