一命速通 Linux 基础 的文章封面
返回渗透 Wiki
起点与方法 渗透 Wiki

一命速通 Linux 基础

面向渗透学习的 Linux 入门路线:目录、命令、权限、进程、网络、文本处理和排错方法。

Linux 基础不是为了背命令,而是为了在一台陌生机器上快速判断:我是谁,我在哪,我能读什么,我能执行什么,网络通不通,痕迹在哪里,下一步怎么验证。

如果你在学渗透测试,Linux 是绕不开的底座。Web 服务、CTF 靶机、VPS、Docker、Kali、日志、权限提升、内网横向,最后都会落回到一个命令行窗口里。

这篇文章不追求百科全书式覆盖,而是给你一条够实战、够复盘、够继续深入的路线。

学习目标

先把目标压小。

学完 Linux 基础,你应该能做到:

  • 看懂目录结构,知道配置、日志、用户文件和服务文件大概在哪。
  • 熟练移动、查看、复制、搜索文件。
  • 理解用户、用户组、权限位、特殊权限和 sudo 的关系。
  • 会查看进程、端口、网络连接和服务状态。
  • 会用管道把多个小工具串起来处理文本。
  • 能在靶机里做基础枚举,找到下一步突破口。
  • 遇到报错时知道怎么查文档、看日志、做最小化验证。

渗透学习里的 Linux,不是“会用桌面系统”,而是“能在信息不完整的服务器里活下来”。

先建立地图

Linux 的目录不是随便摆的。先记住这些高频位置:

路径作用
/根目录,所有文件的起点
/home普通用户家目录
/rootroot 用户家目录
/etc系统和服务配置
/var可变数据,常见日志、缓存、Web 数据
/var/log日志目录
/tmp临时目录,常用于测试写入
/opt第三方软件
/usr/bin常用程序
/bin基础命令
/sbin系统管理命令
/proc内核运行时信息,进程和系统状态
/dev设备文件

拿到 shell 后,先问三个问题:

whoami
pwd
ls -la

这三个命令分别回答:

  • 当前用户是谁。
  • 当前目录在哪里。
  • 当前目录里有什么,以及权限如何。

不要小看这一步。很多时候,提权线索就藏在当前目录、隐藏文件、错误权限或某个奇怪脚本里。

文件和目录操作

最基础的一组命令:

pwd
ls -la
cd /path/to/dir
mkdir notes
touch note.txt
cp a.txt b.txt
mv old.txt new.txt
rm file.txt
rm -r dir

建议你养成两个习惯:

  • ls -la,不要只用 ls。隐藏文件经常有价值。
  • 删除前先确认路径。rm -rf 不是勇敢,是危险。

查看文件常用:

cat file.txt
less file.txt
head -n 20 file.txt
tail -n 50 file.txt
tail -f /var/log/nginx/access.log

less 适合看长文件,tail -f 适合盯日志变化。比如你在测试一个 Web 请求,就可以一边发请求,一边看访问日志。

搜索是核心能力

Linux 里真正拉开差距的不是记住多少命令,而是搜索能力。

找文件:

find / -name "flag*" 2>/dev/null
find / -type f -name "*.conf" 2>/dev/null
find /var/www -type f

找内容:

grep -R "password" /etc 2>/dev/null
grep -R "DB_PASSWORD" /var/www 2>/dev/null
grep -n "root" /etc/passwd

常见技巧:

find / -perm -4000 -type f 2>/dev/null
find / -writable -type d 2>/dev/null
find / -user root -perm -u=s -type f 2>/dev/null

这些命令分别在找:

  • SUID 文件。
  • 当前用户可写目录。
  • root 拥有且带 SUID 的可执行文件。

这是靶机和提权枚举里非常高频的动作。

权限模型

看一行权限:

-rwxr-xr-- 1 root www-data 1234 Jun 10 10:00 app.sh

拆开看:

  • 第一位:文件类型,- 是普通文件,d 是目录,l 是链接。
  • 后面九位:拥有者、用户组、其他人的权限。
  • r:读。
  • w:写。
  • x:执行。

数字权限也要熟:

数字权限
4read
2write
1execute
7rwx
6rw-
5r-x

比如:

chmod 755 script.sh
chmod 600 id_rsa
chown root:root file

渗透里常见的权限问题:

  • 私钥权限太开放,SSH 拒绝使用。
  • Web 目录可写,可以落 WebShell。
  • 脚本被 root 定时执行,但普通用户可写。
  • SUID 程序调用了可控环境变量或相对路径命令。

权限不是抽象知识,它直接决定你能不能读、能不能写、能不能执行、能不能提权。

用户和身份

查看当前身份:

id
whoami
groups

查看系统用户:

cat /etc/passwd
cat /etc/group

/etc/passwd 不是密码文件,它记录用户信息。真正的密码哈希一般在 /etc/shadow,普通用户通常不能读。

重点关注:

  • 当前用户属于哪些组。
  • 是否在 sudodockerlxdadm 等敏感组里。
  • 是否有异常用户。
  • 用户家目录里有没有 SSH key、历史命令、配置文件。

查看 sudo 权限:

sudo -l

如果某个命令可以免密 sudo,第一反应是查它能不能逃逸:

man command
command --help

