文章目录
一、用户管理和组管理
在 Linux 系统中,用户(User) 和组(Group) 是权限管理的核心机制,用于控制用户对文件、目录及系统资源的访问权限,确保系统安全和有序管理。
1.1 用户(User)的概念
用户是 Linux 系统中访问资源的基本单位,每个用户通过唯一的用户 ID(UID) 被系统识别(用户名是 UID 的人性化标识)。
- 用户的分类
- 超级用户(root):
UID 固定为 0,拥有系统最高权限, 可操作所有文件和命令(如修改系统配置、管理其他用户等),是系统管理员的核心账号。 - 系统用户(System User):
由系统自动创建,用于运行服务或进程(如数据库、Web 服务器),通常不允许登录系统。
UID 范围一般为 1~999(不同 Linux 发行版可能略有差异), 例如mysql用户用于运行 MySQL 服务。 - 普通用户(Regular User):
由管理员创建,用于日常操作,权限受限制(仅能访问自己的文件和被授权的资源)。
UID 范围通常从 1000 开始, 例如user1、student等。
- 用户的核心文件
/etc/passwd
:存储所有用户的基本信息(用户名、UID、所属组 GID、主目录、登录 shell 等),格式如下:
root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:user1:/home/user1:/bin/bash
(x表示密码存储在/etc/shadow中)
/etc/shadow
:存储用户密码(加密形式)及密码有效期等安全信息,仅 root 可访问。
1.2 组(Group)的概念
组是多个用户的集合,用于批量管理权限。通过将用户加入组,用户可继承组的权限,避免对每个用户单独配置权限,提高管理效率。
- 组的分类
- 基本组(Primary Group):
- 用户默认所属的组,创建用户时自动生成(通常与用户名同名),用户的文件默认归属于基本组。
- 在/etc/passwd中记录为用户的 GID(组 ID)。
- 附加组(Supplementary Group):
- 用户可额外加入的组,用于获取更多权限(一个用户可属于多个附加组)。
- 组的核心文件
/etc/group
:存储所有组的信息(组名、组密码占位符、GID、组内用户列表),格式如下:
root:x:0:
sudo:x:27:user1,admin
user1:x:1000:
(sudo组中的用户可通过sudo命令获取临时管理员权限)
1.3 用户与组的关系
- 一个用户必须属于一个基本组,可以同时属于多个附加组。
- 用户的权限 = 自身权限 + 所属所有组(基本组 + 附加组)的权限总和。
- 组的主要作用是简化权限分配:例如,将多个用户加入develop组,然后给develop组授予项目目录的访问权限,所有组内用户自动获得该权限。
1.4 常用管理命令
用户常用管理命令:
- useradd:创建用户
- /etc/passwd:查看用户信息文件
- passwd:设置用户密码
- /etc/shadow:查看用户密码文件
- usermod:修改用户属性
- userdel:删除用户信息
上述命令详细解释详见链接
组常用管理命令:
- groupadd:新建组
- id:查看系统用户和用户所在组的信息
- /etc/group:组信息文件
- /etc/gshadow:组密码文件
- groupmod:修改组属性
- gpasswd:组管理命令
- groupdel:删除组
上述命令详细解释详见链接
二、权限管理
Linux 的权限管理是保障系统安全的核心机制,通过精细控制用户对文件 / 目录的访问权限(读、写、执行),确保资源被合法使用。其核心逻辑是:针对每个文件 / 目录,分别为「所有者」「所属组」「其他用户」三类主体分配不同权限。
2.1 权限的基本构成
1. 三类权限主体
Linux 中,每个文件 / 目录的权限针对以下三类主体设置:
- u(User,所有者):创建文件 / 目录的用户(可通过 chown 修改)。
- g(Group,所属组):文件 / 目录归属的组(可通过 chgrp 修改),组内用户共享该组权限。
- o(Others,其他用户):既不是所有者,也不属于所属组的用户。
2. 三种基础权限
每种主体可拥有以下三种权限(分别对应读、写、执行):
权限字符 | 含义(文件) | 含义(目录) | 对应数字 |
---|---|---|---|
r |
读取文件内容(如 cat ) |
列出目录内文件(如 ls ) |
4 |
w |
修改文件内容(如 vim ) |
创建/删除/重命名目录内文件 | 2 |
x |
执行文件(如脚本、程序) | 进入目录(如 cd ) |
1 |
- |
无对应权限 | 无对应权限 | 0 |
2.2 权限的表示方式
权限通常有两种表示方式:字符模式和数字模式,用于直观展示或修改权限。
1. 字符模式(9 位字符)
用 9 个字符表示三类主体的权限(每 3 位一组,依次对应 u g o)。例如:
- rwxr-xr–:
- 所有者(u):rwx(读、写、执行)
- 所属组(g):r-x(读、执行,无写权限)
- 其他用户(o):r–(只读)
2. 数字模式(3 位数字)
将每组权限的数字值相加,得到 3 位数字(依次对应 u g o)。例如:
- rwxr-xr-- 对应数字:
- u:4+2+1=7,g:4+0+1=5,o:4+0+0=4 → 总数字 754。
2.3 权限管理的常用命令
- chomd:权限管理
- umask:预设权限,
- chown:归属关系管理
上述命令详细解释详见链接
PS: 关于umask内容的相关补充:
umask的核心作用是标准化新文件 / 目录的初始权限,通过预先定义需要去除的权限,避免手动修改每个新创建文件的权限,同时减少因权限过高导致的安全风险。系统默认的 umask 通常为 002(普通用户)或 022(root 用户)。
- 基本原理
- 默认最大权限
Linux 对新创建的文件和目录有预设的 “最大可能权限”:- 文件:默认最大权限为 666(即 -rw-rw-rw-,无执行权限,防止误执行脚本)。
- 目录:默认最大权限为 777(即 drwxrwxrwx,目录需要执行权限才能进入)。
- umask 的作用
umask 定义了需要去除的权限(掩码值),计算方式为:
- 默认最大权限
新文件实际权限 = 文件最大权限(666) - umask 值
新目录实际权限 = 目录最大权限(777) - umask 值
- 常见umask值及用途
umask 值 | 新文件权限 | 新目录权限 | 适用场景 |
---|---|---|---|
000 |
666 |
777 |
完全开放(仅测试环境使用) |
002 |
664 |
775 |
允许同组用户读写(团队协作) |
022 |
644 |
755 |
限制同组和其他用户的写权限 |
077 |
600 |
700 |
仅所有者可访问(高安全性) |
2.5 特殊权限
特殊权限作为了解知识,感兴趣可以查看链接