写在前面:合法学习边界
Linux 是安全学习、渗透测试和应急响应中最常见的操作系统。本文内容用于理解用户权限、文件系统和服务运行身份。请不要在没有授权的情况下修改他人系统、尝试提权、读取他人隐私数据、绕过访问控制或使用漏洞工具。所有权限测试、配置审计和应急响应动作都应在自己设备、本地靶场、公司授权测试环境或已获书面授权的系统上完成。
一、为什么安全学习必须懂 Linux
很多 Web 服务、数据库、反向代理、日志系统和云主机都运行在 Linux 上。安全人员需要知道:服务以哪个用户运行、配置文件谁能修改、上传目录是否可写、日志记录在哪里、关键系统文件是否被替换、某个进程是否消耗异常资源。
对零基础学习者来说,Linux 基础可以从四个问题开始:
| |
这些问题贯穿 Web 安全、提权排查、日志分析、服务器加固和应急响应。
二、用户与组:操作系统中的身份
Linux 中几乎每个动作都需要身份。用户代表“谁在操作”,组代表“用户之间的共同权限集合”。一个用户可以属于多个组,组权限可以让同一批用户访问同一批资源。
1. 查看当前用户
| |
whoami 输出当前用户名;id 输出用户 ID、组 ID 和所属组;groups 输出用户属于哪些组。
常见输出示例:
| |
这说明当前用户是 ubuntu,属于 sudo 组,也能看到 www-data 这个组。
2. 查看用户列表
| |
/etc/passwd 中每一行通常包含:用户名、密码占位符、UID、GID、用户描述、家目录和登录 shell。重点看 UID:
| |
安全排查时,可以关注是否新增 UID 为 0 的账户,或者是否存在异常登录 shell。
3. 创建普通用户和组
以下命令通常由管理员在授权环境中执行:
| |
说明:
| |
实际生产环境中,还需要考虑密码复杂度、SSH 密钥、登录限制、账户过期和审计日志。
三、权限:rwx 和数字权限
Linux 文件权限主要分为三类:读、写、执行。对应字母是 r、w、x。
| 权限 | 含义 |
|---|---|
| r read | 读取文件内容或列出目录内容 |
| w write | 修改文件内容或在目录中创建、删除、重命名文件 |
| x execute | 执行文件或进入目录 |
常见权限示例:
| |
数字权限表示方式:
| |
所以:
| |
常用命令:
| |
安全提示:私钥、口令文件、配置文件不应该开放给所有人读写。Web 目录也要避免被非必要用户随意写入。
四、目录权限的特殊含义
目录权限容易被新手误解。文件需要 x 才能执行,但目录需要 x 才能进入,需要 r 才能列出内容。
例子:
| |
意味着其他用户可以进入并读取目录内容;如果目录没有 x,即使用户知道文件路径,也可能无法进入该目录。
如果目录有写和执行权限:
| |
通常只有所有者可以在目录中创建、删除、重命名文件。生产 Web 服务器通常不应让上传目录同时可写、可执行、可被外部用户修改。
五、文件系统常见路径
了解常见目录能帮助理解服务和日志位置。
| |
常用查看命令:
| |
安全排查时,可以重点看 Web 根目录、配置文件、日志目录和临时目录。但不要盲目读取包含密钥、令牌或个人信息的文件,必须确认授权范围。
六、常用文件查看和搜索命令
1. 查看文件内容
| |
tail -f 会持续显示新写入日志。应急响应中常用它观察实时变化。
2. 搜索关键字
| |
-n 显示行号,-R 递归搜索目录。搜索敏感词时不要随意把结果复制到公共文档中,可能会泄露凭据、路径或用户信息。
3. 查找文件
| |
find 适合按文件名、类型、时间、权限和所有者查找文件。学习时应先控制搜索范围,避免在生产系统上执行耗时过大的全盘搜索。
4. 查看文件属性
| |
stat 会显示文件大小、权限、所有者、组、创建和修改时间。应急响应中,文件修改时间常常是判断是否被篡改的重要线索。
七、进程与运行身份
服务以哪个用户运行,是 Linux 安全中的重要问题。Web 服务通常不应直接以 root 身份长时间运行,而应由低权限用户处理请求,例如 www-data。
查看进程:
| |
查看端口和进程对应关系:
| |
查看某个进程详细信息:
| |
应急响应中,如果发现未知进程,应记录 PID、用户、启动参数、可执行文件路径、网络连接、文件修改时间和父进程关系。不要先删除现场证据,应优先保存、复制和备份相关数据。
八、用户权限与安全设计
1. 最小权限原则
最小权限原则意味着:一个用户、进程或服务只拥有完成任务所需的最低权限。例如:
| |
2. sudo 的正确使用
普通用户需要临时执行管理命令时,可以加入 sudoers 并按需使用 sudo:
| |
安全配置要避免不必要的:
| |
3. 敏感文件权限
私钥和配置应限制访问:
| |
数据库密码、API Token、JWT Secret 等不应放在公开可读的配置文件或 Git 仓库中。
九、文件系统层面的安全排查思路
当怀疑服务器被入侵或配置被篡改时,Linux 文件系统可以提供很多线索。
1. 查看最近修改的文件
| |
注意:这个命令只适合在授权环境中使用,且不要假设结果一定代表攻击。系统更新、正常发布、定时任务和日志轮转也会产生新文件。
2. 检查 Web 目录异常文件
| |
如果 Web 根目录突然出现非业务人员创建、无法解释来源、权限异常的可执行脚本,需要保留证据并进入应急响应流程。
3. 检查 SUID 和 SGID 文件
| |
SUID 文件执行时会以文件所有者身份运行,是合法提权排查和攻击者横向移动中都可能关注的点。检查时应确认文件是否为系统正常文件、版本是否可信、权限是否符合预期。
4. 检查用户增加和异常账户
| |
新增 UID=0 账户、异常 shell、异常登录记录,都是需要结合上下文分析的高优先级线索。
十、和 Web 安全的联系
理解 Linux 权限后,很多 Web 安全问题更容易解释:
| |
所以 Web 安全不能只停留在浏览器和参数层,最终还要理解服务器如何接收请求、以什么身份执行代码、把数据写到哪里、把日志记录到哪里。
十一、小结
Linux 基础的核心不是背命令,而是理解身份、权限、资源和证据。安全人员需要知道当前是谁、以什么权限访问了什么、文件归谁所有、进程以谁的身份运行、日志在哪里。
下一阶段可以进入 Web 安全主题,例如 SQL 注入和 XSS。但在学习漏洞原理前,先理解 Linux 用户和权限,会让你更容易看懂真实环境中的影响边界:一个漏洞到底能影响网页展示,还是能读取敏感数据,甚至影响服务器安全。