在 Linux 系统的运维工作中,账号与权限管理是保障系统安全的第一道防线。Linux 通过严谨的账号分类、权限机制和配置文件,实现了对用户操作的精细化管控。
一、先搞懂:Linux 账号体系的底层逻辑
Linux 是一个多用户、多任务的操作系统,每一个能登录系统的用户,都对应着一个唯一的账号。这些账号不是孤立存在的,而是通过'用户 - 组'的关联方式,实现权限的批量管理。
1. 用户账号的三种类型
Linux 里的用户账号主要分为三类,各自的权限和用途完全不同:
超级用户(root):这是系统的'管理员账号',拥有对整个系统的最高权限,可以执行任何操作,比如删除系统文件、修改核心配置。它就像 Windows 里的 Administrator 账号,但权限更大。日常操作中我们应该避免直接用 root 登录,否则一个误操作就可能导致系统崩溃。
普通用户:这类账号需要由 root 或其他管理员创建,权限受到严格限制。普通用户只能在自己的'家目录'(如 /home/zhangsan)里拥有完整的读写权限,对系统其他目录的访问则需要额外授权。
程序用户:这类账号并不是给人用的,而是给系统服务或程序运行时使用的,比如 nginx、mysql 账号。它们通常不能登录系统,主要作用是让服务以最低权限运行,避免程序漏洞被黑客利用后获取系统最高权限。
2. 组账号:批量管理权限的利器
为了更高效地管理用户权限,Linux 引入了'组账号'的概念。我们可以把多个用户加入同一个组,然后给这个组设置权限,组里的所有用户都会自动继承这些权限。
基本组:每个用户创建时,系统会自动创建一个和用户名同名的组,这个组就是该用户的基本组。用户的文件默认都会归属到这个基本组。
附加组:除了基本组,用户还可以被加入其他组,这些组就叫附加组。比如技术部的员工 zhangsan,基本组是 tech,后来因为工作需要被加入邮件管理员组 mailadm,那么 mailadm 就是他的附加组。
3. UID 与 GID:系统识别用户的'身份证'
在 Linux 系统内部,其实并不是通过用户名来识别用户的,而是通过数字形式的 UID(用户标识号)和 GID(组标识号)。
UID 规则:root 用户的 UID 固定为 0,程序用户的 UID 默认在 1~499 之间,普通用户的 UID 则从 500 开始分配。
GID 规则:和 UID 对应,root 组的 GID 固定为 0,程序组的 GID 默认在 1~499 之间,普通组的 GID 从 500 开始分配。
二、核心配置文件:账号信息的'数据库'
Linux 的账号信息都保存在几个核心配置文件里,理解这些文件的结构,是深入掌握账号管理的基础。
1. /etc/passwd:用户基本信息文件
这个文件里保存了所有用户的基本信息,包括用户名、UID、GID、家目录等,任何用户都可以读取它的内容。每一行对应一个用户,用冒号 : 分隔成 7 个字段:
- 用户名:登录系统时使用的名称,如
root、zhangsan。 - 密码占位符:这里默认显示
x,表示密码已经被加密并转移到/etc/shadow文件中。 - UID:用户的唯一标识号。
- GID:用户所属基本组的标识号。
- 用户说明:可以填写用户的全名或备注信息。
- 家目录:用户登录后的默认工作目录,普通用户一般是
/home/用户名。 - 登录 Shell:用户登录后使用的命令解释器,默认是
/bin/bash,如果设置为/sbin/nologin则表示该用户不能登录系统。


