![我们可以在单个 Linux/Unix 发行版上为不同用户配置不同的 shell 吗?](https://linux22.com/image/38488/%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%8D%95%E4%B8%AA%20Linux%2FUnix%20%E5%8F%91%E8%A1%8C%E7%89%88%E4%B8%8A%E4%B8%BA%E4%B8%8D%E5%90%8C%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%20shell%20%E5%90%97%EF%BC%9F.png)
好吧,这不是我想做的事情,但我问这个问题是为了了解更多有关 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