安装 Linux ubuntu 时,默认设置为 bash shell。但您是否知道其实可以使用其他 shell 吗?
在 Linux 中创建新用户时,可以指定用户的默认 shell。此时使用的选项是 useradd
命令的 -s
选项。对于已经创建的用户,也可以使用 usermod -s 命令进行更改。
本文将整理可通过 useradd
的 -s
选项使用的主要 shell 及其特点,以及如何查看当前系统可用的 shell 列表。
1. 主要 Shell 类型和特点
Shell 路径 | Shell 名称 | 特点 |
---|---|---|
/bin/bash |
Bash | 最广泛使用的标准 shell。提供命令编辑、自动补全功能、脚本编写等多种功能。 |
/bin/sh |
Bourne Shell | 轻量化并提供最少功能。主要用于脚本和限制环境。 |
/bin/zsh |
Z Shell (Zsh) | Bash 的扩展版。提供出色的自动补全功能和自定义功能。最近人气急剧上升。 |
/bin/ksh |
Korn Shell | 广泛用于商业环境中的 shell。强调速度和效率。 |
/usr/bin/fish |
Fish Shell | 因其直观的用法和强大的自动补全功能而推荐给初学者的 shell。 |
/usr/sbin/nologin 或 /bin/false |
无法登录的 shell | 用于直接阻止登录。常用于创建系统账户或服务账户。 |
2. 检查当前系统中可用的 Shell
当前系统中可用的 shell 列表存储在 /etc/shells
文件中。可以使用以下命令进行确认。
cat /etc/shells
输出示例:
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
仅可使用列在该文件中的 shell 作为 useradd
命令的 -s
选项。
3. 精确确认 nologin Shell 路径
要确认系统中用于登录阻止的 shell (nologin
) 的确切位置,请使用以下命令。
which nologin
输出示例:
/usr/sbin/nologin
由于不同系统可能有所不同,因此建议一定要确认。
4. 使用案例示例
添加使用 Bash Shell 的用户
sudo useradd -m -s /bin/bash username
添加使用 Zsh Shell 的用户
sudo useradd -m -s /bin/zsh username
添加无法登录的系统用户
sudo useradd -r -s /usr/sbin/nologin username
示例:更改现有用户的 shell:
sudo usermod -s /usr/sbin/nologin username
确认更改结果的命令:
cat /etc/passwd | grep username
正常输出示例:
username:x:1004:1004::/home/django:/usr/sbin/nologin
现在明确理解 useradd
的 -s
选项和可用的 shell,以正确的 shell 设置安全管理账户!
目前没有评论。