也可以查 GTFOBins。不要死记 payload,要理解这个命令为什么能读文件、写文件、执行 shell。

进程、服务和端口

查看进程:

ps aux
ps aux | grep nginx
top

查看端口:

ss -tulpen
ss -tunap

查看服务:

systemctl status nginx
systemctl list-units --type=service --state=running

如果没有 systemd,可能要看:

service --status-all

渗透里要关心:

  • 哪些服务在跑。
  • 哪些端口只监听 127.0.0.1
  • 进程由哪个用户启动。
  • 命令行参数里有没有密码、token、配置路径。

比如:

ps aux | grep -i password
ss -tulpen | grep 127.0.0.1

本地端口常常意味着:外部扫不到,但拿到 shell 后可以内网访问或端口转发。

网络基础命令

查看 IP:

ip addr
ip route

测试连通:

ping -c 4 8.8.8.8
curl -I http://127.0.0.1

DNS:

cat /etc/resolv.conf
nslookup example.com
dig example.com

下载文件:

wget http://example.com/file
curl -O http://example.com/file

监听和传文件:

python3 -m http.server 8000
nc -lvnp 4444

这里要特别注意边界:只在你有授权的实验环境里使用这些能力。工具本身中性,但行为要有边界。

管道和文本处理

Linux 的美感在于小工具组合。

cat access.log | grep "POST" | sort | uniq -c | sort -nr

常见组件:

grep
awk
sed
sort
uniq
cut
tr
wc
xargs

几个实用例子:

# 统计访问最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

# 提取冒号分隔的第一列
cut -d ':' -f 1 /etc/passwd

# 批量对结果执行命令
find . -name "*.txt" | xargs grep "password"

# 看文件行数
wc -l file.txt

不要急着学复杂一行流。先能读懂,再能改,再能自己组合。

压缩、解压和文件类型

基础命令:

file target
strings target
tar -xf archive.tar
tar -czf archive.tar.gz dir
unzip file.zip
gzip -d file.gz

file 很有用。拿到未知文件时先看类型,不要靠后缀猜。

file suspicious
strings suspicious | head

CTF 和取证里经常会遇到伪装后缀、嵌套压缩、二进制里藏字符串。先判断,再处理。

日志和排错

常见日志:

/var/log/auth.log
/var/log/syslog
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/apache2/access.log
/var/log/apache2/error.log

常用方式:

tail -f /var/log/auth.log
journalctl -xe
journalctl -u nginx --since "1 hour ago"

排错思路:

  1. 先复现问题。
  2. 看命令报错。
  3. 看服务状态。
  4. 看日志。
  5. 缩小范围,只改一个变量。

比如 Web 服务 502:

systemctl status nginx
tail -n 80 /var/log/nginx/error.log
ss -tulpen

不要靠感觉猜,日志是系统写给你的复盘。

环境变量和 Shell

查看环境变量:

env
echo $PATH
echo $SHELL

PATH 很重要,它决定你输入命令时系统从哪里找可执行文件。

which python3
which bash

一些提权场景会利用 PATH 劫持,但你先要理解正常情况下 PATH 如何工作。

脚本第一行也值得注意:

#!/bin/bash
#!/usr/bin/env python3

它决定脚本用什么解释器执行。

渗透中的基础枚举清单

拿到 Linux shell 后,可以按这个顺序走一遍:

whoami
id
hostname
uname -a
pwd
ls -la
ip addr
ip route
ss -tulpen
ps aux
sudo -l
find / -perm -4000 -type f 2>/dev/null
find / -writable -type d 2>/dev/null
ls -la /home
ls -la /var/www
cat /etc/passwd

这不是万能脚本,只是起手式。你要学会根据结果继续追问:

  • 这个用户为什么有这个组?
  • 这个服务为什么用 root 跑?
  • 这个目录为什么可写?
  • 这个端口为什么只在本地开放?
  • 这个脚本为什么由 root 定时执行?

渗透不是跑命令清单,而是根据回显不断缩小不确定性。

练习路线

建议这样练:

  1. 先用本机或虚拟机熟悉目录、文件、权限、用户和进程。
  2. 做 OverTheWire Bandit,练命令行和搜索。
  3. 用 Docker 跑几个 Linux 服务,观察配置、日志和端口。
  4. 做简单靶机时,每一步都写下命令、回显、判断依据。
  5. 复盘时把命令归类,不要只贴结果。

推荐资源:

我的记忆法

不要问“这个命令怎么背”,改问“这个命令解决什么问题”。

可以按任务记:

  • 我想知道身份:whoamiid
  • 我想知道位置:pwdls -la
  • 我想找文件:find
  • 我想找内容:grep
  • 我想看网络:ipss
  • 我想看进程:ps
  • 我想看权限:ls -lastat
  • 我想看日志:tailjournalctl
  • 我想组合结果:管道 |

命令会忘,但问题不会忘。只要你知道自己要问系统什么,命令可以随时查。

结尾

Linux 基础的核心不是炫技,而是稳定。

你要能在一台陌生机器上冷静地看目录、看权限、看进程、看网络、看日志,然后把零散线索连成判断。渗透学习的很多高级技巧,最终都要落到这些朴素动作上。

先把基础练成肌肉记忆,后面的漏洞利用、权限提升、内网渗透和应急排查才会有地基。