如何检查 Linux 中特定用户的 shell 是否设置

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Linux 系统中查看特定用户的默认 shell。shell 是处理你输入命令的命令行解释器,不同用户可以有不同的默认 shell。

你将通过查看 /etc/passwd 文件来确定用户的默认 shell,了解如何使用 chsh -l 命令列出系统上可用的 shell,并使用 getent passwd 命令验证用户的 shell 信息。本实验为你理解 Linux 系统中的用户配置提供基础知识。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/help -.-> lab-558766{{"如何检查 Linux 中特定用户的 shell 是否设置"}} linux/man -.-> lab-558766{{"如何检查 Linux 中特定用户的 shell 是否设置"}} linux/cat -.-> lab-558766{{"如何检查 Linux 中特定用户的 shell 是否设置"}} end

使用 cat /etc/passwd 查看用户 shell

在这一步中,你将学习如何在 Linux 系统中查看用户的默认 shell。shell 是处理你输入命令的命令行解释器,不同用户可以有不同的默认 shell。

/etc/passwd 文件包含了系统中所有用户的信息。该文件中的每一行代表一个用户,各字段之间用冒号 (:) 分隔。每行的最后一个字段指定了用户的默认 shell。

我们可以使用 cat 命令来显示 /etc/passwd 文件的内容。

如果终端尚未打开,请打开它。记住,你可以在桌面左侧找到 Xfce Terminal 图标。

现在,输入以下命令并按回车键:

cat /etc/passwd

这个命令会将 /etc/passwd 文件的全部内容打印到你的终端上。你会看到很多行,每行对应系统中的一个用户账户。

找到以 labex: 开头的行,这是你当前用户的条目。该行内容大致如下(部分内容可能会有所不同):

labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh

各字段含义如下:

  1. 用户名: labex
  2. 密码占位符: x(为了安全起见,实际的密码哈希值存储在其他地方)
  3. 用户 ID (UID): 5000
  4. 组 ID (GID): 5000
  5. 用户信息 (GECOS): LabEx user,,,
  6. 主目录: /home/labex
  7. 默认 shell: /usr/bin/zsh

在这种情况下,labex 用户的默认 shell 是 /usr/bin/zsh。这证实了你当前使用的终端确实是 zsh

理解 /etc/passwd 文件是 Linux 系统管理的基础。它提供了一种快速获取用户基本信息的方法,包括他们的默认 shell 和主目录。

点击 继续 进入下一步。

使用 chsh -l 列出可用的 shell

在上一步中,你已经知道了你的默认 shell 是 /usr/bin/zsh。但这个系统上还有哪些其他的 shell 可用呢?

Linux 系统通常会安装多个 shell。你可以使用 chsh 命令加上 -l 选项来列出可用的 shell。

chsh 命令通常用于更改用户的登录 shell,而 -l 选项可以让你列出 /etc/shells 文件中记录的 shell。这个文件包含了系统上有效的登录 shell 列表。

在你的终端中,输入以下命令并按下回车键:

chsh -l

这个命令会输出一个路径列表,每个路径代表系统上一个可用的 shell。输出内容大致如下:

/bin/sh
/bin/bash
/usr/bin/rc
/usr/bin/rbash
/usr/bin/nologin
/bin/false
/usr/bin/zsh
/usr/bin/ksh
/usr/bin/dash

你可以在这个列表中看到 /usr/bin/zsh,这证实了它是这个系统上一个有效的 shell。你可能还会看到其他常见的 shell,比如 /bin/bash(Bourne Again SHell)和 /bin/sh(Bourne SHell)。

了解哪些 shell 可用在你需要更改默认 shell 或者遇到为特定 shell 编写的脚本时会很有用。

点击 继续 进入下一步。

使用 getent passwd 验证 shell

在前面的步骤中,你学习了如何直接查看 /etc/passwd 文件以及列出可用的 shell。现在,让我们使用另一个命令 getent 来获取用户信息,包括 shell 信息。

getent 命令是一个实用工具,用于从名称服务切换(Name Service Switch,NSS)数据库中获取条目,这些数据库可以包括 /etc/passwd/etc/group 等。与直接读取 /etc/passwd 相比,它是一种更标准化的获取用户信息的方式,因为它还可以查询基于网络的用户数据库。

要从 passwd 数据库中获取 labex 用户的条目,请在终端中输入以下命令并按回车键:

getent passwd labex

这个命令专门从 passwd 数据库中请求 labex 用户的条目。输出将类似于你使用 cat /etc/passwd 时看到的那一行:

labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh

同样,最后一个字段 /usr/bin/zsh 确认了 labex 用户的默认 shell。

在脚本中或者查询可能使用集中式认证系统(如 LDAP)而非仅使用本地文件的系统时,通常更倾向于使用 getent。对于本地系统的简单检查,cat /etc/passwdgetent passwd <username> 都可以使用。

你现在已经成功使用了三种不同的方法来了解 Linux 中的用户 shell:直接查看 /etc/passwd、使用 chsh -l 列出可用的 shell 以及使用 getent 查询用户信息。

点击 继续 完成本次实验。

总结

在本次实验中,你学习了如何在 Linux 中查看用户的默认 shell。你使用了 cat /etc/passwd 命令来显示用户信息,特别关注了每行的最后一个字段,该字段表示默认 shell。通过检查 /etc/passwd 文件的结构,这种方法为识别系统上任何用户所配置的 shell 提供了一种直接的方式。