Linux 基础与环境初始化:常用命令、用户权限、网络与防火墙

说实话,很多测试同学一听到 Linux 就头疼。觉得那是运维的事。

但你想过没有——你的测试环境跑在什么上面?十有八九是 Linux。你不会 Linux,环境出问题就只能干等着。我见过太多测试因为不会看日志、不会重启服务,卡在一个小问题上半天。

这一章,我把最常用的东西拎出来。不讲废话,全是干活用的。

3.1 SSH 与 SCP:远程连接与文件传输

SSH 是你操作远程服务器的“门”。没有它,你连机器都摸不到。

3.1.1 SSH 基本用法

ssh 用户名@服务器IP
# 例如
ssh root@192.168.1.100

第一次连会提示确认指纹,输入 yes 就行。然后输密码。

我的习惯:从来不用密码登录。太慢了,而且不安全。我会配 SSH 密钥对,一次配好,以后直接 ssh user@ip 就进去了。

3.1.2 配置密钥登录

# 本地生成密钥对
ssh-keygen -t rsa -b 4096

# 把公钥传到服务器
ssh-copy-id user@服务器IP

嗯,这里要注意:ssh-copy-id 第一次还是要输密码。但之后就不用再输了。

3.1.3 SCP 传文件

测试环境部署,经常要传包、传脚本。SCP 是最直接的方式。

# 本地文件传到服务器
scp ./test_app.tar.gz root@192.168.1.100:/opt/

# 从服务器下载文件
scp root@192.168.1.100:/var/log/app.log ./
我曾经踩过的坑:传大文件时网络断了,SCP 不会自动续传。后来我改用 rsync,支持断点续传,而且只传变化的部分。部署大包时强烈推荐。

3.2 systemctl:服务管理三板斧

测试环境里,你经常要启停服务。比如重启 Nginx、查看 MySQL 状态。systemctl 就是干这个的。

操作 命令 说明
启动服务 systemctl start nginx 立即启动
停止服务 systemctl stop nginx 立即停止
重启服务 systemctl restart nginx 先停再启
查看状态 systemctl status nginx 看运行状态和最近日志
设置开机自启 systemctl enable nginx 服务器重启后自动启动
取消开机自启 systemctl disable nginx 取消自动启动
核心思路:测试环境里,我习惯把服务写成 systemd 单元文件。这样统一用 systemctl 管理,比手动写启动脚本靠谱得多。

3.3 用户与权限管理

测试环境经常多人共用。你不能让所有人都用 root。太危险了。

3.3.1 用户管理常用命令

# 创建用户
useradd -m tester

# 设置密码
passwd tester

# 切换到该用户
su - tester

# 删除用户
userdel -r tester

3.3.2 文件权限三剑客

Linux 权限分三组:所有者、所属组、其他人。每个组有 rwx 三种权限。

# 查看权限
ls -l

# 修改权限(数字法)
chmod 755 script.sh

# 修改所有者
chown tester:tester script.sh
我的建议:测试环境里,给每个项目建一个专用用户。比如 project-a、project-b。这样日志、文件不会互相干扰。出了问题也容易定位是谁干的。

3.4 网络配置

测试环境网络搞不定,服务之间连不上,你根本没法测。

3.4.1 查看网络状态

# 查看 IP 地址
ip addr

# 查看路由
ip route

# 测试连通性
ping -c 4 8.8.8.8

# 查看端口监听
ss -tlnp

3.4.2 配置静态 IP(以 CentOS/RHEL 为例)

# 编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0

# 关键参数
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

# 重启网络
systemctl restart network
我曾经犯过的错:配完静态 IP 忘了配 DNS,结果域名解析不了。服务能 ping 通 IP,但 curl 请求一直超时。排查了半天才发现是 DNS 没配。所以配完网络一定要测两样:ping IP 和 ping 域名。

3.5 防火墙设置

防火墙是测试环境里最容易忽略、也最容易坑人的东西。服务明明启动了,就是连不上——十有八九是防火墙没放行。

3.5.1 firewalld 常用操作

# 查看防火墙状态
systemctl status firewalld

# 查看当前规则
firewall-cmd --list-all

# 开放端口(立即生效)
firewall-cmd --add-port=8080/tcp

# 永久开放端口
firewall-cmd --add-port=8080/tcp --permanent

# 重新加载规则
firewall-cmd --reload

3.5.2 常用场景

场景 命令
开放 HTTP 端口 firewall-cmd --add-service=http --permanent
开放 HTTPS 端口 firewall-cmd --add-service=https --permanent
开放自定义端口 firewall-cmd --add-port=3000/tcp --permanent
允许特定 IP 访问 firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' --permanent
我的原则:测试环境防火墙不要全关。只开放需要的端口。比如数据库只允许应用服务器访问,不允许外网直连。这样即使有人扫端口,也扫不到你的数据库。

3.6 本章知识体系

下面这张图,把这一章的核心内容串起来了。你可以把它当作操作手册的目录。

Linux 基础与环境初始化 · 知识体系 Linux 环境初始化 远程连接与传输 SSH 密钥登录 / SCP 传输 服务管理 systemctl 启停 / 状态查看 用户与权限 useradd / chmod / chown 网络配置 ip addr / 静态 IP 配置 防火墙设置 firewall-cmd 端口放行 💡 测试环境初始化 = 连接 + 服务 + 权限 + 网络 + 防火墙

3.7 实战:初始化一台测试服务器

把上面的知识点串起来,走一遍完整的流程。

  1. SSH 登录:用密钥登录服务器
  2. 创建用户:useradd -m tester,设置密码
  3. 配置权限:把部署目录给 tester 用户
  4. 开放端口:放行应用需要的端口(比如 8080)
  5. 启动服务:用 systemctl 启动 Nginx 或 Tomcat
  6. 验证网络:从本地 curl 测试一下
我的经验:每次初始化完,我都会写一个简单的验证脚本。跑一遍就知道环境是不是正常的。省得后面排查半天,结果发现是初始化漏了一步。

Linux 这东西,说白了就是多用。你亲手配几次环境,这些命令就刻在脑子里了。别怕敲错,测试环境嘛,大不了重装。