我们可以在单个 Linux/Unix 发行版上为不同用户配置不同的 shell 吗?

我们可以在单个 Linux/Unix 发行版上为不同用户配置不同的 shell 吗?

好吧,这不是我想做的事情,但我问这个问题是为了了解更多有关 Unix/Linux 系统中 Shell 配置的信息。所以,我想要答案的情况如下:

由于 Unix/Linux 系统提供了不同的 shell,因此我们可以为每个有权访问系统的用户配置不同的 shell。因此,假设 Tom、Dick 和 Harry 是 3 个被授权使用系统“Unix”的用户,而我希望“Tom”使用 shell, 迪克使用tcsh和哈利使用巴什壳。我怎样才能做到这一点,这可能吗?

答案1

首先,有效的 shell 列在 中/etc/shells。任何用户都可以使用文件chsh中的 long 来更改其默认 shell /etc/shells

其次,如果你想添加一个 shell /etc/shells,如果你从那里删除一个条目,特别是 /bin/sh,你可能会搞砸系统,因为/bin/login通常不会启动未在那里列出的 shell。

更多信息请参见chsh(1),登录名.defs(5),以及密码(5) 手册页。

这种能力已经存在很长时间了(我相信BSD 4.x)

答案2

是的,不同的用户可以有不同的 shell 设置。您可以使用例如命令来更改它们chsh。要将当前用户的 shell 更改为 bash(假设它位于 /bin/bash 中):

chsh -s /bin/bash [username]

您还可以/etc/passwd手动修改文件并更改为该用户指定 shell 的部分。例如:

root:*:0:0:System Administrator:/var/root:/bin/sh

/etc/passwd 的每一行中的最后一部分(在最后一个之后)与上面的行类似,:指定该用户的 shell。

答案3

您可以使用chsh

chsh -s /bin/sh user_name

相关内容