安装 Linux ubuntu 后,bash shell 是默认设置。但你知道实际上可以使用其他 shell 吗?

在 Linux 中创建新用户时,可以指定用户的默认 shell。此时使用的选项是 useradd 命令的 -s 选项。如果是已创建的用户,可以使用 usermod -s 命令进行更改。

本文将整理 useradd-s 选项可以使用的主要 shell 和各自的特点,以及如何查看当前系统中可用 shell 的列表。

考虑选择不同 shell 的 useradd -s 选项的开发者


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!