用户与组详解

LinuxBeginner
立即练习

简介

在本实验中,你将学习如何了解 Linux 系统中有哪些「人」。

可以把它想象成一栋公寓楼:

  • 用户:租户。
  • 组:访问名单(健身房组、游泳池组)。

系统会维护一份记录所有人的「总目录」。在本实验中,我们将打开这份目录。

Linux 从 Unix 继承了强大的多用户设计。即使在一个小型实验系统中,表面上只有你一个人在操作,操作系统仍然会根据账户、组、所有权和受控访问来管理系统。

查看用户列表(/etc/passwd)

用户的「总目录」是 /etc/passwd。

可以把这个文件看作一个电子表格。各列使用冒号 : 分隔。

过去,/etc/passwd 确实是类 Unix 系统中的核心账户数据库之一。现代系统对密码的处理比早期更加安全,但账户记录结构仍然是 Linux 身份管理的基础。

查看该文件:

cat /etc/passwd

输出示例:

root:x:0:0:root:/root:/bin/bash
labex:x:5000:5000::/home/labex:/usr/bin/zsh
...

下面解析 labex:x:5000:5000::/home/labex:/usr/bin/zsh:

  1. 用户名:labex
  2. 密码:x(存储在其他位置)
  3. 用户 ID(UID):5000
  4. 组 ID(GID):5000
  5. 信息:(空)
  6. 主目录:/home/labex
  7. Shell:/usr/bin/zsh

这些字段与本课程后续内容直接相关,包括身份、主组成员关系、主目录,以及登录后启动的 Shell。

识别 root 用户(UID 0)

root 用户就像公寓管理员,拥有所有区域的钥匙。

查找 root 条目:

grep "^root" /etc/passwd

输出:

root:x:0:0:root:/root:/bin/bash

UID 是第 3 个字段,其值为 0。在 Linux 中,UID 0 表示不受限制的权限。

因此,Linux 权限通常既使用数字身份来讨论,也使用名称来讨论。名称便于人类理解,但系统内部会密切关注 ID。

识别你的用户

查找你自己的条目(labex):

grep "^labex" /etc/passwd

输出:

labex:x:5000:5000::/home/labex:/usr/bin/zsh

你的 UID 是 5000。

你的主目录是 /home/labex。

检查组(id)

/etc/passwd 只列出你的主组。要查看你拥有的全部「访问凭证」,请使用 id。

id

输出:

uid=5000(labex) gid=5000(labex) groups=5000(labex),27(sudo)...

这就是你的身份卡:

  • uid:当前用户。
  • gid:主组。
  • groups:所属的所有组。

你属于 sudo 组(ID 为 27)。这使你可以执行 root 的操作!

组成员关系是 Linux 管理共享访问权限的主要方式之一。系统不必为每个用户逐一授予所有权限,而是可以将用户分配到组,然后为这些组应用规则。

总结

在本实验中,你探索了 Linux 系统中的「人物关系」。你学习了:

  • 用户定义在 /etc/passwd 文件中。
  • UID 0 属于 root,即系统管理员(公寓管理员)。
  • 在本系统中,UID 5000 分配给你的用户账户。
  • 组控制对共享资源的访问。
  • id 命令显示你的完整身份信息,包括你所属的、可以作为「钥匙」使用的组。

理解这些身份非常重要,因为 Linux 中的每项权限——谁可以读取文件或运行程序——都建立在这些 ID 的基础上。