WA学习-00-系统是怎么工作的-域名+权限
写在最前面:
最近因为一些工作上的原因,决定继续学习WA相关的内容。同时也回想了一下,之前学习过程中,各种放弃、失败的经历;但事物总是要往前发展的,无论是以什么形式。所以痛定思痛,把之前网上找到能够激励自己的一些话,又读了一遍。并且借助大模型,建立了一些新的学习方法。总的来说,还是希望自己能坚持吧。
其中,浙大翁恺老师:“计算机的所有东西都是人做出来的,别人能想得出来的,我也一定能想得出来。在计算机里头没有任何黑魔法,所有的东西只不过是我现在不知道而已,总有一天我会把所有细节、所有内部的东西全都搞明白的”。
scz老师:《你尽力了吗?》
相关工具如下:
书籍:《计算机原理》--谢希仁,第八版
MD文档撰写:Obsidian
集成开发环境IDE:VS Code
WA相关工具:BurpSuite等
错误排查工具:DS V4 Flash、GLM 5.3 Flash等大模型工具
学习资源:自行寻找
本记录撰写时间:2026.09.22;使用ds进行相关格式修改
----以下为正文----
一、浏览器是如何访问网站的?
Q: Alice 如果想要在自家访问 XX 系统,在整个互联网的角度上,是怎么实现的呢?
例: 如果 XX 系统 URL 为
https://www.example.com/page,会发生什么呢?
(一)URL 拆解
整个 URL 可以拆分为三部分:
| 组成部分 | 示例值 | 含义 |
|---|---|---|
| 协议 | https |
使用的通信协议 |
| 域名 | www.example.com |
服务器的可读地址 |
| 路径 | /page |
服务器上的具体资源路径 |
(二)DNS 解析:把域名翻译成 IP
Alice 在浏览器输入 URL 后,计算机无法直接通过域名找到服务器,必须先借助 DNS 解析(Domain Name System,域名解析系统),把域名“翻译”为具体的 IP 地址。
1、解析流程
(1)本地查询
- 浏览器缓存
- 操作系统缓存
hosts文件
(2)本地未命中,向附近 DNS 服务器请求解析
(3)逐级向上查询- 根域名服务器
- 顶级域名服务器(如
.com、.edu、.org) - 权威域名服务器
最终得到www.example.com对应的 IP 地址,假设为93.22.22.216。
2、补充知识
- DNS 系统是一个联机分布式数据库系统,采用客户端-服务器(C/S)架构。
- 绝大多数解析在本地完成,少部分才在互联网上完成。
- 域名服务器分类(可类比二叉树):
- 根域名服务器
- 顶级域名服务器(
com、edu、org) - 权限域名服务器(
abc.com、aaa.com)
所以,Alice 的计算机首先会在本地缓存中查询域名,或向上级域名服务器请求解析,最终得到 XX 系统的服务器地址:
93.22.22.216。(本地址仅为随机示例,无实际意义。经查:ASN 为 AS15557 Societe Francaise Du Radiotelephone - SFR SA;网络范围 93.22.22.0/23;运营商为 Societe Francaise Du Radiotelephone - SFR SA。)
(三)建立 HTTPS 连接
获取到服务器 IP 后,Alice 的浏览器向 XX 系统服务器发起 HTTPS 协议连接。
由于 HTTPS 底层建立在 TCP 协议之上,因此需要分两步握手:
1、TCP 三次握手
SYN → SYN+ACK → ACK
2、TLS 握手
ClientHello → ServerHello + 证书 → 密钥交换 → Finished 等
3、关系总结
HTTPS = HTTP + TCP + TLS
通过以上步骤,客户端计算机与服务端服务器之间就建立了加密连接,可以进行信息交互和数据传递。
(四)抓包示例
使用自己的电脑访问 XX 网站时,可以抓取到相关请求报文,举例如下:
请求 URL [https://www.bilibili.com/](https://www.bilibili.com/)
请求方法 GET
状态代码 200 OK
远程地址 221.XX.XX.93:443
引用站点策略 strict-origin-when-cross-origin
1、信息解析
HTTPS 连接建立成功,HTTP 请求成功,服务器返回了 200 和页面内容。
(五)一个有意思的发现
上述抓取到的内容显示:某网站域名解析 IP 为 221.XX.XX.93:443。
约 1–2 分钟后,使用同一台电脑、同一网络环境,ping 同样的域名,得到的 IP 却是 218.XX.XX.15。
即:同一个域名,解析出了不同的 IP 地址。
1、原因分析
(1)CDN(Content Delivery Network,内容分发网络)
- 一些高频请求的网站会在全国甚至全球部署大量节点进行内容分发。
- 权威 DNS 服务器会根据客户端的源 IP 和服务商等,返回“最优”节点。
- 因此,
ping和抓包这两种不同方式,在 CDN 看来可能是截然不同的请求。
(2)DNS 配置了多个 IP - 高频请求的网站,在 DNS 中可能配置多个 IP 地址。
以上两种情况,都有可能造成同域名、不同 IP 的现象。
(六)页面渲染
客户端浏览器与服务端服务器建立稳定的 HTTPS 连接之后,即可渲染页面、加载相关服务。
二、操作系统权限是啥?
操作系统权限,是"谁能对什么资源做什么操作"的一套规则。
可以从三个维度理解:
| 维度 | 含义 | 例子 |
|---|---|---|
| 主体(WHO) | 谁在操作 | 用户、用户组、进程 |
| 客体(WHAT) | 操作什么 | 文件、目录、设备、注册表、服务、端口 |
| 操作(HOW) | 做什么 | 读、写、执行、删除、修改权限 |
意义:限制进程越权访问,防止信息泄露等。
(一)Linux 下的权限
1. 三类身份 + 三种权限
Linux 中,每个文件/目录都有 owner / group / others 三类身份,不同身份可以做不同操作:
| 权限 | 字母 | 数字 |
|---|---|---|
| 读 | r | 4 |
| 写 | w | 2 |
| 执行 | x | 1 |
2. 实战:查看文件权限
命令与提示符解析
bash
Alice@bob:~/code $ ls -l dy.xlsx
| 部分 | 含义 |
|---|---|
Alice |
当前登录用户名 |
@bob |
当前主机名(机器叫 bob) |
~ |
当前路径为家目录 |
/code |
完整路径是家目录下的 code 子目录 |
$ |
普通用户提示符(root 用户提示符为 #) |
ls -l dy.xlsx |
以长格式列出 dy.xlsx 的详细信息 |
输出解析
text
-rwxrw-rw- 1 ceshi ceshi 8832 9月 21 12:40 dy.xlsx
权限部分 -rwxrw-rw-(共 10 位,第 1 位为文件类型,其余 9 位分 3 组):
| 位置 | 内容 | 含义 |
|---|---|---|
| 第 1 位 | - |
文件类型:普通文件(d=目录,l=链接) |
| 第 2-4 位 | rwx |
属主权限:读、写、执行 |
| 第 5-7 位 | rw- |
属组权限:读、写、无执行 |
| 第 8-10 位 | rw- |
其他人权限:读、写、无执行 |
数字表示:rwx=7;rw-=6;rw-=6 → 权限为 766
其余字段:
| 字段 | 值 | 含义 |
|---|---|---|
| 属主 | ceshi | 文件拥有者 |
| 属组 | ceshi | 文件所属的组(创建用户时自动创建同名组) |
| 大小 | 8832 字节 | 约 8.6KB(8832 ÷ 1024 = 8.626KB) |
| 修改时间 | 9月21日 12:40 | 最后修改时间 |
| 文件名 | dy.xlsx | —— |
3. 补充例子 1:目录权限
drwxr-xr--
d:这是一个目录- 属主权限:
rwx(7) - 属组权限:
r-x(5) - 其他人权限:
r--(4) - 权限数字:754
目录的 r/w/x 含义:
| 权限 | 对目录的含义 |
|---|---|
| r | 可以列出目录内部文件名(ls) |
| w | 可以在目录下创建、删除、重命名文件 |
| x | 可以进入该目录(cd),访问目录内文件 |
注意:只有 r 没有 x 时,ls 可以看文件名,但无法 cd 进入,也无法访问目录内文件内容。
省流版:drwxr-xr--表示这是一个目录,属主可读可写可进入,同组用户可读可进入但不可写,其他人只能看到文件名但进不去。权限数字为 754。
4. 补充例子 2:符号链接
创建与查看
ln -s /etc/nginx/nginx.conf myconf
ls -l myconf
输出:
lrwxrwxrwx 1 alice alice 20 9月 22 10:00 myconf -> /etc/nginx/nginx.conf
解析
| 部分 | 值 | 含义 |
|---|---|---|
| 第 1 位 | l |
符号链接 |
| 权限 | rwxrwxrwx |
符号链接默认显示,实际不生效 |
| 硬链接数 | 1 | 符号链接本身算一个文件 |
| 属主 | alice | —— |
| 属组 | alice | —— |
| 大小 | 20 | 目标路径字符串的长度(/etc/nginx/nginx.conf 共 20 字符) |
| 时间 | 9月22日 10:00 | —— |
| 名称 | myconf -> /etc/nginx/nginx.conf |
链接名指向的目标 |
备注
Linux 大多数情况下,ln -s 创建符号链接时,系统默认把权限位设成 rwxrwxrwx。
但部分文件系统上(如 FAT/NTFS 挂载等),权限位可能显示为其他值。比如 macOS 中可能出现:
lrwxr-xr-x ... bar -> /tmp/foo
符号链接是啥?
符号链接(Symbolic Link,简称 symlink),可以理解成 Windows 里的快捷方式。它是一个特殊文件,内容只是指向另一个文件或目录的路径。
5. 修改权限
chmod 754 file.txt # 数字方式
chmod u+x file.txt # 符号方式:给属主加执行
chown alice:dev file.txt # 改属主和属组
chgrp dev file.txt # 只改属组
命令解析
| 命令 | 全称 | 作用 |
|---|---|---|
chmod |
change mode | 改变模式/权限 |
chown |
change owner | 改属主和属组 |
chgrp |
change group | 只改属组 |
chmod 754 file.txt:属主 7;属组 5;其他 4。
chmod u+x file.txt:给属主增加执行权限。
u=user(属主);g=group(属组);o=others(其他);a=all(所有人)+=加权限;-=减权限;==直接设定权限x=执行;r=读;w=写
chown alice:dev file.txt:修改属主和属组。
chgrp dev file.txt:只把文件的属组修改为 dev。
常见问题
Q:为什么可以修改权限?
A:Linux 中,每个文件在文件系统里都有 inode(索引节点),里面包含:文件类型、大小、时间戳、属主 UID、属组 GID、权限位 mode。而 chmod/chown/chgrp 等指令就是修改 inode 里面的这些字段。
Q:如何防止非授权修改?
A:内核进行检查:
- 改权限
chmod:只有文件属主或 root 才可以修改 - 改属主
chown:只有 root 可以修改 - 改属组
chgrp:属主可以把组改为自己所属的组,root 可以改为任意组
Q:为什么系统允许改?
A:Unix 就是这么设计的——一切皆文件。
额外注意
对于目录而言:
r:可以列出目录下内容(ls)w:可以在目录里面创建、删除文件x:可以进入目录(cd)、访问文件
6. 权限掩码 umask
umask(user file-creation mode mask) 用来决定新建文件/目录时,默认权限里要"扣掉"哪些位。
即:新建文件/目录时,系统先用一个基准权限,再减去 umask 里为 1 的位,得到最终权限。
umask # 查看当前掩码,常见 022
umask 027 # 设置掩码为 027
基准权限(固定)
| 类型 | 基准权限 | 数字 |
|---|---|---|
| 普通文件 | rw-rw-rw- |
666 |
| 目录 | rwxrwxrwx |
777 |
最终权限 = 基准权限去掉 umask 中为 1 的位(按位与非)。
例子
umask = 022
| 类型 | 计算 | 结果 |
|---|---|---|
| 新建文件 | 666 去掉 022 | 644 → rw-r--r-- |
| 新建目录 | 777 去掉 022 | 755 → rwxr-xr-x |
umask = 027
| 类型 | 计算 | 结果 |
|---|---|---|
| 新建文件 | 666 去掉 027 | 640 → rw-r----- |
| 新建目录 | 777 去掉 027 | 750 → rwxr-x--- |
常见问题
Q:为什么会有 umask 的存在?
A:用于权限管理。想要严格,调大 umask 即可。
022:常见默认,同组和其他人可以读027:其他人无权限,常用于服务器077:只有自己可以访问
额外注意:umask 只在当前 shell 会话生效,关闭则消失。要持久化,需写入配置文件:
| 范围 | 配置文件 |
|---|---|
| 当前用户 | ~/.bashrc 或 ~/.profile |
| 全局 | /etc/profile 或 /etc/bashrc |
例如在 ~/.bashrc 中增加一行:`umask 027
理解
chmod:精确给某个文件设定权限umask:对新建文件/目录默认设定权限
补充
Linux 中,root 为超级用户,绕过所有权限检查;sudo 是给予普通用户临时 root 权限。
(二)Windows 下的权限
Windows 的权限控制与 Unix 差别比较明显,因为 Windows 的核心是 ACL(访问控制列表) 和 安全主体。
1. 安全主体
包含三类:
- 用户账户:本地用户、域用户
- 组:Administrators、Users、Guests 等
- 计算机账户:域环境中的机器账户
如何理解上述几类?
用户账户 = 一个可以登录、可以被授权的人或服务。
| 类型 | 说明 |
|---|---|
| 本地用户 | Administrator、Guest、Alice;只在本机有效,只能登录本机;登录时需验证口令 |
| 域用户 | 整个域内有效;在域内任意计算机上登录域用户账号,即可访问资源 |
| 内置特殊账户 | Administrator 是最高权限本地管理员;Guest 默认禁用,只给无账户的访客使用 |
组:组是权限的容器。把权限授给组,再把用户加到组,则用户就继承了当前组的权限,不用给每个人单独配置权限。
| 类型 | 说明 |
|---|---|
| 本地组 | 只限定于当前计算机 |
| 域组 | 整个域内都有效 |
计算机账户:AD 域内,每台加入域的计算机本身也是一个安全主体,AD 里面对应一个计算机账户。
2. 权限类型
| 权限 | 说明 |
|---|---|
| 完全控制 | 读、写、执行、删除、改权限、改属主 |
| 修改 | 读、写、执行、删除 |
| 读取和执行 | 读取 + 执行 |
| 读取 | 只读 |
| 写入 | 只写 |
3. 权限检查链
用户登录
→ 域控验证用户账户
→ 机器用计算机账户与域建立信任
→ 生成访问令牌(含用户 SID + 所有组 SID)
→ 访问资源时,拿令牌 SID 比对资源 ACL
→ 决定允许/拒绝
4. 常见误区
- "Administrators 组 = Administrator 账户"
不是。Administrator 是账户,Administrators 是组;前者默认属于后者。 - "本地管理员能管域"
不能。本地 Administrators 只对本机有最高权限,对域没权限。 - "计算机账户不重要"
很重要。删掉或损坏计算机账户,机器就失去域信任,需要重新加域。 - "组只是方便管理"
不只是。组是安全主体,有自己的 SID,是权限授予的直接对象。
浙公网安备 33010602011771号