简介
在这个实验中,你将学习如何在 Linux 系统中查看特定用户的默认 shell。shell 是处理你输入命令的命令行解释器,不同用户可以有不同的默认 shell。
你将通过查看 /etc/passwd
文件来确定用户的默认 shell,了解如何使用 chsh -l
命令列出系统上可用的 shell,并使用 getent passwd
命令验证用户的 shell 信息。本实验为你理解 Linux 系统中的用户配置提供基础知识。
在这个实验中,你将学习如何在 Linux 系统中查看特定用户的默认 shell。shell 是处理你输入命令的命令行解释器,不同用户可以有不同的默认 shell。
你将通过查看 /etc/passwd
文件来确定用户的默认 shell,了解如何使用 chsh -l
命令列出系统上可用的 shell,并使用 getent passwd
命令验证用户的 shell 信息。本实验为你理解 Linux 系统中的用户配置提供基础知识。
在这一步中,你将学习如何在 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
各字段含义如下:
labex
x
(为了安全起见,实际的密码哈希值存储在其他地方)5000
5000
LabEx user,,,
/home/labex
/usr/bin/zsh
在这种情况下,labex
用户的默认 shell 是 /usr/bin/zsh
。这证实了你当前使用的终端确实是 zsh
。
理解 /etc/passwd
文件是 Linux 系统管理的基础。它提供了一种快速获取用户基本信息的方法,包括他们的默认 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 编写的脚本时会很有用。
点击 继续 进入下一步。
在前面的步骤中,你学习了如何直接查看 /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/passwd
和 getent passwd <username>
都可以使用。
你现在已经成功使用了三种不同的方法来了解 Linux 中的用户 shell:直接查看 /etc/passwd
、使用 chsh -l
列出可用的 shell 以及使用 getent
查询用户信息。
点击 继续 完成本次实验。
在本次实验中,你学习了如何在 Linux 中查看用户的默认 shell。你使用了 cat /etc/passwd
命令来显示用户信息,特别关注了每行的最后一个字段,该字段表示默认 shell。通过检查 /etc/passwd
文件的结构,这种方法为识别系统上任何用户所配置的 shell 提供了一种直接的方式。