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


